ZeroMQ:从多个线程将Inproc客户端推向服务器的推荐模式?

我的要求

  • 来自同一进程中不同线程的客户端
  • 服务器在同一进程中的单独线程中
  • 客户端向服务器发送消息
  • 服务器通过按源端的世界时钟按发送顺序将消息打印出来来使用消息,这对于线程和任何调度都是透明的。

回答

之类的问题

给出不同的意见。因此,我是否应该简单地要求客户端推送到另一个线程中创建的单个inproc PULL服务器或使用路由器经销商模式?

在第二个问题的评论之一中,我得到了STREAMER pattern似乎存在于pyzmq中,但是我不确定这是否是正确的解决方案,或者它是否可用于C API? / p>

chenxinpao 回答:ZeroMQ:从多个线程将Inproc客户端推向服务器的推荐模式?

  

Q 来自多个线程的inproc客户端的推荐模式,将有序消息推送到服务器?

对这样提出的问题的任何答案都取决于缺少的一条信息:偏好的设置是什么,这些偏好导致区分上述操作的不足,充分,更好和最佳解决方案。

由于消息传递的保固为零,您是否需要服务器到客户端的保密反馈?

您需要处理一组静态或动态客户端吗?

相对于RAM占用空间,您更喜欢性能吗?


没有任何这些“标准”表示认真的人永远不会“推荐”,因为任何这样的陈述都是公正的看法。

PUSH/PULL 可能足以满足未经确认的交付(如果在生产中可以接受视力不佳的设计理念,则可以使用乐观的盲目用例)

PAIR/PAIR 对于快速的.poll( ZeroWait,ZMQ_POLLIN )服务器端扫描程序可能就足够了,服务器端POSACK响应可以分派到各自的客户端线程,其消息是已交付并接受用于服务器端处理(用户定义的消息确认握手协议,处理POSACK / NACK超时/无序调用等,超出了本文的范围)

PUB/SUB XPUB/XSUB 可能足以对基于主题的信令(在X版本中是双向的)进行一些更棘手的管理证明主题过滤开销的附加成本是合理的(取决于ZeroMQ版本,是分布在所有客户端线程上还是集中在服务器线程端)

由您决定。

本文链接:https://www.f2er.com/3147649.html

大家都在问