我使用的是ZeroMQ PUSH/PULL
技术。
PUSH
套接字在没有PULL
套接字时阻止。
有什么不同的情况会丢失数据包,如果可能的话,我们如何处理它们?
答案 0 :(得分:0)
PUSH
- 侧访问可能会阻止,但不必这样做:分布式系统'设计应该预测这种状态,而是使用 .send( payload, zmq.NOBLOCK )
命令的非阻塞模式。
通过 .setsockopt( ... )
ZeroMQ可扩展形式通信模式设计中没有任何数据包丢失。 ZeroMQ可以提供完整的消息 - 有效负载,也可以不提供任何内容。除此之外没有其他选择,因此数据包丢失与ZeroMQ想法的组合不匹配。引擎盖下实施的原则。 .Context()
实例能够保存大部分低级别传输&信号化情况仍然重新连接丢失的抽象套接字传输&提供数据或什么都不交付,零妥协就此。
由于消息传递领域具有丰富的功能和新的设计范例,因此最好的下一步是了解有关该技术以及设计此类分布式系统的更多信息。可以在这里和那里链接pdf-book with many design issues and approaches to solutions from Pieter HINTJENS himself. Worth one's time to read it.
享受与ZeroMQ相关的其他帖子