这是我想实现 -ZMQ - 请求/响应与多个前服务实例和后端工人
REST服务(部署在多个实例)接到请求,处理它,并把它送到一个工人实例队伍。
工作人员完成更大的工作,准备好回复并将其发回。
与此同时,主服务完成了一些与原始请求相关的更多工作,将其与工作人员响应合并,并将其发送回请求连接的调用者。
如何通过ZMQ对此进行建模?
我试过这样做 - - 创建一个PUSH套接字并在服务实例中执行“绑定”。 - 工作人员“连接”到相应的PULL插座。 - 由于同一个服务实例必须获取响应并且没有其他服务实例,因此每个消息都发送到PUSH套接字,服务会附加一个响应队列名称。 - 工作人员收到消息,完成工作并按消息中给出的响应队列推送(进行连接)。 - 服务在它的响应队列上进行绑定,当它接收到响应时,执行其余的工作并响应服务调用者。
问题 - - 服务实例中的所有线程必须进行一些同步才能获取PUSH队列以向worker发送请求。 - 重负载时,单个PUSH队列开始窒息。 - 当我在多个实例上部署此服务代码并绑定到相同的套接字时,事情就会中断。
是否有一个标准的方法来实现这与ZMQ?我们决定使用ZMQ的原因是,如果员工是另一个HTTP服务(重试,断开连接,连接池等),并且ZMQ具有更高的吞吐量,则需要的连接管理更少。
我发现[此](https://books.google.de/books?id=TxHgtl_sFmgC&lpg=PP1&dq=zeromq%20messaging%20for%20many&pg=PA114#v=onepage&q=zeromq%20messaging% 20for%20many&f = false)以及另一种带流光设备的解决方案。但是这两种方法都涉及一个在中间运行的代理实例,并成为单点故障。有没有这个限制的版本? – anindyaju99
我会尝试写一些涉及ROUTER和DEALER等的东西,但有两件事情会跳出来。您是否阅读过http://zguide.zeromq.org/,并且服务实例中的线程应该通过ZMQ套接字进行通信,而不是通过同步进行通信。 – dsolimano
@dsolimano不能说我记得我在那篇指南中读到的所有内容,但是我肯定会经历这些。在我的情况下跨线程通信不是问题。 – anindyaju99