如果遇到了双11这样的节日,对数据库的写库能力是一个非常大的考验。如果面临每秒12万次的写库操作,传统的mysql肯定不能应对。
矛盾点:用户的写入操作必须现在完成,不能等待。否则必须报连接超时。
解决方法:
采用队列的机制,将用户的写库请求,发往队列中,并且告知用户已经完成,请稍后。
说明:
当引入消息队列的机制后,首先将用户的请求先保存到消息队列中,mysql从队列中获取需要处理的数据分批执行。直到将消息队列中的请求全部执行完成。这时的操作才算结束。
好处:用户的写库操作与数据库处理的操作是异步的。能够极大减轻数据库的压力。
RabbitMQ介绍 https://www.rabbitmq.com/
MQ全称为Message Queue, (MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
RabbitMQ是原来爱立信公司的产品。它早期为金融服务,金融的特点是不允许数据丢失,于是想了一种异步提交方式:把数据存到缓存里,读的时候从缓存去读直到读完为止。随着阿里的兴起,好的东西慢慢被取代了。
RabbitMQ特点
- 高可用,能搭建集群服务器。
- 可扩展,有大量插件
- 有消息确认机制
- 有持久化机制,可靠性高。
- 开源
RabbitMQ的工作模式
简单模式
简单模式工作模式
工作模式订阅模式
订阅模式路由模式
路由模式主题模式
主题模式
6.RPC模式
用作系统底层传输
RPC模式
RabbitMQ的性能和同类型产品
ZeroMQ:(提供了很大的吞吐量)并发处理能力物理最快速的消息队列,适用于大数据,但是对于数据的有效性不能保证
RabbitMQ:现阶段主流的消息队列。对于数据的有效性提供了很好的支持。一般在金融领域适用的较多。并且处理速度相对较快。
MSMQ:市面上没人用了。