ZeroMQ:从多个线程将有序消息推送到服务器的 inproc 客户端的推荐模式?
ZeroMQ: Recommended pattern for inproc clients from multiple threads pushing ordered messages to a server?
我的要求
- 来自同一进程中不同线程的客户端
- 服务器在同一进程中的单独线程中
- 客户端向服务器生成消息
- 服务器通过在源端按世界时钟按发送顺序打印消息来使用消息,对线程和任何调度透明。
等问题的答案
- zmq: can multiple threads PUSH in a simple PUSH-PULL pattern
- Pulling requests from multiple clients with ZMQ
给出不同的意见。那么我应该简单地要求客户端推送到在另一个线程中创建的单个 inproc PULL 服务器,还是使用路由器经销商模式?
在第二个问题的评论之一中,我得到 STREAMER
pattern 似乎存在于 pyzmq 中,但我不确定它是否是正确的解决方案或者它是否适用于 C API 有吗?
Q : Recommended pattern for inproc clients from multiple threads pushing ordered messages to a server?
对此类公式化问题的任何回答都依赖于缺失的信息:偏好集是什么,它导致区分上述操作的不充分、充分、更好和最佳解决方案。
您是否需要从服务器到客户端的确认反馈,因为消息传递是零保证的?
您需要处理一组静态或动态客户端吗?
与 RAM 占用空间相比,您更喜欢性能吗?
如果没有这些 "criteria" 中的任何一个表达,一个严肃的人永远不会 "recommend",因为任何这样的陈述都是公正的意见。
PUSH/PULL
可能足以满足未确认的交付(一个乐观的盲目用例,如果眼不见心不烦的设计理念在生产)
PAIR/PAIR
可能足以满足快速 .poll( ZeroWait, ZMQ_POLLIN )
服务器端扫描,服务器端 POSACK 响应可以发送到相应的客户端 -线程,其消息已交付并接受以供服务器端处理(用户定义的消息确认握手协议、处理 POSACK/NACK 超时/乱序升级等,超出了此 post 的范围)
PUB/SUB
或 XPUB/XSUB
可能足以对基于主题的信令进行一些更棘手的管理,双向在 X 版本中,如果这证明主题过滤开销的附加成本是合理的(取决于 ZeroMQ 版本,是分布在所有客户端线程上,还是集中在服务器线程端)
决定权在你。
我的要求
- 来自同一进程中不同线程的客户端
- 服务器在同一进程中的单独线程中
- 客户端向服务器生成消息
- 服务器通过在源端按世界时钟按发送顺序打印消息来使用消息,对线程和任何调度透明。
- zmq: can multiple threads PUSH in a simple PUSH-PULL pattern
- Pulling requests from multiple clients with ZMQ
给出不同的意见。那么我应该简单地要求客户端推送到在另一个线程中创建的单个 inproc PULL 服务器,还是使用路由器经销商模式?
在第二个问题的评论之一中,我得到 STREAMER
pattern 似乎存在于 pyzmq 中,但我不确定它是否是正确的解决方案或者它是否适用于 C API 有吗?
Q : Recommended pattern for inproc clients from multiple threads pushing ordered messages to a server?
对此类公式化问题的任何回答都依赖于缺失的信息:偏好集是什么,它导致区分上述操作的不充分、充分、更好和最佳解决方案。
您是否需要从服务器到客户端的确认反馈,因为消息传递是零保证的?
您需要处理一组静态或动态客户端吗?
与 RAM 占用空间相比,您更喜欢性能吗?
如果没有这些 "criteria" 中的任何一个表达,一个严肃的人永远不会 "recommend",因为任何这样的陈述都是公正的意见。
PUSH/PULL
可能足以满足未确认的交付(一个乐观的盲目用例,如果眼不见心不烦的设计理念在生产)
PAIR/PAIR
可能足以满足快速 .poll( ZeroWait, ZMQ_POLLIN )
服务器端扫描,服务器端 POSACK 响应可以发送到相应的客户端 -线程,其消息已交付并接受以供服务器端处理(用户定义的消息确认握手协议、处理 POSACK/NACK 超时/乱序升级等,超出了此 post 的范围)
PUB/SUB
或 XPUB/XSUB
可能足以对基于主题的信令进行一些更棘手的管理,双向在 X 版本中,如果这证明主题过滤开销的附加成本是合理的(取决于 ZeroMQ 版本,是分布在所有客户端线程上,还是集中在服务器线程端)
决定权在你。