走进消息队列
案例一;系统崩溃
解决方案 :解耦
案例二;服务能力有限
解决方案 :削峰
案例三;链路耗时长尾
解决方案:异步
案例四:日志存储
解决方案:日志处理
消息队列:保存消息的一个容器,支持高吞吐,高并发,高可用
01.消息队列的前世今生
1.1 消息队列发展历程
1.2 消息队列对比
Kafka:高吞吐 RocketMQ:实时场景 Pulsar BMQ
02.Kafka
2.1 使用场景
搜索服务、直播服务、订单服务、支付服务
2.2 如何使用Kafka
创建集群-新增Topic-编写生产者逻辑-编写消费者逻辑
2.3 基本概念
2.3 基本概念-Offsset
消息在 相对位置信息,唯一id
2.3 基本概念-Replica
每个分片有多个Replica,Leader Replica将会从ISR中选出
2.4 数据复制
2.5 Kafka架构
2.6 一条消息的自述
2.7 Producer-批量发送
2.7 Producer-数据压缩
2.8 Broker-数据的存储
2.8 Broker-消息文件结构
2.8 Broker-磁盘结构
2.8 Broker-顺序写
2.8 Broker-如何找到消息
2.8 Broker 偏移量索引文件
2.8 Broker 时间戳索引文件
2.8 Broker-传统数据拷贝
2.8 Broker-零拷贝
2.9 Consumer-消息的接收端
2.9 Consumer-Low Level
2.9 Consumer-High Level
2.10 Consumer Rebalance
2.11 Kafka-数据复制问题
2.12 Kafka-重启操作
2.13 Kafka-替换、扩容、缩容
2.14 Kafka-负载不均衡
2.15 问题总结
①运维成本高
②对于负载不均衡的场景、解决方案复杂
③完全依赖Page Caches
④Comtroller和Coordinator和Broker在同一进程中,大量IO会造成其性能下降
03.BMQ
3.1 BMQ简介
兼容Kafka协议,存算分离,云原生消息队列
3.1 BMQ介绍
3.2 运维操作对比
BMQ重启、替换、扩容、缩容等秒级完成
3.3 HDFS写文件流程
3.4 BMQ文件结构
3.5 Broker-Partition状态机
3.5 Broker-写文件流程
3.5 Broker-写文件Failover
3.6 Proxy
3.7 多机房部署
3.8 BMQ-高级特性
3.9 泳道消息
开发->BOE->PPE->Prod
3.10 Databus
3.11 Mirror
3.12 Index
3.13 Parquet
3.14 总结
①BMQ架构模型(解决Kafka存在的问题)
②BMQ读写流程(Failover,写入状态机)
③BMQ高级特性(泳道、Databus、Mirror、Index、Parquet)
04.消息队列-RocketMQ
使用场景:注册、订单、库存、秒杀活动等
4.1 RocketMQ 基本概念
4.2 RocketMQ 架构
4.3 存储模型
4.4 RocketMQ 高级特性
4.4 高级特性-事务场景
4.4 高级特性-事务消息
4.4 高级特性-延迟发送
4.4 高级特性-延迟消息
4.4 高级特性-处理失败
4.4 高级特性-消费重试和死信队列
4.5 总结
RocketMQ基本概念(Queue,Tag)
RocketMQ底层原理(架构模型、存储模型)
RocketMQ高级特性(事务消息、重试和死信队列、延迟队列)