一、Kafka基本概念整理

1、什么是kafka?

  • Kafka最初由LinkedIn公司使用Scala开发的一个分布式、多分区、多副本,基于ZK协调的内部基础设施,先已捐给Apache。

  • Kafka是一个流平台,主要用来发布和订阅数据流。

  • Kafka具有水平可伸缩性、容错性、快速性

2、Topic

  • Topic是Kafka的核心抽象,Topic是将信息记录到的某个类别或订阅源名称。

  • 可用来区分业务系统。

  • 特点

    • Topic始终是多用户的,即一个Topic可以有0个、1个或者多个订阅写入数据的consumer

    • 多个Producer可以向一个Topic当中发送消息。

    • 多个consumer可以消费同一个Topic中的消息。

3、Producer

  • 消息的创造者,主要工作就是产生消息,然后发送给消息队列

4、Consumer

  • 消息的消费者

5、Broker

  • 物理概念,Kafka集群中每一个Kafka节点

  • 指的就是Kafka Server这个服务,可以把部署了KafkaServer的这台机器看做是一个Broker

  • Broker用来接收来自Producer的消息,为消息设置Offset,并把消息保存到磁盘

一、Kafka基本概念整理

6、Partition

  • 分区

  • 一个Topic可以分布到多个Broker上,一个Topic可以分为多个Partition,每个Partition都是一个FIFO有序队列。

  • 一般情况下,Partition的数量设置为Broker数量的整数倍。

  • 一个Partition只允许同一个ConsumerGroup的一个消费者消费,不允许同组多个Consumer同时消费一个Partition

  • 为什么设计分区

    • 为了并发读写,加快读写速度,这样可以极大的提高并发响应

    • 运用多分区的存储,利于数据的均衡

    • 加快数据的康复速率。一旦某台机器挂了,全部集群只需要康复一部分数据,可加快故障康复时间

7、Replication

  • 副本

  • 为保证集群中某个节点发送故障时,该节点上的Partition数据不丢失,而进行备份。

  • 一个Topic的每个Partition都有若干副本,一个Leader和若干个Follower

  • Leader只有一个,负责消息的读写,即所有读写操作只能发生在Leader副本上

  • Follower有多个,实时从Leader同步数据。当Leader发生故障时,某个Follower会成为新的Leader。

8、Segment

  • 一个Topic可以分为若干个Partition,Partition还可以细分为segment

  • 一个Partition物理上由多个segment组成

  • 每个segment有.log和.index两个文件,每个log文件承载详细的数据,每条消息都有一个Offset,

    • index文件是对log文件的索引。Consumer查找offset时运用二分法依据文件名去定位到哪个Segment,然后解析Message,匹配到对应的offset的Message

    • 一、Kafka基本概念整理

    • 前20位数字代表offset偏移量,

一、Kafka基本概念整理

9、Consumer group

  • 消费者组。

  • 由多个Consumer组成,共享一个公共的id(group.id)

  • 一条消息只能被同一个ConsumerGroup中的一个Consumer消费。

  • 一条消息可以被多个ConsumerGroup消费。

10、Controller

  • *控制器

  • 多个Broker中,有一个会被选举为Controller

  • 管理整个集群的分区和监控副本的状态

  • 例:

    • Leader副本故障,由Controller负责为该Partition重新选举新的Leader副本。

    • 当检测到同步列表发生变化,由Controller通知集群中的所有Broker更新其元数据缓存信息

    • 当增加某个Topic分区的时候也会由Controller管理分区的重新分配工作。

  • 选举过程

    • 当broker启动的时候,都会创建KafkaController对象,但是集群中只能有一个leader对外提供服务

    • 这些每个节点上的KafkaController会在指定的zookeeper路径下创建临时节点,只有第一个成功创建的节点的KafkaController才可以成为leader,其余的都是follower。

    • 当leader故障后,所有的follower会收到通知,再次竞争在该路径下创建节点从而选举新的leader

一、Kafka基本概念整理

11、ISR、OSR、AR、HW、LEO

  • ISR

    • In-Sync-Replicas,副本同步队列

    • 由Leader维护

    • 任意一个Follower超过同步阈值(replica.lag.time.max.ms),都会被剔除ISR

  • OSR

    • Outof-Sync-Replicas

    • 被剔除的Follower会存入OSR列表中

    • 新加入的Follower也会先存入OSR中

  • AR

    • AR = ISR + OSR

  • LEO

    • LogEndOffet

    • 表示每个Partition的log最后一条Message的位置

  • HW

    • HighWatermark,高水位

    • 是指ISR中所有节点都已复制完的消费的Offset。

    • 也是Consumer所能获取到的消息的最大Offset。.

一、Kafka基本概念整理