初识消息队列 | 青训营笔记

76 阅读2分钟

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

消息队列的应用场景

  • 案例一:系统崩溃

问题描述:逻辑执行时存储环节出问题导致数据丢失

解决方案:使用消息队列作中间存储,处理数据和存储环节可以异步化

  • 案例二:服务能力有限

问题描述:多订单时服务器承载不了高峰流量

解决方案:使用消息队列作中间存储,每次拿定量请求进行处理,达到一个“削峰”的效果

  • 案例三:链路耗时长尾

问题描述:逻辑处理时间长致使用户体验差

解决方案:使用消息队列作中间存储,通过消息队列同步多个线程操作实现异步化

  • 案例四:本地日志崩溃

问题描述:本地日志崩溃导致问题无法溯源,bug无法修复

解决方案:也是用消息队列,讲师似乎没说清楚

业界消息队列

  • Kafka:高吞吐场景下发挥出色
  • RocketMQ:实时场景应用多(阿里)
  • Pulsar:下一代云原生分布式消息队列
  • BMQ:类似Pulsar架构承接离线业务场景,逐步替换Kafka集群(字节)

Kafka

一条消息的自述

Producer ————> Broker ————> Consumer

P——>B 优化方式

将返回消息批量处理并压缩,以此增大吞吐量

image.png

Boker 消息文件结构

image.png

Consumer-Low Level

通过手动分配可以解决分配问题,但为了解决不能自动容灾的问题,需要引出另一个Consumer,设计进程启停

image.png

Consumer-High Level

通过自动分配可以自动处理新增的Consumer,从而使得运行状态趋于稳定

image.png

今天的记录到此,后续难度过高,个人理解偏差可能很大,因此不再记录以免误导个人以后的学习