为erlang寻找持久的,分布式的工作队列

问题描述:

在重新发明*之前,我正在寻找指向满足这些要求的开源项目的指针。为erlang寻找持久的,分布式的工作队列

  • 二郎实施虽然去或C是可能的,如果没有太多的行李(如:依赖扭迷宫)
  • 端点或客户端二郎(如:我想二郎代码当我做这些工作时运行。)
  • 将作业分配给节点,并调用一些erlang函数来完成作业。
  • 坚持以某种方式
  • 的作业没有主节点,不存在单一故障点
  • 同质架构
  • 管理的,可能会得到备份,而无需在地板上
  • 工作是下降的作业的作业队列做过不止一次的是确定
  • 运行剖面像了Riak或Couchbase(如:启动一个节点,然后启动他人和指向它)

的Stro ng偏好轻量级的东西。在erlang中有很多过度锻炼的企业级解决方案,这些解决方案看起来像需要花费很长时间才能学习,因为从头开始重新创建它(事实上,我基本上构建了解决这个问题的解决方案,以回答某人其他人的问题在这里*我可以建立我所描述的,但这似乎是在erlang设计的中间那些需求之一。)

我考虑过: - ejabbered - 更多的消息框架 - rabitmq - 理论上这样做,但每次我去他们的网站时,我都沉浸在抽象的海洋中。它似乎准备好做所有事情。我甚至不知道它是否有任何持久性。

修改即可添加:以下是使用储物柜进行分布式锁定的幻灯片。好像它解决问题的一个关键部分 http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking

进一步编辑(如果一个人想推出自己的。):我真的要寻找的东西比RabbitMQ的更轻巧。我知道它可以做我想做的事,但看起来它的成本与自己做这件事的成本差不多,最终定制解决方案会更接近我真正需要的。

我们使用RabbitMQ执行此类任务。 RabbitMQ交换队列绑定模型支持灵活的配置。您发布到交易所,绑定确保消息到达队列中。一个或多个工作进程可以订阅队列。队列和交流可以持久。有人说完全理解RabbitMQ大概需要半年的时间。

+0

半年完全理解RabbitMQ的时间比一个月还要长,所以我认为需要我自己构建自己的解决方案,从一开始我就会完全理解。我认为这是我对RabbitMQ的关注。它确实是一切,并且是“企业级”,但也有一个陡峭的学习曲线。很高兴知道它可以做我所需要的,我会做更多的调查,看看我能不能找出如何坚持和设置它以满足我的需求。 – nirvana 2013-03-20 16:10:02

+1

试试RabbitMQ。与使用自己的解决方案相比,您将获得更多的收益。 – Tilman 2013-03-20 18:49:11

+1

学习RabbitMQ应该比滚动你自己的要少很多。关键部分 - >交换绑定到队列。消息被发布到Exchange,它们逐渐下降到绑定的队列。队列是您与消费者收到消息的地方。有很多使用RabbitMQ库的例子。 – Travis 2013-08-29 11:34:04

我们使用RABBITMQ将我们所有的应用程序绑定到一组完整的事物中。在整个设置中是一个*RABBITMQ服务器,系统创建队列,无论是持久还是临时。由于RABBITMQ的可用性,我们的整个分销系统都在其上运行。使用不同技术构建的系统通过RABBITMQ发送和接收来自其他系统的任务。

我们想出了一个消息格式,它可以是JSON或XML,系统之间可以相互通信。它太快了。然而,我不会在这里进入太多的细节,但是,我必须在*的RABBITMQ客户端上编写一个OTP应用程序来从erlang程序员中抽取所有AMQP的东西。程序员知道的是一个APi,比如我发送一个请求到System A,准备消息格式M并且调用API:zeenode_amqp:req(SystemA,Message)。系统可以发送synchronousasynchronous请求。

您应该从中获得什么:RABBITMQ对排队系统非常有用。事实上,在我们的设置中,只要从客户端打到RABBITMQ,就立即向服务器发送消息。通过使用精心设计的队列和交换命名约定并仔细了解各种AMQP用例模型,它将非常适合您。

我认为可以使用Gproc等流程字典结合Erlang Queue ModulePoolboy推出自己的产品。无论如何,我会推荐RABBITMQ。让我知道,我可以寄给你一些图书馆,所以你研究它们,看看它们是否适合你。一旦你有一个好的RABBITMQ设置,按照他们站点上的文档进行配置,然后你也安装了Erlang amqp客户端,那么就可以动态地创建队列和交换(无论你是否希望它们是持久的,取决于你在做什么)。您甚至可以群集RABBITMQ服务器,以确保可用性。

+1

相关提示RabbitMQ可以与JSOn一起工作,并坚持下去。如果您对RabbitMQ库有任何建议,我很感激。我知道有一个叫RabnyMQ网站上的兔子和其他人。我的部分问题是,RabbitMQ提供了如此多的选项 - 例如三种不同的聚类策略,并且很难知道什么是正确的。我想我可以阅读更多文档。很高兴听到人们正在使用它来完成这种工作,这也是我关心的一部分。 – nirvana 2013-03-20 16:18:50