gpt4 book ai didi

redis - Celery、zmq、分布式系统的消息传递方法

转载 作者:可可西里 更新时间:2023-11-01 11:39:10 26 4
gpt4 key购买 nike

我需要实现一个执行以下操作的系统:

  1. 将数据传输到远程位置。
  2. 数据完全传输后,在远程服务器上开始计算。
  3. 计算完成后,将生成的计算数据取回源。
  4. 用于跟踪/编辑每项任务进度的网络界面。

我正在考虑使用:1. Ruby on Rails 4)2. Celery 作为分布式解决方案。3. Zmq 将消息传递给 RoR 应用程序,并在 celery 中不同“类别”的工作人员之间传递消息,如下所述。

为了将这些组件彼此分离,我正在考虑拥有 3 组 celery worker,每组属于一个单独的类别:-A.“同步” worker ,B.“渲染” worker ,和C.“获取” worker 。

我想使用 zmq pub sub 或广播模型在这些工作人员和网络应用程序之间传递消息,以便它们可以正确同步。例如 B) 应该只在 A) 完成后启动。 C) 应该跟在 B) 之后。

这种方法听起来是否合理,或者仅使用 zmq 或 celery 是否可以做得更好?我应该使用像 redis 或 amp 这样的 celery 后端而不是这些吗?

我想使用 celery 的原因当然是数据持久化以及用于监控工作人员的 Web 界面。

我显然对 celery、zmq 和一般的分布式计算比较陌生,所以欢迎任何建议。

谢谢大家。

最佳答案

我在工作中做过类似的事情,但都是使用 rabbitmq 和 celery 完成的。我采用的方法是让 celery worker 在远程服务器和本地主机上运行。让每个工作人员都有自己独特的队列并触发链条之类的东西chain(sync.s(file), compute.s(), sync_back.s()).delay 让 2 个同步任务进入本地主机队列,计算任务进入远程主机队列

关于redis - Celery、zmq、分布式系统的消息传递方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928671/

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