消息队列之Kafka

消息模型

重要概念

1.broker

Kafka 服务节点,一台 Kafka 服务器就是一个 Broker

2.分区 partition

分区(partition)是并行单位,broker 是机器。一个 broker 上挂多个分区,核心是把"扩展能力"和"机器数量"解耦开; 有序且顺序不可变得记录集,消息存放在分区日志里。一个分区只能属于一个topic,一个分区是一个topic的子集

2.偏移量 offset

用来唯一的标识分区中每一条记录和顺序,是线性增加的

其他:
术语 含义
Cluster 多个 Broker 组成的 Kafka 集群
Topic 消息的逻辑分类,例如 order-created、user-login
Replica / 副本 Partition 的副本,用于数据冗余和故障恢复
Leader 某个 Partition 当前负责读写的副本
Follower Partition 的其他副本,跟随 Leader 同步数据
ISR In-Sync Replicas,与 Leader 保持同步的副本集合
Controller Kafka 集群中负责管理分区、Leader 选举等工作的节点/角色

方案设计

实际使用时,需要定义好topic,每个topic对应多少个分区,Key是哪个字段(相同的Key会发往同一个分区,底层通过对key进行hash后取模,有三个分区就对3取模:hash(key)\3),消费者组启动后,会触发rebalance,对应的分区可能会发生变化

分布式

  • 这个例子中,有三台kafka服务器,这个topic对应的分区有3个,那么就会有3个leader,副本因子为3,那么每个分区会有2个follower,总的分区数是3*3=9
  • Leader 负责处理该 Partition 的写入以及消费者订阅的拉取。
  • Follower 从 Leader 拉取并同步数据。
  • Leader 故障时,Kafka 可以从符合条件的副本中选出新的 Leader。

适用场景

相关推荐
yunwei371 小时前
eBPF 入门实践教程十七:编写 eBPF 程序统计随机/顺序磁盘 I/O
linux·后端·性能优化
花间相见1 小时前
【计算基础|网络07】HTTPS(下):ECDHE 握手与优化
后端
QuantiCore_IO1 小时前
从请求风暴到可维护的数据管道:量化系统为什么需要批量接口?
后端·github·api
136096757231 小时前
.env 的三个必查项
后端
长安米粒贵1 小时前
接口超时了,为什么重试反而把系统打垮?聊聊超时预算的 4 个误区
后端
程序员Sunday1 小时前
Spring @Transactional 没回滚?按代理调用、异常和传播行为排查
java·后端·spring
付威20231 小时前
我用 100 行核心代码,做了一个能接入飞书的 Hermes 式智能体
人工智能·后端
苏三说技术1 小时前
为什么越来越多人用 ZXing?
后端
Rain的Java大神之路1 小时前
🔥13年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·后端·面试