2013-03-01 3 views
0

새 프로젝트의 경우 파이썬에서 다중 구성 요소 백엔드를 설계해야합니다. 처음에는 비즈니스 규칙 서버와 브라우저에서 들어오는 요청을 처리 할 프론트 엔드의 두 가지 기본 구성 요소가 있습니다.두 서버가 어떻게 통신해야합니까?

|--------------------| 
    Business API 
|--------------------| 
     || 
     || 
     || 
|--------------------| 
    Front server 
|--------------------| 

이 시스템에 더 많은 기능이 추가되면서 Business API에 연결하는 서버/구성 요소를 추가해야 할 수도 있습니다.

지금, (많은 연구를 거친 후) 직렬화/직렬화를 위해 MessagePack에 정착했습니다.

내가 결정할 수없는 것은 통신이 이루어져야하는 전송 (유선 프로토콜)이어야한다는 것입니다. -하지만 어떻게해야

  • 원시 TCP/IP 소켓

내가 HTTP로 시작하는 좋은 선택이 될 것입니다 생각

  • zeromq 소켓 (zerorpc)
  • 일반 HTTP : 몇 가지 옵션이있다 http를 통해 페이로드를 보냅니 까? base64 인 코드를 수행하여? 이 경우 나는이처럼해야 할 것 :

    on one end 
    [actual message] -> [msgpack encode] -> [base64 encode] 
    
    on the other end 
    [base64 decode] -> [msgpack decode] -> [actual message] 
    

    은 서로 다른 구성 요소 사이에 계속 수다를 많이 거기 시스템이 만족할 만합니까? 더 나은 해결책이 있습니까? http를 통해 더 좋은 방법이 있습니까?

    참고 : 바이너리 데이터를 전송해야하므로 일반 JSON을 사용할 수 없으므로 직렬화 라이브러리가 msgpack이됩니다.

  • +0

    http는 모든 유형의 데이터를 전송할 수 있습니다. base64로 인코딩 할 필요가 없습니다. – Hazzit

    답변

    1

    정말 시스템의 세부 사항에 달려 있습니다.

    구성 요소가 인 경우 모두이고 파이썬 (또는 Node.js)으로되어 있고 네트워크 내에서 모든 통신이 이루어지면 ZeroRPC로 이동할 수 있습니다.

    방화벽을 통과해야하거나 이국적인 언어를 더 많이 사용하는 경우 HTTP로 연결할 수 있습니다. Hazzit은 HTTP HTTP 코멘트에서 HTTP 문서의 본문에 바이너리 데이터를 전송할 수 있다고 말했습니다. Multipart Post 인코딩을 사용하십시오.