副本


前篇提过一个主题可以有多个分区,分布在多个broker上,但如果某个broker挂了,这个borker上的数据不就丢了吗?

为了解决这个问题,就有了副本的概念。

副本其实就是备份,我们可以在创建主题时指定副本数量。假设我们有三个broker,我们创建一个2分区,3副本的主题:

./kafka-topics.sh --bootstrap-server 10.211.55.3:9092 --create --topic test2 \
--partitions 2 \
--replication-factor 3

查看主题详情:

首先我们先看partition-0分区,replicas的值为2,1,0,意味着这个分区的数据分布在broker-2broker-1broker-0上,而Leader等于2,表示broker-2上的这一块数据是主数据,其他borker上的数据都是副本:

此时,无论是生产者还是消费者来读写消息时,都是从Leader上读写,Leader会将数据同步到其他两个Broker上作为来备份,且仅仅是备份(与Leader对应,副本被称为Follower)。

当Leader挂了之后,会经过选举重新为分区选一个Leader。

分区1也是同理:

文章作者: 周君
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 周君 !
评论