消息队列 | 青训营笔记

49 阅读2分钟

这是我参与[第五届青训营]伴学打卡活动的第12天

走进消息队列

消息队列的产生背景:系统崩溃,服务处理能力有限,链路耗时长尾,日志处理
对于系统崩溃背景的一个解决方案是解耦,在搜索行为记录和点击行为记录之间新增消息队列,消息队列再将对应的消息数据传给储存服务。 同时,消息队列可以起到延缓访问高峰(削峰)的作用和异步操作的作用\

消息队列的特点

消息队列(MQ),指保存消息的一个容器,本质是个队列,但是这个队列需要支持高吞吐,高并发,高可用的特性。

屏幕截图_20230209_220511.png

主要的消息队列

kafka:
分布式的,分区的,多副本的日志提交服务,在高吞吐场景下发挥较为出色。 RocketMQ:
低延迟,强一致,高性能,高可靠,万亿级容量和灵活的可扩展性,在一些实时场景中运用较广。 Pulsar:
云原生分布式消息流平台,集消息,储存,轻量化函数式计算为一体,采用存算分离的架构设计。 BMQ:
和Pulsar类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换对应的Kafka集群。

消息队列-Kafka

使用场景:
搜索服务,直播服务,订单服务,支付服务
Kafka使用流程:
创建集群->新增Topic->编写生产者逻辑->编写消费者逻辑\

屏幕截图_20230209_221512.png Offset:消息在partition内的相对位置信息,可以理解为唯一ID,在partition内部严格递增。 Replica:每个分片有多个Replica,Leader Replica将会从ISR中选出
Producer:批量发送,数据压缩 Broker:顺序写,消息索引,零拷贝 Consumer:Rebalance

消息队列-BMQ

兼容Kafka协议,存算分离,云原生消息队列

消息队列-RocketMQ

使用场景:针对电商业务线,如注册,订单,库存,物流等;同时,也会涉及到峰值时刻,如秒杀活动。