我正在尝试解决以下问题,并想知道应用的最佳方法是什么?
我想通过ZeroMQ设置版本化通信,这实际上意味着任何客户端首先进行握手,说明其消息传递协议的版本,并且所有后续请求仅转发给特定的工作者集合,即可以理解这个协议。
我看到了路由器/经销商的例子,但总是向所有工人发送转发。
IMO这类似于会话,它是基于握手建立的,所有未来的请求都是在特定的上下文中进行的。这可以用ZeroMQ完成吗?
我知道我可以向客户发回一些ID,并要求它提出所有未来的请求,但是希望避免这种干扰。
请注意:我在C ++中实现了这种方法。我不介意你的回答代表了一个概念,考虑了ZeroMQ C API或cppzmq包装器中提供的帐户功能。无需编写完全成熟的解决方案,只需完成如何完成。
答案 0 :(得分:2)
充分尊重不进入"带内"通过ID /多部分消息处理发信号,可以使用静态和动态使用原有ZeroMQ资源来构建希望拥有的基础设施。
步骤0:您的中央权限处理初始"客户"联系/握手/身份验证
第1步:每个"客户"收到一组指示,因为它的身份/版本得到批准,基于0)
第2步: ad-hoc指示"客户"可以{ .connect() | .bind() }
使用适当的访问点
步骤3:作为架构奖励,可以作为分布式平台享受重新协商和节点重新发现,以实现更强大,可扩展的性能和提升的安全动机场景
简而言之,人们很快就会忘记标准的可扩展形式通信模式,这些模式可以作为ad-hoc定义体系结构的一组构建模块。这是ZeroMQ或nanomsg实现的最大力量。
May read more on advanced use-cases in this ( and check the book there ... )。