【问题标题】:Is there a compelling reason to use an AMQP based server over something like beanstalkd or redis?是否有令人信服的理由使用基于 AMQP 的服务器而不是 beanstalkd 或 redis 之类的东西?
【发布时间】:2012-05-12 10:12:57
【问题描述】:

我正在为一个项目写一篇文章,该项目负责处理面向数据服务器的主要应用程序之外的任务,该数据服务器是使用 Node.js 用 Ja​​vaScript 编写的。它需要处理未来安排的任务,并可能处理“现在”的任务。 “现在”只是意味着下次有工作人员可用时,它将执行该任务,因此该位可能无关紧要。工作人员都将与外部资源交谈,一个示例工作是发送电子邮件。我们是一家小商店,我们没有大量资源,所以我不想做的一件事就是在这个过程中开始混合语言,我已经看到 Node 可以很容易地为我们做到这一点,所以这就是我们将要采用的方法,除非我在开​​始编码之前看到一个令人信服的理由不这样做,这很快。

综上所述,我不知道是否有令人信服的理由使用基于 AMQP 的服务器,例如 OpenAMQRabbitMQ 而不是 KueBeanstalkd 之类的节点客户端。所以,我们开始吧:

是否有令人信服的理由使用基于 AMQP 的服务器而不是 beanstalkd 或带有 Kue 的 redis?如果是,哪款基于 AMPQ 的服务器最适合我布置的架构?如果不是,哪种 nosql 解决方案(beanstalkd、redis/Kue)最容易设置和部署最快?

【问题讨论】:

    标签: node.js background scheduled-tasks task-queue


    【解决方案1】:

    FWIW,我还不接受我的回答,我将解释我的决定以及原因。如果我没有得到任何似乎比我决定的更好的答案,我稍后会接受我自己的答案。

    我决定选择 Kue。它支持多个异步运行的worker,并且通过集群它可以利用多核系统。它很容易扩展以提供安全性。它以 Redis 为后盾,完全用于这个确切的事情,所以我知道我不会用未经证实的软件支持我的工作流程服务器(这并不是说其他​​任何软件都未经证实。)

    我选择 Kue 最令人信服的原因是它提供了 JSON api,以便客户端应用程序(第一个客户端将是基于 Web 的应用程序,但我们也计划制作智能手机应用程序)可以添加工作无需通过面向节点实例的主应用程序即可轻松完成,因此在编写本文时,我可以完全避开团队其他成员。我不需要路线,我不需要任何东西,而且都是为我提供的,所以我不需要写任何东西来支持这一点。这还有另一个优点,提供 l/p 安全性的扩展,只有授权的客户端才能添加作业,所以我不必将我的 redis 服务器直接暴露给客户端应用程序。它还有一个内置的 Web 控制台,API 允许客户端很容易地拉回与给定用户关联的作业列表,因此我们可以在一个漂亮的日历视图中向用户显示他们所有的计划任务,而我的努力是 0 .

    另一个令人信服的原因是我没有让 redis 和 Kue 适合我的陡峭学习曲线。之前设置过redis,Kue简单有效。

    是的,我是一个懒惰的开发者,但我是一个很好的懒惰开发者。

    更新:

    我让它工作和工作,吞吐量是惊人的。我将任务编组逻辑拆分到它自己的节点实例中,基本上我所要做的就是将我的 repo 部署到一台新机器上并运行 node task-server.js 来扩展我的工作人员。我可能需要添加更多对 Kue 的求职电话,因为我已经实现了一些东西,但这很容易。

    【讨论】:

    • 顺便说一句,当我问这个问题时,我基本上已经做出了这个决定,但是有人告诉我看一下基于 AMQP 的解决方案,我基本上已经到了决定的最后期限,所以我希望得到一些反馈。经过过去几个小时的研究,我决定找不到不使用 Kue 的理由。
    • 我认为,使用 Kue 与标准消息队列协议(如 AMQP)的权衡之一是没有其他语言的客户端。
    • 你还在用酷吗?
    • @bob_cobb 我已经从那个位置继续前进了。当我在那里时,对我们来说效果很好。
    • @NathanC.Tresch - 感谢您对选择 Kue 的良好解释。你有没有机会用github.com/mpneuried/rsmq-worker 与 Kue 进行比较?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2015-06-20
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多