消息队列原理与应用 | 青训营笔记

43 阅读2分钟

一. 走进消息队列

1.1 使用消息队列可以解决的一些问题案例

案例一:系统崩溃

image-20230209202801228.png

记录存储部分出现故障,该流程无法进行,

解决方案:解耦

image-20230209202916175.png

案例二 :服务器处理能力有限

image-20230209203005160.png

订单请求远远超过了服务器的处理能力

解决方案:削峰

image-20230209203129420.png

案例三:链路耗时长尾

image-20230209203222372.png

解决方案:异步

image-20230209203255124.png

案例四:日志存储在本地发生丢失

image-20230209203429331.png

1.2 什么是消息队列

image-20230209203513366.png

1.3 业界消息队列对比

image-20230209203806629.png

二 Kafka

2.1使用场景

image-20230209204231012.png

2.2 如何使用Kafka

image-20230209204256990.png

2.3 基本概念

image-20230209204434885.png

2.3.1 Offset

image-20230209204453451.png

2.3.2 Replica

image-20230209204918016.png

副本分布在不同的机器上来达到服务器容灾的作用

副本中Follwoer要和Leader保持同步,如果差距过大,则该Follower会被踢出Partition.

以前的版本是通过offset的差距来判断的,现版本是通过时间差来判断的.

2.4 数据复制

image-20230209204947298.png

每一个Broker代表了Kafka集群中的节点,所有节点最终组成了一个集群.

Controller相当于整个集群的大脑,负责对整个集群的副本和broker进行分配

2.5 Kafka架构

image-20230209205814128.png

2.6 一条消息的自述

image-20230209210518164.png

思考

image-20230209210830876.png

处理大量消息时需要耗费的时间十分巨大.

2.7 producer

2.7.1 produce - 批量发送

image-20230209210926171.png

2.7.2 producer - 数据压缩

image-20230209211206095.png

2.8 Broker

2.8.1 Broker - 数据的存储

image-20230209211304895.png

2.8.2 Broker - 消息的文件结构

image-20230209211428215

2.8.3 Broker - 磁盘结构

image-20230209211806156

2.8.4 Broker - 顺序写

image-20230209211921289

2.8.5 Broker - 如何找到消息

image-20230209212014159

2.8.6 Broker 偏移量索引文件

image-20230209212301600

image-20230209212336253