消息队列 | 青训营笔记

41 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

消息队列的概念

什么是消息队列(MQ)

消息队列,是保存消息的一个容器,是一个队列,这个队列需要支持高吞吐,高并发,高可用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。

生产者消费者模型

  1. 把数据放到消息队列叫做生产者
  2. 从消息队列里边取数据叫做消费者

消息队列的使用场景

应用解耦,流量削峰,异步处理,消息通讯

使用案例

系统崩溃

使用消息队列进行解耦。防止某一个服务崩溃导致整个系统崩溃。

服务处理能力有限

使用消息队列进行削峰。生产者将消息放入消息队列,消费者每次从消息队列中获取处理能力内数量的请求进行处理。

链路耗时长尾

使用消息队列进行异步处理。用户发起订单后,将扣减库存、通知商家等行为加入消息队列,然后直接向用户返回下单成功。减少用户等待时间。

日志如何处理

将日志信息放入消息队列,消费者从消息队列中取出日志信息,推送给ES等服务。

业界消息队列对比

Kafaka

分布式的、多分区的、多副本的日志提交服务,在高吞吐场景下发挥较为出色。

RocketMQ

低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,在一些实时场景中运用较广。

Pulsar

是下工代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体、采用存算分离的架构和设计。

BMQ

和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的Kafaka集群。