kafka架构
2023-08-19 17:48:00 0 举报
AI智能生成
kafka 架构图
作者其他创作
大纲/内容
协议
AMQP
rabbitmq
MQTT
发布订阅
JMS
点对点
发布订阅
核心概念
broker
一个kafka进程就是一个broker
一个broker可以容纳多个topic
producer
消息生产者
consumer
消息消费者
topic
生产者和消费者面向的都是一个topic
topic只是一个逻辑上的概念,broker上真实存储的是partition
partition
一个topic可以分为多个partition
每个partition内部都是一个有序的队列
一个topic中partition的数量,就是每个consumer group中消费该topic的最大并行度数量
segment
一个partition可以分为多个segement,每个segment都是固定大小
每个segment对应.index和.log两个文件
.index存储索引,.log存储数据,index 和 log 文件以当前 segment 的第一条消息的 offset 命名
consumer group
消费者组内每个消费者负责消费不同分区的数据
一个分区只能由一个组内消费者消费
一个partition可以被多个消费者组内的消费者消费
offset
记录某个consumer group在某个partiton中当前已经消费到达的位置
kafka0.10之前,offset存储在zk上,kafka0.10之后,offset以一个特殊的topic的形式存储在broker上
leader
每个partition可以有多个副本,其中有且仅有一个作为leader
leader负责当前partition的读写
follower
follower跟随leader,实时从leader同步数据
leader挂掉时,会从剩下的follower中选出新的leader
partition
isr
同步
LEO
HW
消息
重复消费
有序性
可靠性
架构
特点
分布式
高性能
发布订阅
高可用
消费者
消费者分区分配策略
offset
消费方式
生产者
消息分区
指明 partition 的情况下,直接将指明的值直接作为 partiton 值
没有指明 partition 值但有 key 的情况下,将 key 的 hash 值与 topic 的 partition
数进行取余得到 partition 值
数进行取余得到 partition 值
既没有 partition 值又没有 key 值的情况下,第一次调用时随机生成一个整数(后
面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition
值
面每次调用在这个整数上自增),将这个值与 topic 可用的 partition 总数取余得到 partition
值
ack
-1
partition的leader和isr中的follower全部落盘成功后返回ack
数据重复
0
producer不等待borker的ack
数据丢失
1
partition的leader落盘成功后即返回ack
数据丢失
存储
0 条评论
下一页