对于一个新项目,我需要用 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。