Kafka 架构

1 整体架构

1.1 Zookeeper

Zookeeper 是一个分布式协调服务,用于管理 Kafka 的元数据。它负责维护 Kafka 集群的配置信息、Broker 列表和分区的 Leader 信息。

Zookeeper 确保了 Kafka 集群的高可用性和可靠性。

但 Zookeeper 已经成为 Kafka 性能瓶颈,Kafka 正在逐渐去 Zookeeper 化。

1.2 Broker

每个kafka server称为一个Broker,多个borker组成kafka cluster。

1.3 Topic

Topic 是 Kafka 中用于组织数据的逻辑单元,类似于数据库中的表。
一个Broker上可以创建一个或者多个Topic。同一个topic可以在同一集群下的多个Broker中分布

1.4 Partition

Partition 是 Topic 的子单元,用于实现数据的分布式存储和并行处理。每个 Partition 是一个有序的、不可变的消息队列,新的消息追加到队列末尾。
Kafka 会为每个 Topic 维护了多个 Partition。

每个 Partition 有一个 Leader 和多个 Follower 副本。Leader 负责处理所有读写请求,Follower 副本被动地从 Leader 同步数据。如果 Leader 发生故障,Zookeeper 会选举一个新的 Leader 以保证高可用性。比如图中,Broker 1 是 Topic 1 的 Partition 1 的 Leader,是 Partition 2、3 的 Follower。

2 生产者与消费者

2.1 生产者

生产者是向 Kafka 发送数据的客户端应用程序。生产者将消息发送到特定的 Topic 和 Partition 中。

向 Partition 发送数据的过程:

  • 生产者根据分区策略(如轮询、哈希分区键)选择目标 Partition
  • 生产者将消息发送到选定的 Partition,Leader 接收到消息后将其追加到日志中。
  • 生产者可以选择等待 Leader 确认消息已写入并复制到一定数量的 Follower 后再继续发送下一个消息,以确保数据可靠性。

2.2 消费者

消费者是从 Kafka 中读取数据的客户端应用程序。消费者订阅一个或多个 Topic,并从中消费消息。
消费者组

  • 消费者组是 Kafka 的一项功能,允许多个消费者共同消费一个 Topic 的消息。
  • 每个消费者组中的消费者都会从一个或多个 Partition 中读取消息,但同一 Partition 的消息只会被一个组内的消费者读取,以实现负载均衡。
  • 如果一个消费者挂掉,组内的其他消费者会自动接管它的分区,以确保消息不会丢失。

消费数据的过程:

  • 消费者启动时连接到Kafka集群并订阅一个或多个主题。
  • 通过poll方法,消费者从分配的分区中拉取消息并进行处理。
  • 处理完成后,消费者会提交偏移量以标识已处理的位置。
  • Kafka会在消费者数量变化时触发分区再均衡,确保每个分区都有消费者进行消费,避免数据丢失或重复消费。
相关推荐
小五传输18 分钟前
隔离网闸的作用是什么?新型网闸如何构筑“数字护城河”?
大数据·运维·安全
jkyy201434 分钟前
AI健康医疗开放平台:企业健康业务的“新基建”
大数据·人工智能·科技·健康医疗
蚁巡信息巡查系统1 小时前
政府网站与政务新媒体检查指标抽查通报如何面对
大数据·内容运营
脸大是真的好~1 小时前
分布式锁-基于redis实现分布式锁(不推荐)- 改进利用LUA脚本(不推荐)前面都是原理 - Redisson分布式锁
redis·分布式·lua
视界先声1 小时前
2025年GEO自动化闭环构建实践:监测工具选型与多平台反馈机制工程分享
大数据·人工智能·自动化
brzhang1 小时前
A2UI:但 Google 把它写成协议后,模型和交互的最后一公里被彻底补全
前端·后端·架构
百***24372 小时前
GPT5.1 vs Claude-Opus-4.5 全维度对比及快速接入实战
大数据·人工智能·gpt
GIOTTO情2 小时前
多模态媒体发布技术架构解析:Infoseek 如何支撑科技舆情的极速响应?
科技·架构·媒体
liuniansilence2 小时前
🚀 高并发场景下的救星:BullMQ如何实现智能流量削峰填谷
前端·分布式·消息队列
山沐与山2 小时前
【Redis】Redis集群模式架构详解
java·redis·架构