现在,这里是问题:
>我可以在postgres中创建一个表,该表可以附加新任务并由消费程序(如芹菜)使用。
>为什么在地球上,我想为这样设置一个全新的技术像rabbitmq
现在,我认为缩放不能是答案,因为我们的数据库像postgres可以在分布式环境中工作。
我googled为什么问题的数据库构成的特定问题,我发现:
>轮询保持数据库buzy和低性能
>锁定表 – >再次表现不佳
>数百万行任务 – >再次轮询性能低
现在,rabbitmq或任何其他消息代理如何解决这些问题?
也,
我发现AMQP协议是它所遵循的。这是什么伟大的?
reddis也可以用作消息代理? [我发现它更类似于memcache然后rabbitmq]
请投一些光!
至于你提到的问题:
>轮询保持数据库buzy和低性能:使用Rabbitmq,生产者可以推送更新到消费者,其性能远胜于轮询。当需要时,数据被简单地发送给消费者,消除了浪费检查的需要。
>锁定表 – >再次低性能:没有表要锁定:P
>数百万行任务 – >再次轮询是低性能的:如上所述,Rabbitmq将运行得更快,因为它驻留RAM,并提供流控制。如果需要,它也可以使用磁盘临时存储消息,如果它用完了RAM。 2.0之后,Rabbit在RAM使用上有了显着的提高。还提供集群选项。
关于AMQP,我会说一个非常酷的功能是“交换”,以及它的路由到其他交换机的能力。这给你更多的灵活性,使您能够创建一个广泛的精心设计的路由类型,当缩放时可以非常方便。有关示例,请参阅:
最后,关于redis,是的,它可以用作消息代理,并且可以做得很好。然而,Rabbitmq有比redis更多的消息队列功能,因为rabbitmq是从一个全功能的企业级专用消息队列。另一方面,Redis主要被创建为一个内存中的键值存储(虽然它比现在更多;它甚至被称为瑞士军刀)。尽管如此,我已经读过/听过许多人用Redis获得较好的结果,对于较小的项目,但在较大的应用程序中没有听说过很多。
下面是在长轮询聊天实现中使用的redis的示例:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/