4. Topic

  • java
  • java
  • kafka

一、什么是Topic

topic是一个存储消息的逻辑概念,是一堆消息的集合。

二、Topic的组成

topic是由多个分区(partition)组成的,消息要往哪个分区存储是由生产者决定的。

多个分区包含一个topic所有的消息,而这多个分区还有属于自己的副本分区负责冗余存储。

负责冗余存储的副本分区叫做Follower,负责读写的叫做Leader,相关概念如下所示:

  1. AR(Assigned Replicas:)一个partition的所有副本
  2. Leader: 负责读写的分区
  3. Follower :负责冗余存储的分区
  4. replica.lag.time.max.msopen in new window: follower与leader同步延迟时间。在指定时间内完成同步的分区会被算作ISR,否则算作OSR
  5. ISR(In-Sync Replicas):能够和 leader 保持同步的 follower + leader本身 组成的集合。
  6. OSR(Out-Sync Replicas):不能和 leader 保持同步的 follower 集合 AR=ISR+OSR

三、ISR的作用是什么?

先来看以下问题:

  • 1、生产者生产消息的时候,到底要写入多少副本才能算成功呢?
  • 2、当leader挂了之后,我们应该选择哪个follower来成为新的leader呢?

通过ISR,我们知道了哪些follower与leader保持着同步,那么:

  • 我们就可以在写入消息的时候,设置写入处于ISR中所有的副本才算成功,
  • 我们在进行leader切换的时候,就可以从ISR中选择对应的follower成为新的leader。 这就是ISR的作用:是通过副本机制实现消息高可靠,服务高可用时,不可缺少的一环;这也是为什么讲到副本不得不提到ISR的原因。
Loading...