0

我知道 ZMQ 提供了所有的灵活性来做你自己的负载平衡。但是我希望开箱即用的代理,大约 4 行代码使用该行

zmq_device (ZMQ_QUEUE, frontend, backend);

负载平衡很好,因为文档说它确实负载平衡。

ZMQ_QUEUE 创建一个共享队列,从一组客户端收集请求,并将这些请求公平地分配给一组服务。请求从前端连接公平排队并在后端连接之间进行负载平衡。回复会自动返回到发出原始请求的客户端。

我有一大群后端服务,但发现我的前端客户端通常必须等待几秒钟才能在 1:1 设置中花费 < 1/10 秒的时间(客户端和服务的数量相同)机)。我怀疑 ZMQ 没有开箱即用地正确进行负载平衡 - 即使它没有带宽等,它也会向同一个服务发送太多请求。

我认为这部分是因为服务是多线程的,可以让它们最多处理 10 个并发请求,但在接近第 10 个请求时它会大大减慢,即使它仍然可以接受它们。随机分布将是理想的。是否有开箱即用的方法来做到这一点,或者可以用几行代码完成,还是我必须从头开始编写自己的代理?

4

1 回答 1

0

Fwiw 问题是工人在没有空间的时候开始工作,问题不在于 ZMQ 层本身。

于 2012-09-07T20:08:26.817 回答