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会在消费者数量变化时触发分区再均衡,确保每个分区都有消费者进行消费,避免数据丢失或重复消费。
相关推荐
DolphinScheduler社区20 分钟前
Apache DolphinScheduler + OceanBase,搭建分布式大数据调度平台的实践
大数据
时差9531 小时前
MapReduce 的 Shuffle 过程
大数据·mapreduce
kakwooi2 小时前
Hadoop---MapReduce(3)
大数据·hadoop·mapreduce
数新网络2 小时前
《深入浅出Apache Spark》系列②:Spark SQL原理精髓全解析
大数据·sql·spark
P.H. Infinity5 小时前
【RabbitMQ】03-交换机
分布式·rabbitmq
java1234_小锋6 小时前
讲讲RabbitMQ 性能优化
kafka
龙哥·三年风水7 小时前
群控系统服务端开发模式-应用开发-个人资料
分布式·php·群控系统
Dann Hiroaki8 小时前
GPU架构概述
架构
昨天今天明天好多天8 小时前
【数据仓库】
大数据
茶馆大橘8 小时前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel