文章目录
本文借鉴了新手也能看懂,消息队列其实很简单中有关消息队列的部分内容
一.消息队列
消息队列是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。分布式系统中经常要使用到消息队列,使用消息队列主要是为了达成两个目的,第一点是通过异步处理提高系统性能,消息队列有削峰、减少响应所需时间的功能;第二点是降低系统耦合性。
1.1 通过异步处理提高系统性能
如上图,在不使用消息队列服务器的时候,用户请求后一直要等到数据库写入完成后才能响应,因此用户必须要等待很长时间,服务器的负载也会因此飙升。
但是在使用消息队列之后,用户的请求数据发送给消息队列之后立刻返回响应,然后数据库再从消息队列中读取数据写入数据库,这样用户请求处理的过程就变成了一个异步的过程。由于消息队列服务器处理速度快于数据库(消息队列也比数据库有更好的伸缩性),因此响应速度得到大幅改善。
通过以上分析我们可以得出消息队列具有很好的削峰作用的功能——即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。 举例:在电子商务一些秒杀、促销活动中,合理使用消息队列可以有效抵御促销活动刚开始大量订单涌入对系统的冲击。如下图所示:
1.2 降低系统耦合性
在不使用消息中间件的场合下,如果业务逻辑比较复杂,那么业务关系之间的关系就会非常混乱,难以管理,复用性也非常差
加入消息中间件以后,生产者统一到消息队列中发布服务,消费者订阅服务,服务之间的调用关系可以在消息队列中非常清晰的看到,当系统的某一个模块需要升级或者有新的功能模块需要加入进来都