ZeroMQ和多线程

ZeroMQ Guide有一个很好的例子,可以将ZeroMQ用于进程内多线程(inproc传输).但是,该示例显示了一个简单的消息有效负载,它是一个字符串.因此,血清化和去除血清的成本很小.

但是,举一个大型业务领域对象的例子.此域对象可以加强到其XML表示形式.因此,如果与每个线程进行通信,ZeroMQ如何能够进行多线程处理,这意味着必须在一个线程中对主导对象进行处理,发送到inproc工作线程,以便对消息有效负载进行解除处理.不应该通过消除和消除锯齿的成本否定消息传递的任何性能提升?

我理解这种结构的好处,因为将来有可能跨越cpu,跨节点,跨网络等进行扩展.但我对整个“使用ZeroMQ的多线程”概念感到困惑.

另一种方法可以是将域对象存储在缓存中,然后将标识传递给工作线程,工作线程将从缓存中获取实际的域对象.这是什么意思?

任何用例或最佳实践都是受欢迎的.

最佳答案 ØMQ非常适合在进程内外移动数据,但不能用于将数据编组到二进制表示中.

Won’t the cost of serilization and de-serilization negate any performance gains of message passing?

有效地传递消息,您已将同步过程转换为并行过程.关键的好处不是您可以传输消息的速度,而是您现在正在并行工作.

点赞