在重新发明轮子之前,我正在寻找满足这些要求的开源项目的指针。
- 如果没有太多的包袱(例如:扭曲的依赖迷宫),虽然 go 或 C 是可能的,但在 erlang 中实现。
- erlang 中的端点或客户端(例如:我希望在执行工作时运行 erlang 代码。)
- 将作业分发到节点,并调用一些 erlang 函数来完成作业。
- 以某种方式坚持工作
- 没有主节点,没有单点故障
- 同构架构
- 管理可能被备份的作业队列,而不会将作业丢在地上
- 一项工作不止一次完成是可以的
- 像 Riak 或 Couchbase 这样的操作配置文件(例如:启动一个节点,然后启动其他节点并将它们指向它。)
强烈偏爱轻量级的东西。erlang 中有很多过度劳累的企业级解决方案,看起来他们需要很长时间才能学习,就像我从头开始重新创建它一样(事实上,我基本上为这个问题构建了一个解决方案来回答某人其他关于stackoverflow的问题。我可以构建我所描述的内容,但这似乎是erlang设计目的中间的需求之一。)
我所考虑的: - ejabbered - 更像是一个消息传递框架 - rabitmq - 理论上是这样做的,但每次我访问他们的网站时,我都会淹没在抽象的海洋中。它似乎准备好做所有事情。我什至无法判断它是否有任何持久性。
编辑添加:这是关于使用储物柜进行分布式锁定的幻灯片。似乎它解决了问题的关键部分(如果有人想自己动手。) http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking
进一步编辑: 我真的在寻找比 RabbitMQ 更轻量级的东西。我知道它可以做我想做的事,但学习它的成本似乎与我自己做的成本相当,最终定制解决方案将更接近我真正需要的。