kafka基础

kafka基础知识

Posted by CDz on June 13, 2020

1. Kafka基本概念

  • broker
    • topic
      • partitions
  • client
    • producer
    • customer
      • customer group

kafka系统 = M*producer + N*broker + K*customer + ZK集群

1.1. broker

1.1.1. log(消息最小单位)

broker是kafka队列服务,client是连接器。

kafka内部最小单位是使用log写入所有的消息,也就是有保存消息的功能。

并且一直保存,就算是消费了还是在kafka中,有些会将kafka作为存储来使用。

1.1.2. topic(主题)

Broker中还有一个概念topic(主题)。

所有的操作都基于topic来完成,发送者发送消息到topic,消费者从topic下消费消息。

1.1.2.1. partitions(分区)

Topic还有一个概念,partitions(分区)。

将topic下消息按照一定的分配方式,分配到不通的partition(从 0 开始标识partition)下。

一般默认是轮询的方式,也可以自定义分区方式。

因为broker可以多实例部署,多个broker可以分担同一个topic不同patition的内容,做到生产者的高吞吐

1.1.2.2. replica

另外相同patition还可以有备份,实现高可用。(todo这里的概念还不是特别清晰,接下来需要进一步研究)

每个partition有多个replica复制份,做到消息的容灾能力

  • leader replica
    • 提供服务
  • follower replica
    • 只备份不提供服务
    • 故障转移使用

1.2. client

连接器。

Client连接后,可以生产数据,也可以消费数据。

1.2.1. producer生产者

通过创建topic时的分区,分区实现了生产者的高吞吐

1.2.2. customer消费者

1.2.2.1. customer group

消费者是跟customer group走的。

一个customer group可以有多个customer,也可以只有一个。

customer group可以实现,并发消费,实现消费者,高吞吐

  • customer group中的每个customer只能消费一个topic -> partition

1.2.2.2. Rebalance

customer如果有一个消费实例挂掉后,kafka会自动的将其分配到活着customer上。

也就是大名鼎鼎Rebalance。看起来非常智能,但是其中还有很多BUG。

1.2.2.3. customer offset(消费者位移)

kafka消息是存储起来的,消费时有一个offset指针位移,一直往前推进。