微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 为什么我们需要消息代理像rabbitmq通过数据库像postgres?

我是新的消息代理像rabbitmq,我们可以使用它为一个调度系统,如芹菜创建任务/消息队列。

现在,这里是问题:

>我可以在postgres中创建一个表,该表可以附加新任务并由消费程序(如芹菜)使用。
>为什么在地球上,我想为这样设置一个全新的技术像rabbitmq

现在,我认为缩放不能是答案,因为我们的数据库像postgres可以在分布式环境中工作。

我googled为什么问题的数据库构成的特定问题,我发现:

>轮询保持数据库buzy和低性能
>锁定表 – >再次表现不佳
>数百万行任务 – >再次轮询性能

现在,rabbitmq或任何其他消息代理如何解决这些问题?
也,

我发现AMQP协议是它所遵循的。这是什么伟大的?

reddis也可以用作消息代理? [我发现它更类似于memcache然后rabbitmq]

请投一些光!

Rabbit的队列驻留在内存中,因此比在数据库中实现它要快得多。 (良好的)专用消息队列还应该提供必要的排队相关特征,例如节流/流控制,以及选择不同路由算法的能力,命名一对夫妇(兔子提供这些和更多)。根据项目的大小,您可能还希望消息传递组件与数据库分离,这样,如果一个组件遇到重负载,则不需要阻碍其他组件的操作。

至于你提到的问题:

>轮询保持数据库buzy和低性能:使用Rabbitmq,生产者可以推送更新到消费者,其性能远胜于轮询。当需要时,数据被简单地发送给消费者,消除了浪费检查的需要。
>锁定表 – >再次低性能:没有表要锁定:P
>数百万行任务 – >再次轮询是低性能的:如上所述,Rabbitmq将运行得更快,因为它驻留RAM,并提供流控制。如果需要,它也可以使用磁盘临时存储消息,如果它用完了RAM。 2.0之后,Rabbit在RAM使用上有了显着的提高。还提供集群选项。

关于AMQP,我会说一个非常酷的功能是“交换”,以及它的路由到其他交换机的能力。这给你更多的灵活性,使您能够创建一个广泛的精心设计的路由类型,当缩放时可以非常方便。有关示例,请参阅:

和:http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

最后,关于redis,是的,它可以用作消息代理,并且可以做得很好。然而,Rabbitmq有比redis更多的消息队列功能,因为rabbitmq是从一个功能的企业级专用消息队列。另一方面,Redis主要被创建为一个内存中的键值存储(虽然它比现在更多;它甚至被称为瑞士军刀)。尽管如此,我已经读过/听过许多人用Redis获得较好的结果,对于较小的项目,但在较大的应用程序中没有听说过很多。

下面是在长轮询聊天实现中使用的redis的示例:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐