Advertisement

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****HWLEO

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 选举出来的。

全部评论 (0)

还没有任何评论哟~