我正在尝试扩展 ZeroMQ Majordomo 模式以与在网状网络中互连的多个代理一起操作。它将与原始的 Majordomo 模式相同地运行,除了如果 B1 无法服务其客户的请求但 B2 可以,则代理 B1 会将客户请求转发给代理 B2。
关于这个模式的实现,我有两个设计问题。
1) 经纪人 B1 如何知道 B2 上提供哪些服务? 一种可能的解决方案是创建一个“哈希节点”,连接并跟踪网格中每个代理可用的服务。当代理想要转发客户端请求时,它会咨询哈希节点。但是,这需要所有代理定期与哈希节点通信。这种沟通会阻碍性能或产生任何我没有提到的微妙问题吗?
2) 代理应该使用什么样的套接字在网状网络中进行通信? 每个 broker 显然都需要一个 ROUTER 套接字来接收消息、连接请求等。但是每个 broker 应该使用什么类型的套接字来发送请求呢?DEALER 套接字是一个糟糕的选择,因为每个代理都需要为每个其他代理打开一个 DEALER 套接字。ROUTER 会很好,但需要“hacks”来实现。有没有其他方法可以有效地将经纪人联系在一起?