Kafka架构详解(6大架构组件)

Kafka架构详解(6大架构组件)-mikechen

Kafka定义

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

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

Kafka架构详解(6大架构组件)-mikechen

 

Kafka架构

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

Kafka架构详解(6大架构组件)-mikechen
主要会包含:Topic、生产者、消费者、消费组等组件。

 

服务代理(Broker)

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

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

如下图所示:

Kafka架构详解(6大架构组件)-mikechen

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

 

 

Topic(主题)

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

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

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

 

ZooKeeper

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

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

如下图所示:

Kafka架构详解(6大架构组件)-mikechen

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

 

生产者(Producer)

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

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

如下图所示:

Kafka架构详解(6大架构组件)-mikechen

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

 

 

消费者(Consumer)

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

如下图所示:

Kafka架构详解(6大架构组件)-mikechen

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

 

Consumer Group(消费组)

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

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

以上就是Kafka架构详解,更多Kafka内容请查看:Kafka教程(万字图文全面详解)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法