网站域名切换,济南营销网站建设公司,淄博优化公司,滕王阁环境建设网站1 整体架构 1.1 Zookeeper
Zookeeper 是一个分布式协调服务#xff0c;用于管理 Kafka 的元数据。它负责维护 Kafka 集群的配置信息、Broker 列表和分区的 Leader 信息。 Zookeeper 确保了 Kafka 集群的高可用性和可靠性。 但 Zookeeper 已经成为 Kafka 性能瓶颈#xff0c;…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。生产者将消息发送到选定的 PartitionLeader 接收到消息后将其追加到日志中。生产者可以选择等待 Leader 确认消息已写入并复制到一定数量的 Follower 后再继续发送下一个消息以确保数据可靠性。
2.2 消费者
消费者是从 Kafka 中读取数据的客户端应用程序。消费者订阅一个或多个 Topic并从中消费消息。 消费者组
消费者组是 Kafka 的一项功能允许多个消费者共同消费一个 Topic 的消息。每个消费者组中的消费者都会从一个或多个 Partition 中读取消息但同一 Partition 的消息只会被一个组内的消费者读取以实现负载均衡。如果一个消费者挂掉组内的其他消费者会自动接管它的分区以确保消息不会丢失。
消费数据的过程
消费者启动时连接到Kafka集群并订阅一个或多个主题。通过poll方法消费者从分配的分区中拉取消息并进行处理。处理完成后消费者会提交偏移量以标识已处理的位置。Kafka会在消费者数量变化时触发分区再均衡确保每个分区都有消费者进行消费避免数据丢失或重复消费。