【发布时间】:2013-09-01 14:06:56
【问题描述】:
我正在为 Ruby 中的实时数据分析任务开发一种算法。由于数据集相当大,瓶颈是 CPU。因此,为了达到所需的性能,我必须并行使用更多的内核,可能在不同的机器上。
我的问题是是否存在提供以下功能的现有 Ruby 库:
- 集群管理,最好是无主控,动态重新配置(加入和离开节点)和一定程度的容错
- 将计算作业分配到(活动)节点、错误处理(作业重试等)
- 快速(直接?)通信以确保实时功能
我已经看过的东西:
- DRb:太低级,手动节点处理,没有容错?
- DCell:成熟?自动集群管理?
- Resque/Sidekiq:不错,但太慢了(轮询 Redis、休眠的工作人员……)
- Riak Map/Reduce:不错,但不推荐用于实时查询
- Spark: 复杂的东西,有进取心?
不得已:也许对于 Ruby 没有解决方案,但对于其他平台?也许是 Java(是的,JRuby!)或 node.js。
【问题讨论】:
-
您看过 Eventmachine gem 与 Amqp gem 的结合吗?我已经将它与一个函数一起使用,该函数使用 lscpu 和 nproc 读取内核和线程,然后在启动时将其写入 /run/ 并在 Eventmachine::run 方法中要求它。这是相当成功的。
-
关于 AMQP 和其他经典队列,我关心的是速度(对我来说是毫秒范围的实时)和自动错误处理。
标签: ruby distributed-computing fault-tolerance