【发布时间】:2015-01-11 18:23:50
【问题描述】:
我需要实现一个执行以下操作的系统:
- 将数据传输到远程位置。
- 数据传输完毕后,在远程服务器上开始计算。
- 计算完成后,将生成的计算数据取回源。
- 用于跟踪/编辑每项任务进度的 Web 界面。
我正在考虑使用: 1. Ruby on Rails 4) 2. Celery 作为分布式解决方案。 3. Zmq 将消息传递给 RoR 应用程序,并在下面描述的 celery 中不同“类别”的工人之间传递消息。
为了将这些组件彼此分离,我正在考虑拥有 3 组 celery workers,每组属于一个单独的类别:- A.“同步”工作人员, B.“渲染”工人,以及 C.“获取”工人。
我想使用 zmq pub sub 或广播模型在这些工作组和网络应用程序之间传递消息,以便它们可以正确同步。例如 B) 应该只在 A) 完成后启动。 C) 应遵循 B)。
这种方法听起来是否合理,或者仅使用 zmq 或 celery 是否可以做得更好?我应该使用像 redis 或 amp 这样的 celery 后端来代替这些吗?
我想使用 celery 的原因当然是数据持久性以及用于监控工作人员的 Web 界面。
我显然对 celery、zmq 和分布式计算比较陌生,所以欢迎任何建议。
谢谢大家。
【问题讨论】:
标签: redis celery message-queue zeromq distributed-computing