MQ入门
MQ入门
- MQ = 消息中间件
- 消息:就是双方约定好的模板,进行信息的载体在网络上发布,进行信息交流与资源的交换。
- 中间件:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而传送消息的对象不需要做任何修改,mq充当中间者。
- MQ产品种类
- Kafaka
- RabbitMq
- RecketMq
- ActiveMq
- 为什么要引入MQ?
学生请教老师问题?
所有同学去请教老师,假设张三问老师5分钟,下一个同学来了需要排队等待老师回答完张三的问题,以此类推。。。
- 当一个同事老师正在回答,后续所有的同学都在等待 耦合度比较高
- 如果高并发的时候,学生突然有很多个,这时候老师一个一个回答会累死,一天什么都不干就光回答问题了 高并发
学生请教老师问题?优化版本
- 老师设立一个班长,让班长按照老师的格式/约定,写在一张纸上,按照先后顺序交给班长,大家不用在这里耗着。。。老师的资源就可以释放出来了,把这些消息移交给班长手上,所有同学就可以找班长要对应的答案
解决了耦合调用问题
- 很多要求与访问没有直接调用老师,全部都是班长在进行交互
解决了高并发压力
解决了 耦合、异步、消峰 。
- 上述的问题产生的背景 —— 系统与系统之间直接调用存在的问题
- 系统之间的接口调用耦合比较严重
- 要做系统解耦,当新的模块接入到系统里面来,改动代码最小
- 面对大容量并发容易被冲垮
- 设置流量缓冲池,可以让后端系统按照自身吞吐进行消费,不被冲垮
- 等待同步存在性能问题
- 强弱依赖梳理将非关键调用链路的操作异步化并提升整体系统的吞吐能力
队列想象成发短信, 主题想象为朋友圈 。微信公众号订阅了某个公众号, 现在这个公众号发布了某条消息,只给订阅了公众号的人发,这时候公众号向订阅的人统一发送消息,让一个消息有多个接受者。