我正在尝试为N个前端服务器和M个后端工作者设计ZeroMQ架构,前端服务器将任务发送到后端服务器.前端服务器确实有关于后端服务器的信息,但后端服务器不了解前端服务器.我有两种类型的任务,一种类型应该使用循环,只去一个后端服务器,而其他类型应该广播到所有后端服务器.我不想拥有一个中央经纪人,因为这将是单点故障.
对于第一类任务,请求/响应模式似乎是正确的,而对于第二类,它将是发布者/订阅者模式.但是这两种模式结合起来怎么样?如果我想向所有或仅一个随机后端服务器发送消息,是否有任何模式允许我在发送时选择?
我提出的解决方案就是使用发布者/订阅者并使用后端服务器ID预先添加消息,如果它发送给所有人,则会提供一些魔术值.但是,这会产生很多不必要的流量.有更干净,更有效的方法吗?
最佳答案 我可能会使用
pub sub message envelopes – 如果你在UDP上使用pub / sub广播我不相信它会产生不必要的网络流量,但它会产生额外的处理,但是像大多数这些东西一样,它是设计优雅和设计优雅之间的权衡.性能. ØMQ倾向于首先采用性能路线,但我倾向于测量它并使用量化的性能结果来确定这是否可以接受.
对我来说,优雅的解决方案是使用两组套接字,因为这本身就是通过系统区分工作流程 – 而使用单个套接字以非ØMQ方式混合,这些应该是不同的,以便将来进行更改和动态/不稳定的系统.