标签: apache-kafka bigdata
我想设置一个Apache kafka集群,以便在新项目中使用它。不幸的是,我找不到有关kafka处理代理失败和网络分区的详细解释。 例如,如果我有一个由2个或更多代理组成的集群,并且1个节点发生故障,那么只有一个节点继续接收消息吗? 如果是,当第二个再次出现时,它如何重新同步丢失的数据?
答案 0 :(得分:1)
看看here和here,了解Kafka使用的复制协议。 Kafka主题中的每个分区都有一个“领导者”,并将消息发送给领导者。消息被复制到“跟随者”。
所以要具体回答您的问题,我的理解是:
如果我有一个由2个或更多代理组成的集群,并且1个节点失败,那么只有一个节点继续接收消息吗?
无论如何,只有一个节点接受消息;领导者节点。如果关注者失败,则领导者继续接受消息。 如果领导者失败,则从最新的关注者中选出新的领导者。
如果是,当第二个再次出现时,它如何重新同步丢失的数据?
“跟随者”充当“领导者”的消费者,因此一旦被跟随的追随者将继续使用来自领导者的消息以重新同步。