简介什么是Kafka脑裂 ?

Kafka脑裂是分布式系统高可用(High Avaliablity)场景下容易出现的问题。在Kafka中,只有一个控制器(Controller)负责分区的Leader选举,同步Broker的新增或删除消息。然而,由于网络问题,可能同时有两个Broker认为自己是Controller,这时候其他的Broker就会发生脑裂,不知道该听从谁的。这种情况下,系统可能会出现状态不一致,导致一系列问题。

为了解决这个问题,Kafka引入了Controller Epoch的概念。每当新的Controller产生时,就会通过Zookeeper生成一个全新的、数值更大的Controller Epoch标识。其他Broker在知道当前Controller Epoch后,如果收到由控制器发出的包含较旧Epoch的消息,就会忽略它们。这样可以确保集群中只有一个Controller存在,从而避免脑裂现象的发生。

发表评论

后才能评论