Apache Kafka 是一个分布式流处理平台,主要用于构建实时数据管道和流应用。Kafka 的架构设计以高吞吐量、持久化存储和水平扩展为目标。以下是 Kafka 架构的核心组件及其功能:

Producer(生产者):

生产者是向 Kafka 集群发送消息的客户端应用程序。生产者可以选择将消息发布到指定的主题(Topic)。 Topic(主题):

主题是 Kafka 中的消息分类,每个主题可以看作是一个消息队列,多个生产者可以向同一个主题发送消息。每个主题在内部进一步划分为多个 Partition(分区),Partition 是物理上的分布单元,每个 Partition 存储一部分主题的消息序列。 Partition(分区):

每个 Topic 分区都有多个副本,其中一个是 Leader 副本,其他的是 Follower 副本。生产者发送的消息会被路由到 Topic 下的某个 Partition,可通过键值对或自定义策略进行分区选择。分区使得 Kafka 可以实现水平扩展,并且支持并行读写操作。 Broker(代理):

Kafka Broker 是集群中的一个节点,它负责托管 Topics 的各个 Partitions。Broker 接收来自生产者的消息,并为消费者提供服务。Kafka 集群包含多个 Broker,通过 ZooKeeper 管理集群状态和服务发现。 Consumer(消费者):

消费者从 Kafka Broker 中拉取消息,订阅一个或多个 Topic。消费者属于特定的 Consumer Group,同一组内的消费者会进行负载均衡,确保消息被公平地消费且仅消费一次(只要不启用重复消费模式)。 Consumer Group(消费者组):

消费者组是一组消费者实例的逻辑集合,它们共同消费一个主题的所有分区。每个 Partition 在每个消费者组内只会分配给一个消费者实例,这样实现了多用户的订阅-发布模型以及消息的顺序处理。 ZooKeeper(协调服务):

ZooKeeper 负责维护 Kafka 集群的元数据信息,包括 Broker 的注册信息、Topic 的分区信息以及消费者组的消费偏移量等。它还用于选举 Broker 中的分区 Leader,以及在消费者组成员发生变化时触发分区的重新分配(Rebalance)。

这样的架构设计使得 Kafka 能够有效地处理大量实时数据,同时保证了数据的可靠传输和系统整体的高可用性。

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。