这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
消息队列的应用场景
- 案例一:系统崩溃
问题描述:逻辑执行时存储环节出问题导致数据丢失
解决方案:使用消息队列作中间存储,处理数据和存储环节可以异步化
- 案例二:服务能力有限
问题描述:多订单时服务器承载不了高峰流量
解决方案:使用消息队列作中间存储,每次拿定量请求进行处理,达到一个“削峰”的效果
- 案例三:链路耗时长尾
问题描述:逻辑处理时间长致使用户体验差
解决方案:使用消息队列作中间存储,通过消息队列同步多个线程操作实现异步化
- 案例四:本地日志崩溃
问题描述:本地日志崩溃导致问题无法溯源,bug无法修复
解决方案:也是用消息队列,讲师似乎没说清楚
业界消息队列
- Kafka:高吞吐场景下发挥出色
- RocketMQ:实时场景应用多(阿里)
- Pulsar:下一代云原生分布式消息队列
- BMQ:类似Pulsar架构承接离线业务场景,逐步替换Kafka集群(字节)
Kafka
一条消息的自述
Producer ————> Broker ————> Consumer
P——>B 优化方式
将返回消息批量处理并压缩,以此增大吞吐量
Boker 消息文件结构
Consumer-Low Level
通过手动分配可以解决分配问题,但为了解决不能自动容灾的问题,需要引出另一个Consumer,设计进程启停
Consumer-High Level
通过自动分配可以自动处理新增的Consumer,从而使得运行状态趋于稳定
今天的记录到此,后续难度过高,个人理解偏差可能很大,因此不再记录以免误导个人以后的学习