gpt4 book ai didi

zeromq - ZeroMQ模式,用于基于空闲状态在工作人员之间进行负载均衡工作

转载 作者:行者123 更新时间:2023-12-04 13:22:47 24 4
gpt4 key购买 nike

我只有一个生产者和n个 worker ,我只想在他们还没有处理一个工作单元并且想找到一个很好的zeroMQ模式时才将工作交给他们。

1)REQ/REP

生产者是请求者,并创建与每个 worker 的连接。它跟踪哪个 worker 很忙,并轮流闲置 worker

问题:

  • 如何在收到响应的通知后仍能够将新工作发送给空闲的 worker ,而又不将生产者线程专用于每个 worker ?

  • 2)推/拉

    生产者将其插入一个插槽,所有工作人员都会哺育该插槽,而 worker 将其插入另一个插槽,生产者会监听。

    问题:
  • 没有 worker 闲置的概念,即工作被卡在长工作量后面

  • 3)PUB/SUB

    非入门者,因为没有办法确保工作不会丢失

    4)反向REQ/REP

    每个工作程序都是 REQ端,向生产者请求工作,然后在完成工作时发送另一个请求

    问题:
  • 生产者必须阻止工作请求,直到有工作为止(因为每个recv必须与send配对)。这样可以防止 worker 以完成工作响应
  • 可以使用单独的完成 channel 进行修复,但是生产者仍然需要某种轮询机制来检测新工作并停留在同一线程上。

  • 5)每个 worker 的对数

    每个工作人员都有自己的 PAIR连接,允许独立发送工作和接收结果

    问题:
  • REQ/REP相同的问题,每个 worker 需要一个线程

  • 尽管zeroMQ在后台是非阻塞/异步的,但我找不到一种模式也可以使我的代码异步,而不是阻塞许多专用线程或轮询较少的自旋循环。这不是zeroMQ的好用例吗?

    最佳答案

    您可以使用ZMQ Guide中的负载平衡模式来解决您的问题。这不仅与流控制有关,而且还能够发送和接收消息。生产者将仅向闲置的 worker 发送工作请求,而 worker 则可以随时发送和接收其他消息,例如中止,关机等

    关于zeromq - ZeroMQ模式,用于基于空闲状态在工作人员之间进行负载均衡工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824819/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com