Kafka基本术语介绍
Kafka 基本术语
对于 Kafka 基本原理的介绍,可以通过对以下基本术语的介绍进行。
2.1.1 Topic
主题。在 Kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。
topic 相当于消息的分类标签,是一个逻辑概念。
2.1.2 Partition
分区。topic 中的消息被分割为一个或多个 partition,其是一个物理概念,对应到系统上就是一个或若干个目录。
partiiton 本身是一个 FIFO 队列,其中的消息是有序的。但,在 Partition 间无法保证消息的顺序性。
2.1.3 segment
段。将 partition 进一步细分为了若干的 segment,每个 segment 文件的最大大小相等。
2.1.4 Broker
Kafka 集群包含一个或多个服务器,每个服务器节点称为一个 broker。
假设某个 topic 中有 N 个 partition,集群中有 M 个 Broker,broker 与 partition 间的数量关系:
若 N>=M,且(N%M=0),则每个 broker 上会平均存储 N/M 个 partition。
若 N>M,且(N%M!=0),这其中会出现 broker 上分配的 partition 不平均的情况。这种情况要避免。
若 N<M,这种情况会出现有的 broker 上没有分到 partition 的情况。
2.1.5 Producer
生产者。即消息的发布者,其会将某 topic 的消息发布到相应的 partition 中。
2.1.6 Consumer
消费者。可以从 broker 中读取消息。
一个消费者可以消费多个 topic 的消息。
一个消费者可以消费同一个 topic 中的多个 partition 消息。
一个 partition 允许多个无关消费者同时消费。
2.1.7 Consumer Group
consumer group 是 kafka 提供的可扩展且具有容错性的消费者机制。组内可以有多个消费者,它们共享一个公共的 ID,即 group ID。组内的所有消费者会协调在一起平均消费订阅主题的所有分区。
Kafka 可以保证在稳定状态下,一个 partition 中的消息只能被同一个 consumer group 中的一个 consumer 消费,而一个组内 consumer 只会消费某一个或几个特定的 partition。当然,
一个消息可以同时被多个 consumer group 消费。
总结:
组内 consumer 与 partition 的关系 1:n
partition 与组内 consumer 的关系 1:1
这种设计方式的好处是:实现简单,弊端是:消息分配不均。
组中 consumer 数量与 partition 数量的对应关系如下。
2.1.9 Partition Leader
每个 partition 有多个副本,其中有且仅有一个作为 Leader,Leader 是当前负责消息读写的partition。即所有读写操作只能发生于 Leader 分区上。
2.1.10 Partition Follower
所有 Follower 都需要从 Leader 同步消息,Follower 与 Leader 始终保持消息同步。
partition leader 与 follower 是主备关系,而非主从。
2.1.11 ISR
ISR,In-Sync Replicas,是指副本同步列表。
AR,Assigned Replicas
OSR,Outof-Sync Replicas
AR = ISR + ORS
2.1.12 offset
偏移量。每条消息都有一个当前 Partition 下唯一的 64 字节的 offset,它是相对于当前分区第一条消息的偏移量。
2.1.13 offset commit
Consumer 从 partition 中取出一批消息写入到 buffer 对其进行消费,在规定时间内消费
完消息后,会自动将其消费消息的 offset 提交给 broker,以让 broker 记录下哪些消息是消费过的。当然,若在时限内没有消费完毕,其是不会提交 offset 的。
提交的 offset 被写入到了一个特殊的主题__consumer_offsets 中。
中 kafka0.9 版本之前,offset 是由 zk 负责保存管理的,之后版本由 kafka broker 负责保存管理。
2.1.14 Rebalance
当消费者组中消费者数量发生变化,或 Topic 中的 partition 数量发生了变化时, partition的所有权会在消费者间转移,即 partition 会重新分配,这个过程称为再均衡 Rebalance。
再均衡能够给消费者组及 broker 集群带来高可用性和伸缩性,但在再均衡期间消费者是无法读取消息的,即整个 broker 集群有一小段时间是不可用的。因此要避免不必要的再均衡。
2.1.15 HW 与 LEO
HW,HighWatermark,高水位,表示 Consumer 可以消费到的最高 partition 偏移量。HW保证了 Kafka 集群中消息的一致性。确切地说,是在 broker 集群正常运转的状态下,保证了partition 的 Follower 与 Leader 间数据的一致性。
LEO,Log End Offset,日志最后消息的偏移量。消息是被写入到 Kafka 的日志文件中的,这是当前最后一个写入的消息在 Partition 中的偏移量。
对于 leader 新写入的消息,consumer 是不能立刻消费的。leader 会等待该消息被所有ISR 中的 partition follower 同步后才会更新 HW,此时消息才能被 consumer 消费。
2.1.16 Broker Controller
Kafka 集群的多个 broker 中,有一个会被选举为 controller,负责管理整个集群中 partition和副本 replicas 的状态。
当 partition leader 宕机后,broker controller 会从 ISR 中选举出一个 Follower 做为新的leader。所谓选举就是从 ISR 中找到第一个 Follower,直接让其当选新的 leader。
Broker Controller 是由 zk 选举出来的。
2.1.17 Zookeeper
Zookeeper 负责维护和协调 broker,负责 Broker Controller 的选举。
2.1.18 Coordinator
Coordinator 一般指的是运行在每个 broker 上的 group Coordinator 进程,用于管理
Consumer Group 中的各个成员,主要用于 offset 位移管理和 Rebalance。一个 Coordinator 可
以同时管理多个消费者组。
2.1.16 Broker Controller
Kafka 集群的多个 broker 中,有一个会被选举为 controller,负责管理整个集群中 partition和副本 replicas 的状态。
当 partition leader 宕机后,broker controller 会从 ISR 中选举出一个 Follower 做为新的leader。所谓选举就是从 ISR 中找到第一个 Follower,直接让其当选新的 leader。
Broker Controller 是由 zk 选举出来的。
————————————————
版权声明:本文为CSDN博主「himal-himal」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/superiorpengfight/article/details/109270562