在这种情况下我应该使用哪个ZMQ模式?

问题描述 投票:0回答:1

我是ZMQ和多线程设计的新手,所以我希望对我的方案的设计模式有所了解:

我有一个充当中间件的服务器,它将以固定的速率从数据库接收外部数据,然后将数据转发到其连接的客户端。服务器将进行一些过滤,以便每个客户端仅接收部分数据;有时,客户端还会在收到数据后发送回响应,服务器需要处理并将响应存储到数据库中。

由于每秒可能有数百个客户端连接到服务器,所以我正在考虑将Router-Dealer模式用于服务器-客户端部分;对于服务器数据库部分,可能使用一个工作线程来接收外部数据,并通过“ inproc”协议将其转发给服务器内部的其他工作者是一个好主意?

任何建议将不胜感激!

multithreading zeromq pyzmq design
1个回答
0
投票
不知道所有细节很难回答,但是这里有一些指示可能会帮助您朝正确的方向前进。

代替使用线程,可以考虑使用zmq_poll()使用多路复用。我猜这是PyZMQ中的zmq.Poller。这通常比线程容易得多。如果中间件不必为每个消息做很多工作,这是一个不错的选择。您也可以将两种方法结合起来:一组有限的线程,其中每个线程使用多路复用处理多个连接。

如果流量不是严格的请求-响应,

Router-Dealer是一个不错的选择。您还可以考虑在客户端和服务器之间使用多个套接字连接,例如:

    用于从中间件到客户端的更新的推挽式连接。
  • 一个推拉连接,用于从客户端到中间件的响应。
© www.soinside.com 2019 - 2024. All rights reserved.