Apache Kafka Broker 在 Kafka 集群中扮演着核心角色,负责接收、存储、复制及分发消息。以下是 Kafka Broker 的工作流程概览:
1. 启动与初始化
-
加载配置:Kafka Broker 从
server.properties
文件加载配置参数,包括 Broker ID、监听地址、日志目录、ZooKeeper 连接信息等。 -
注册到 ZooKeeper:Broker 与 ZooKeeper 集群建立连接,将自己的元数据(如 Broker ID、主机名、端口)注册到指定的 ZooKeeper 路径,便于其他组件发现。
2. 主题管理与分区分配
-
主题创建:当管理员通过 Kafka 控制台或命令行工具创建主题时,Broker 会在 ZooKeeper 中记录主题信息,并在本地创建相应的日志目录。
-
分区分配:每个主题包含多个分区,Broker 根据配置策略(如轮询、范围等)将分区分配到集群中的各个 Broker 上。分区信息也存储在 ZooKeeper 中,供生产者和消费者查询。
3. 消息接收与存储
-
生产者连接:生产者与 Broker 建立 TCP 连接,发送消息到指定主题和分区。
-
消息批次:Broker 接收并缓存生产者发送的消息批次,直到达到
batch.size
或linger.ms
规定的条件后,再一次性写入磁盘。 -
日志存储:Kafka 使用分段日志(segment files)存储消息。每个分区对应一个日志目录,其中包含多个有序的日志文件和索引文件。新消息追加到当前活跃的日志文件尾部。
4. 副本管理与复制
-
ISR(In-Sync Replicas)维护:每个分区都有一个 Leader 副本和若干 Follower 副本。Leader 负责处理读写请求,Follower 通过拉取或推送方式从 Leader 复制消息。Broker 监控各副本的同步状态,维护 ISR 列表,只包含与 Leader 完全同步的副本。
-
复制流程:生产者发送的消息先被 Leader 副本接收并写入其日志。Follower 副本通过拉取请求从 Leader 获取新的消息,将其写入自己的日志。当 Follower 完成复制且与 Leader 保持同步时,它在 ISR 列表中。
-
副本选举:当 Leader 副本发生故障时,ZooKeeper 或内部控制器(Kafka 0.11+引入KRaft协议后可能无需ZooKeeper)会从 ISR 列表中选出一个新的 Leader,确保服务连续性。
5. 消费者交互与消息消费
-
消费者订阅:消费者连接到 Broker,订阅感兴趣的主题和分区。Broker 返回分区的元数据,包括 Leader 位置和当前的消费位移。
-
拉取请求:消费者定期向 Leader 副本发起拉取请求,指定要消费的分区和最大消息数量。Broker 从日志中读取相应偏移量处的消息,返回给消费者。
-
位移管理:消费者记录自己在每个分区上的消费进度(位移)。可以选择自动提交位移(每条消息、定时或手动),或者自行管理并在适当时候提交到 Broker。
6. 监控与运维
-
JMX 监控:Broker 提供丰富的 JMX 指标,可用于监控 Broker 状态、消息流量、磁盘使用、副本同步状况等。
-
日志与告警:Broker 记录运行日志,包括关键操作、错误信息等。结合监控系统设置告警规则,及时发现并处理潜在问题。
-
配置更新与滚动重启:在不影响服务的情况下,可以动态更新 Broker 配置并通过滚动重启使其生效。文章来源:https://www.toymoban.com/news/detail-852508.html
综上所述,Kafka Broker 的工作流程涵盖了从启动、主题管理、消息接收存储、副本复制、消费者交互到监控运维等多个环节,这些环节共同构成了一个高效、可靠的消息传输系统。在实际应用中,理解和掌握这些流程有助于进行有效的集群运维、性能调优以及故障排查。文章来源地址https://www.toymoban.com/news/detail-852508.html
到了这里,关于Kafka 实战 - Kafka Broker工作流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!