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主题的数据以一系列有序的消息进行组织。
ZooKeeper
ZooKeeper是Kafka使用的协调服务,用于管理和协调整个Kafka集群。
它负责维护Broker的元数据、主题的配置信息和消费者组的状态信息。
如下图所示:
ZooKeeper还用于进行Leader选举、分区分配和故障恢复等操作。
生产者(Producer)
Producer是向Kafka发送消息的客户端应用程序,它将消息发布到指定的主题。
可以选择将消息发送到特定分区,或让Kafka自动选择分区。
如下图所示:
生产者负责将消息进行缓冲和批量发送,以提高性能和吞吐量。
消费者(Consumer)
Consumer是从Kafka订阅和接收消息的客户端应用程序,它订阅一个或多个主题,并从指定的分区中拉取消息。
如下图所示:
消费者可以以不同的消费组(consumer group)形式组织,每个消费组内的消费者共同消费主题中的消息,以实现负载均衡和容错。
Consumer Group(消费组)
消费组是一组具有相同消费者组ID的消费者的集合,在同一个消费组内,每个分区只能由一个消费者进行消费,以实现负载均衡。
如果消费者组中的消费者数量多于主题分区的数量,那么一些消费者将处于空闲状态。
以上就是Kafka架构详解,更多Kafka内容请查看:Kafka教程(万字图文全面详解)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》