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

67 阅读2分钟

走进消息队列

案例一;系统崩溃

解决方案 :解耦

案例二;服务能力有限

解决方案 :削峰

案例三;链路耗时长尾

解决方案:异步

案例四:日志存储

解决方案:日志处理

消息队列:保存消息的一个容器,支持高吞吐,高并发,高可用

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高级特性(事务消息、重试和死信队列、延迟队列)