繁体   English   中英

如何进行简单,可靠的网络消息传递?

[英]How to do simple, reliable network messaging?

我现在正在使用套接字在各个进程之间进行通信。 一切都在同一台机器上运行,因此没有数据包丢失,而且我也没有收到读取超时等信息。消息通常是小的数据块(JSON,有时是二进制)。现在,我想进行跨机器通信。 客户端/服务器连接通常如下所示:客户端告诉服务器开始一些处理(传递任务描述),服务器完成工作并回传进度,客户端可以选择在两者之间发送终止消息。 完成后,在客户端完全断开连接的同时,服务器仍在侦听(即,会话完成,开始新任务将启动新会话)。

我应该如何实现沟通? 我可以轻松地继续通过网络使用套接字,但是我的理解是,我现在需要添加许多错误处理,以识别消息何时没有通过并将其以某种方式传达给服务器。 我想要的只是send(message, target)并放心完整的消息会被传输; 当另一侧死亡时,再加上一些通知。 我已经看到有一些像zero-mq这样的库声称可以做到这一点,但还有更多,我不确定是否真的需要这样的消息传递库。 是否有一些易于使用的库可以进行一些基本的交流?

我使用的是C ++和Python,BSD样式许可绝对是库的首选。 库也应该相当稳定,因为通信部分并没有真正重要的意义,我希望能够坚持使用一种解决方案。

TCP保证所有小包都传递到目标[如果没有,它将为您重新发送]。 因此,如果您使用它-与单机相比,可能会花费更多时间,但是msg传输的正确性仍然存在。

您应该签出ZeroMQ 与纯BSD插槽相比,它具有更简单的界面,更轻便的功能以及出色的文档资料。

签出networkComms.net以获取开源网络通信库。

听起来您需要一个消息队列。

解决方案很多,其中只有一种是redis: http: //redis.io

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM