0

对于一个新项目,我需要用 Python 设计一个多组件后端。最初,它将有两个基本组件——一个业务规则服务器和一个为来自浏览器的请求提供服务的前端。

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

随着该系统获得更多功能,我可能需要添加更多连接到业务 API 的服务器/组件。

现在,我已经(经过大量研究)选择 MessagePack 用于序列化/反序列化目的。

我无法决定的应该是什么应该是传输(有线协议),应该通过它进行通信。有一些选择:

  • 原始 TCP/IP 套接字
  • zeromq 套接字 ( zerorpc )
  • 纯HTTP

我认为 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。

4

1 回答 1

1

这实际上取决于您的系统的详细信息。

如果您的组件都Python(或 Node.js)中,并且所有通信都发生在您的网络中,您可以使用 ZeroRPC。

如果您需要穿越防火墙或者如果您使用更奇特的语言,您可以使用 HTTP,正如 Hazzit 在评论中所说的 HTTP 完全可以在 HTTP 文档的正文中传输二进制数据,或者您可以使用 Multipart Post 编码.

于 2013-03-01T18:10:14.683 回答