ZeroMQ指南有一个很好的例子,展示了使用ZeroMQ进行进程内多线程(inproc传输)的示例。但是,该示例显示了一个简单的消息负载,即字符串。因此,序列化和反序列化的成本很小。
然而,以大型业务域对象为例。该域对象可以被序列化为其XML表示形式。那么,如果要与每个线程通信,则意味着该域对象必须在一个线程中进行序列化,发送到inproc工作线程,进行反序列化并对消息负载进行操作。序列化和反序列化的成本难道不会抵消消息传递带来的任何性能增益吗?
我理解这种构造的优点,因为它可以在未来跨CPU、跨节点、跨网络等进行扩展。但我对“使用ZeroMQ进行多线程”的概念感到困惑。
另一种方法可以将域对象存储在缓存中,并仅将身份传递给工作线程,由工作线程从缓存中提取实际的域对象。这是预期的吗?
欢迎任何用例或最佳实践。
然而,以大型业务域对象为例。该域对象可以被序列化为其XML表示形式。那么,如果要与每个线程通信,则意味着该域对象必须在一个线程中进行序列化,发送到inproc工作线程,进行反序列化并对消息负载进行操作。序列化和反序列化的成本难道不会抵消消息传递带来的任何性能增益吗?
我理解这种构造的优点,因为它可以在未来跨CPU、跨节点、跨网络等进行扩展。但我对“使用ZeroMQ进行多线程”的概念感到困惑。
另一种方法可以将域对象存储在缓存中,并仅将身份传递给工作线程,由工作线程从缓存中提取实际的域对象。这是预期的吗?
欢迎任何用例或最佳实践。