本文介绍了RabbitMq的局限性和集群的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们的应用程序当前每秒处理大约1500个事务.我们将Rabbit列为队列.但是我们仅将交易ID存储在Rabbit中,实际消息大小为1-5 mb,我们存储在Redis(内存数据库)中.我的问题是,我们是否可以完全删除Redis,而仅使用Rabbit-它会持续吗?

Our application is currently serving around 1500 transactions per second. We have Rabbit as a queue. But we store only the transaction ID in Rabbit, the actual message which is 1-5 mb in size, we are storing in Redis (an in-memory database). My question is, can we remove Redis altogether, and just use Rabbit - will it sustain?

还有一件事情:我们可以水平增加Rabbit实例的数量吗,因为我们期望负载会快速扩展(我们已经成功地测试了主/主复制).

One more thing: can we increase the number of Rabbit instances horizontally, as we expect load will scale up pretty fast (we have already tested an master master replication successfully).

推荐答案

通常,这对我来说不是一个好主意. Rabbit是一个消息传递系统,而不是数据库.

In general this sounds like not a good idea to me. Rabbit is a messaging system, not a database.

消息必须存储在Rabbit的某个地方.如果某些Rabbit实例发生故障,您将丢失消息.如果使用持久性,情况将更糟:

The messages have to be stored in Rabbit somewhere. If some Rabbit instance gets down, you'll lose your messages. If you use persistence, the situation will be even worse:

集群Rabbit应该同步每条消息,因此重新启动任何具有复制节点的Rabbit节点将花费一定的时间.

Clustered Rabbit should synchronize each and every message, so restarting any Rabbit node that has a replicated node will take ages.

事实上,我相信现在您拥有最好的解决方案:)

In fact, I believe now you have the best solution :)

这篇关于RabbitMq的局限性和集群的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-05 02:24