走进消息队列|青训营笔记

135 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

概览

消息队列的应用场景: 1.系统崩溃 2.服务处理能力有限 3.链路耗时长尾 4.日志如何处理 解决方案: 1.解耦 2.削峰 3.异步 4.日志处理

消息队列概念:

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

kafka

使用场景

搜索服务,直播服务,订单服务,支付服务,用户行为

如何使用

创建集群-新增Topic-编写生产者逻辑-编写消费者逻辑

基本概念

Topic:逻辑队列,不同Topic可以建立不同的Topic

Cluster:物理集群,每个集群种可以建立多个不同的Topic

Producer:生产,负责将业务消息发送到Topic种

Consumer:消费者,负责消费Topic中的消息

ConsumerGroup:消费者组,不同组Consumer消费进度互不干涉

Kafka架构:

image.png Producer-数据压缩 通过压缩,减少消息大小,目前支持Snappy,Gzip,LZ4,ZSTD压缩算法

Broker消息文件结构

image.png Broker-磁盘结构

image.png 帮Kafka提高吞吐或者稳定性的功能

Producer:批量发送、数据压缩

Broker:顺序写,消息索引,零拷贝

Consumer:Rebanlance

Kafka问题总结:

1.运维成本高

2.对于负载不均衡的场景,解决方案复杂

3,没有自己的缓存,完全依赖PageCache

4、Controller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降

消息队列-BMQ

兼容Kafka协议,存算分离,云原生消息队列 1.BMQ的架构模型,能解决kafka存在的问题 2。BMQ高级特性(泳道,Databus,Mirror,Index,Parquet)

RocketMQ

image.png 高级特性:事务消息,重试和死信队列,延迟队列