这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
消息队列的概念
什么是消息队列(MQ)
消息队列,是保存消息的一个容器,是一个队列,这个队列需要支持高吞吐,高并发,高可用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。
生产者消费者模型
- 把数据放到消息队列叫做生产者
- 从消息队列里边取数据叫做消费者
消息队列的使用场景
应用解耦,流量削峰,异步处理,消息通讯
使用案例
系统崩溃
使用消息队列进行解耦。防止某一个服务崩溃导致整个系统崩溃。
服务处理能力有限
使用消息队列进行削峰。生产者将消息放入消息队列,消费者每次从消息队列中获取处理能力内数量的请求进行处理。
链路耗时长尾
使用消息队列进行异步处理。用户发起订单后,将扣减库存、通知商家等行为加入消息队列,然后直接向用户返回下单成功。减少用户等待时间。
日志如何处理
将日志信息放入消息队列,消费者从消息队列中取出日志信息,推送给ES等服务。
业界消息队列对比
Kafaka
分布式的、多分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色。
RocketMQ
低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广。
Pulsar
是下工代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构和设计。
BMQ
和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafaka集群。