Celery,zmq,分布式系统的消息传递方法

时间:2014-11-14 11:10:25

标签: redis celery message-queue zeromq distributed-computing

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

  1. 将数据传输到远程位置。
  2. 完全传输数据后,在远程服务器上开始计算。
  3. 计算完成后,将生成的计算数据提取回源。
  4. 用于跟踪/编辑每项任务进度的网络界面。
  5. 我正在考虑使用: 1. Ruby on Rails for 4) 2.芹菜作为分布式解决方案。 3. Zmq将消息传递到RoR应用程序以及不同的"类别"芹菜中的工人如下所述。

    为了将这些组件相互分离,我考虑有3套芹菜工人,每组都属于一个单独的类别: - A.'同步'工作人员, B.'渲染'工人和 C.' Fetch'工人。

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

    这种方法听起来是否合理,或者仅使用zmq或celery可以做得更好吗?我应该使用像redis或者放大器的芹菜后端吗?

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

    我对celery,zmq和分布式计算显然相对较新,所以任何建议都会受到欢迎。

    谢谢大家。

1 个答案:

答案 0 :(得分:0)

我做过类似的工作,但都是用兔子和芹菜做的。我接近这个的方法是让一个芹菜工作者在远程服务器和本地主机上运行。让每个工人拥有自己独特的队列,然后开出一条链子 chain(sync.s(file), compute.s(), sync_back.s()).delay将2个同步任务转到localhost队列,计算任务进入远程主机队列