尺寸?不,与运输哲学相关的约束很重要。
ZeroMQ 传输编排中还有一个比选择外部数据序列化器 SER/DES 策略更重要的问题。
没有人会禁止您尝试发送尽可能大BLOB
的数据,而 JSON 装饰的字符串已经向您展示了这种方法的阴暗面,还有其他理由不继续这种方式。
ZeroMQ 毫无疑问是一个强大而强大的工具箱。仍然需要一些时间才能获得真正智能且高性能的代码部署所必需的洞察力,从而最大限度地利用这个强大的主力。
功能丰富的内部生态系统“幕后”的副作用之一是隐藏在消息传递概念中的不太为人所知的策略。
一个人可以发送任何大小合理的消息,但不能保证送达。它要么完全交付,要么根本没有任何东西,如上所述,没有任何保证。
哎哟?!
是的,不保证。
基于这一核心零保证理念,在决定步骤和措施时应格外小心,如果您打算尝试将“技嘉BEAST”移来移去,则更应谨慎。
从这个意义上说,它可能会得到实际SUT
测试的定量支持,即小型消息可能会传输(如果您确实仍然需要移动GB
-s (参考上面的评论,在 OP 下)并且别无选择)整个将大量数据分割成更小的部分,并采用容易出错的重新组装措施,这导致GB
比尝试使用哑力并指示代码将数据转储到任何东西上更快、更安全的端到端解决方案那里的资源实际上是可用的(ZeroMQ 的零拷贝原则不能也不会在这些努力中拯救你)。
有关另一个隐藏陷阱的详细信息,与不完全零拷贝实现有关,请阅读 Martin SUSTRIK,ZeroMQ 的共同之父,关于零拷贝“直到内核边界”的评论(因此,至少两倍的内存空间预期的分配......)。
最好的下一步?
虽然它并不能用几个SLOC
-s 解决您的问题,但如果您认真地将您的智力投入到分布式处理中,最好的办法是阅读 Pieter HINTJEN 的可爱书“Code Connected, Vol.1”
是的,产生自己的洞察力需要一些时间,但这会在许多方面将您提升到另一个专业代码设计水平。值得时间。值得努力。