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/

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...