ZeroMQ Guide 有使用 ZeroMQ 进行进程内多线程(进程内传输)的很好的例子。但是,该示例显示了一个简单的消息有效负载,它是一个字符串。因此,序列化和去序列化的成本很小。
但是,以大型业务领域对象为例。这个域对象可以被序列化为它的 XML 表示。那么,如果与每个线程通信意味着必须在一个线程中对域对象进行序列化,发送到 inproc 工作线程,进行反序列化并根据消息有效负载采取行动,那么 ZeroMQ 如何在多线程中表现出色。序列化和反序列化的成本不会抵消消息传递的任何性能提升吗?
我理解这种结构的好处,因为将来可以跨 CPU、跨节点、跨网络等进行扩展。但我对整个“使用 ZeroMQ 的多线程”概念感到困惑。
另一种方法是将域对象存储在缓存中,然后将身份传递给工作线程,工作线程将从缓存中获取实际的域对象。这是故意的吗?
欢迎任何用例或最佳实践。