postgresql – 为什么我们需要消息代理像rabbitmq通过数据库像po
我是新的消息代理像rabbitmq,我们可以使用它为一个调度系统,如芹菜创建任务/消息队列。
现在,这里是问题: >我可以在postgres中创建一个表,该表可以附加新任务并由消费程序(如芹菜)使用。 现在,我认为缩放不能是答案,因为我们的数据库像postgres可以在分布式环境中工作。 我googled为什么问题的数据库构成的特定问题,我发现: >轮询保持数据库buzy和低性能 现在,rabbitmq或任何其他消息代理如何解决这些问题? 我发现AMQP协议是它所遵循的。这是什么伟大的? reddis也可以用作消息代理? [我发现它更类似于memcache然后rabbitmq] 请投一些光!
Rabbit的队列驻留在内存中,因此比在数据库中实现它要快得多。 (良好的)专用消息队列还应该提供必要的排队相关特征,例如节流/流控制,以及选择不同路由算法的能力,命名一对夫妇(兔子提供这些和更多)。根据项目的大小,您可能还希望消息传递组件与数据库分离,这样,如果一个组件遇到重负载,则不需要阻碍其他组件的操作。
至于你提到的问题: >轮询保持数据库buzy和低性能:使用Rabbitmq,生产者可以推送更新到消费者,其性能远胜于轮询。当需要时,数据被简单地发送给消费者,消除了浪费检查的需要。 关于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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |