带你快速搞懂让人陌生的Kafka术语

76 阅读5分钟

在初学Kafka时,一堆Kafka术语迎面而来。当时我就被弄晕了,在我弄懂之后,我就一直希望能够把这些术语仔仔细细的给各位小伙伴们讲一下,尤其是初学Kafka的童鞋们,希望这篇文章能够减少你们对这些术语的困惑。

如果只想简单知道这些术语的意思,也可以直接查看最后的小结。

Kafka术语

Topic(主题):在Kafka中,发布订阅的对象是主题(Topic),你可以为每个业务、每个应用甚至是每类数据都创建专属的主题。

Producer(生产者):向主题发布消息的客户端应用程序称为生产者,生产者程序通常持续不断地向一个或多个主题发送消息。

Consumer(消费者):订阅Topic消息的客户端应用程序就被称消费者。订阅之后,一旦生产者生产该主题消息,消费者就可以获得这些消息。同生产者一样,消费者也能够同时订阅多个主题的消息。

Clients(客户端):生产者和消费者统称为客户端。可以同时运行多个生产者和消费者实例,这些实例会不断地向Kafka集群中的多个主题生产和消费消息。

Broker(Kafka服务器端):Kafka的服务器端由被称为Broker的服务进程构成,即一个Kafka集群由多个Broker组成,Broker负责接收和处理客户端发送过来的请求,以及对消息进行持久化。而且一般来说我们会把Broker分配到多台服务器上,搭建成集群,因为这样能保证Kafka的高可用。

Replica(副本):副本其实就是备份的数据,备份的思路是把相同的数据拷贝到多台机器上。副本的数量是可以配置的,并且这些副本保存着相同的数据


以下两个术语都是属于Replica的一部分

Leader Replica(领导者副本(主)):Leader Replica是对外提供服务的副本

Follower Replica(追随者副本(从)):Follower Replica只是进行对Leader Replica的同步

这里稍微跑下题,讲一下副本的机制:

副本的工作机制其实很简单:生产者总是向领导者副本写消息;而消费者总是从领导者副本读消息。至于追随者副本,它只做一件事:向领导者副本发送请求,请求领导者把最新生产的消息发给它,这样它能保持与领导者的同步。


Partitioning(分区):分区其实就是把数据分成多份保存在不同的Broker上的机制。因为领导者副本可能积累太多数据导致单台Broker机器无法容纳,所以就有了分区的机制。其实分区其他分布式系统的分片原理是一样的。Kafka中的分区机制指的是将每个主题划分成多个分区,每个分区是一组有序的消息日志。生产者生产的每条消息只会被发送到一个分区中

那副本与分区的联系又是什么呢?实际上,副本是在分区这个层级定义的。每个分区下可以配置若干个副本,N个副本中只能有一个充当领导者角色,对外提供服务;其他N-1个副本是追随者副本,只是提供数据冗余之用。

Consumer Group(消费者组):所谓的消费者组,指的是多个消费者实例共同组成一个组来消费一组主题。这组主题中的每个分区都只会被组内的一个消费者实例消费,其他消费者实例不能消费它。引入消费者组可以提高消息消费的吞吐量,多个消费者同时进行消费。

Consumer Offset(消费偏移量):用来记录消费者的消费进度的变量。

Offset(消息偏移量):是分区中每条消息的位置信息,是一个单调递增且不变的值。

Rebalance(重平衡):这是Kafka中消费者消费者端实现高可用的重要手段。它的机制大概为,组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。(能够保证不会因为某个结点挂了而导致某个分区无法消费)


小结

以下是我从网上摘录下来的总结以及配图:

  • 消息:Record。Kafka是消息引擎嘛,这里的消息就是指Kafka处理的主要对象。
  • 主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
  • 分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。
  • 消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。
  • 副本:Replica。Kafka中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
  • 生产者:Producer。向主题发布新消息的应用程序。
  • 消费者:Consumer。从主题订阅新消息的应用程序。
  • 消费者位移:Consumer Offset。表征消费者消费进度,每个消费者都有自己的消费者位移。
  • 消费者组:Consumer Group。多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐。
  • 重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance是Kafka消费者端实现高可用的重要手段。

小结图片.jpg


希望这篇文章能够帮助到你。