Kafka架构最全详解(图文全面总结)

来源:mikechen的互联网架构


Kafka是非常重要的消息中间件,在大型架构、以及大厂都有非常广泛的应用,本篇就重点谈谈Kafka的架构


Kafka

Kafka是分布式发布-订阅消息系统,Kafka最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

Kafka应用场景有:日志收集系统和消息系统。


Kafka架构

Kafka架构,由多个组件组成,如下图所示:


主要会包含:Topic、生产者、消费者、消费组等组件。

服务代理(Broker)

Broker是Kafka集群中的一个节点,每个节点都是一个独立的Kafka服务器。

它负责存储和处理发布到Kafka的消息,消息以主题(topic)的形式进行分类和组织。

如下图所示:

每个Broker可以承载多个主题的分区(partition),并使用日志文件(log)来持久化存储消息。

Topic(主题)

Topic可以理解为一个队列,Topic是消息的分类单元,一个 Topic 又分为一个或多个分区。

每个Topic可以被分成多个分区,每个分区在不同的Broker节点上进行存储。

Topic主题的数据以一系列有序的消息进行组织。

生产者(Producer)

Producer是向Kafka发送消息的客户端应用程序,它将消息发布到指定的主题。

可以选择将消息发送到特定分区,或让Kafka自动选择分区。

如下图所示:

生产者负责将消息进行缓冲和批量发送,以提高性能和吞吐量。

消费者(Consumer)

Consumer是从Kafka订阅和接收消息的客户端应用程序,它订阅一个或多个主题,并从指定的分区中拉取消息。

如下图所示:

消费者可以以不同的消费组(consumer group)形式组织,每个消费组内的消费者共同消费主题中的消息,以实现负载均衡和容错。

Consumer Group(消费组)

消费组是一组具有相同消费者组ID的消费者的集合,在同一个消费组内,每个分区只能由一个消费者进行消费,以实现负载均衡。

如果消费者组中的消费者数量多于主题分区的数量,那么一些消费者将处于空闲状态。

ZooKeeper

ZooKeeper是Kafka使用的协调服务,用于管理和协调整个Kafka集群。

它负责维护Broker的元数据、主题的配置信息和消费者组的状态信息。

如下图所示:

ZooKeeper还用于进行Leader选举、分区分配和故障恢复等操作。

以上

请使用浏览器的分享功能分享到微信等