Kafka中概念的简单汇总
(1)Producer:Kafka生产者,负责往Kafka写数据的客户端;
(2)Consumer: Kafka消费者,负责从Kafka读取数据的客户端;
(3)ConsumerGroup:消费者组,必须以消费组的形式才能消费,一个消费者组可以包含多个消费者,任何一个消费者必须属于某个消费者组;
(4)Broker:Kafka节点,每个节点叫做一个Broker;
(5)Topic:主题,用于区分不同的数据,实现数据分类,分布式逻辑的概念,一个Topic可以对应多个分区;
(6)Partition:分区,用于实现Kafka中Topic的分布式存储,每个分区可以分布在不同节点上,每个分区可以有多份。
(7)Replication:副本,用于保证Kafka中分区的数据安全,每个分区的副本个数小于节点个数,两个角色:Leader,Follower;
(8)Segment:分区文件段,用于将分区中的数据按照一定的规则进行细分,加快查询性能,由两种文件组成:.log数据文件和.index索引文件
(9)KV:Kafka中写入数据也是KV结构
(10)Offset:每条数据在分区中的偏移量,第N条数据的Offset = N - 1,用于保证消费者按照Offset顺序消费,一致性。
Kafka集群 由 若干个Broker 组成,其中有一个是Controller,其余的节点为普通Broker节点,Controller由zk负责选举(kafka3.0版本开始已经摆脱了zk的依赖,能实现自己选举controller)。我们可以在Kafka集群内创建Topic。逻辑上的Topic 对应物理上的多个分区。我们可以指定Topic 有N个分区,同时也能指定每个分区有N个副本。(副本数不能大于节点数,即必须小于或等于Broker数)。副本中,一定有一个leader,其余的副本为follower。leader负责对外提供读写,而follower负责与leader同步数据,leader副本由controller负责选举。有了Topic之后,生产者可以往Topic 写入数据。生产者在写数据的过程中,会根据分区规则,决定数据写到Topic的哪一个分区,即写入Topic中哪一个Leader分区。此时,数据会写入分区内当前最新的Segment中。消费者在消费的时候会根据offset对指定的分区中的数据进行消费。(消费的时候必须指定offset)
kafka集群图示.png