使用MQ在DB中存储数据是一个好主意吗?

时间:2012-09-28 01:15:03

标签: scalability rabbitmq message-queue

我将使用rabbitMQ作为消息代理,并将大多数脚本切换为将数据发送到队列而不是执行直接写入/读取。消费者将获得这些消息并执行相应的操作。在我的梦想中,这将使我更灵活地选择数据库引擎,应用程序级别分片等。但这一般是个好主意吗?或者我错过了什么?对于mysql,当前写入负载为~15k插入/删除,对于redis实例,为30-50k集。读取负载相同~15-20k选择,50-70k得到redis。

2 个答案:

答案 0 :(得分:0)

您将面临的最大问题是您的数据库写入将被异步处理。如果客户端将数据写入数据库然后立即将其读回,则该值可能不是最初插入的值,因为Rabbit队列可能非常繁忙或缓慢,从而延迟了更新操作。或者管理员可能会意外清除您的队列,然后您将让所有这些客户认为他们的交易已经提交但没有任何内容存储。

这听起来像是过早优化的经典案例。这是一个寻找问题的解决方案,你应该避免这样做。

答案 1 :(得分:0)

使用amqp,您可以使用RPC方式运行无异步操作,使用这种架构,您应该找出与异步操作相关的所有问题。