Apache Kafka教程:主题复制

Apache Kafka是大数据世界中的分布式软件系统。 因此,对于这样的系统,需要具有所存储数据的副本。 在Kafka中,每个经纪人都包含某种数据。 但是,如果代理或计算机出现故障怎么办? 数据将丢失。 预防措施,Apache Kafka启用了复制功能,即使代理发生故障也可以确保数据丢失。 为此,将为任何特定代理中包含的主题创建一个复制因子。 复制因子是多个代理上的数据副本数。 复制因子值应始终大于1(介于2或3之间)。 这有助于将数据的副本存储在用户可以从中访问数据的另一个代理中。

例如,假设我们有一个群集,其中包含三个代理,即代理1,代理2和代理3。一个主题,即Topic-X被分为分区0和分区1,复制因子为2。
Apache Kafka教程:主题复制
因此,我们可以看到Topic-x的分区0在Broker 1和Broker 2中具有其副本。而且,Topic-x的Partition 1在Broker 2和Broker 3中具有其复制。

当同时存在实际数据及其副本时,显然会感到困惑。群集可能会混淆哪个代理应满足客户请求。为了消除这种混乱,Kafka完成了以下任务:

  • 它选择经纪人的一个分区作为领导者leader,其余的则成为其跟随者followers
  • 跟随者(经纪人)将被允许同步数据。但是,在有领导者在场的情况下,任何跟随者都不能满足客户的请求。这些副本称为ISR(同步副本)。因此,Apache Kafka为数据提供了多个ISR(同步复制)。

因此,仅领导者被允许服务客户请求。领导者处理分区的所有数据读写操作。领导者及其追随者由zookeeper确定(稍后讨论)。
如果持有分区领导者的代理由于任何故障而无法提供数据,则其相应的ISR复制副本之一将接管领导者。此后,如果前任领导者返回,它将尝试再次获得其领导者。
让我们看一个例子来理解领导者及其追随者的概念。
假设有一个具有以下三个代理1,2和3的集群。存在一个主题x,该主题具有两个分区,复制因子= 2。
Apache Kafka教程:主题复制
因此,为消除混乱,为Broker1下的Partition-0提供了领导作用。 因此,它是领导者,Broker2下的分区0将成为其副本或ISR。 同样,Broker2下的分区1是领导者,Broker3下的分区1是其副本或ISR。 如果代理1无法提供服务,则具有分区0副本的代理2将成为领导者。

相关推荐