前言
本文主要对kafka中一些常用名词做下介绍。
Broker
Kafka集群有多个消息代理服务器(broker-server)组成。 一台 Kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。
Contorller : 会选举某个Broker作为Controller负责管理Leader,follower等选举调度。然后Kafka Controller本质其实是会监听zk上的数据进行调度。
Topic
主题,发布到Kafka集群的每条消息都有一个类别,用主题(topic)来表示。通常,不同应用产生不同类型的数据,可以设置不同的主题。一个主题一般会有多个消息的订阅者,当生产者发布消息到某个主题时,订阅了这个主题的消费者都可以接收到生成者写入的新消息。
Partition
分区,kafka集群为每个主题维护了分布式的分区(partition)日志文件,物理意义上可以把主题(topic)看作进行了分区的日志文件(partition log)。主题的每个分区都是一个有序的、不可变的记录序列,新的消息会不断追加到日志中。分区中的每条消息都会按照时间顺序分配到一个单调递增的顺序编号,叫做偏移量(offset),这个偏移量能够唯一地定位当前分区中的每一条消息。
Zookeeper
维护kafka元数据等信息,Broker信息是维护在zookeeper上的,这样扩容时候,就可以无限制扩容了
Broker在zk上面创建Controller节点,谁创建成功了,就是Controller。当Controller宕机了,其他Broker会监控再次创建Controller。
Producer
消息生产者,就是向 Kafka broker 发消息的客户端。
Consumer
消息消费者,向 Kafka broker 取消息的客户端。
Kafka消费者对象订阅主题并接收Kafka的消息,然后验证消息并保存结果。Kafka消费者是消费者组的一部分。一个消费者组里的消费者订阅的是同一个主题,每个消费者接收主题一部分分区的消息。消费者组的设计是对消费者进行的一个横向伸缩,用于解决消费者消费数据的速度跟不上生产者生产数据的速度的问题,通过增加消费者,让它们分担负载,分别处理部分分区的消息。
Consumer Group(CG)
消费者组,由多个 Consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。