我想设置一个apache kafka集群,以便在新项目中使用它。不幸的是,我找不到任何关于kafka如何处理代理失败和网络分区的详细解释。例如,如果我有一个由2个或更多代理组成的集群,其中一个节点出现故障,那么唯一一个正常运行的节点会继续接受消息吗?如果是,当第二个数据再次出现时,它如何重新同步其丢失的数据?
发布于 2018-11-05 19:17:23
看看here和here对Kafka使用的复制协议的描述。Kafka主题中的每个分区都有一个' leader ',并将消息发送给leader。消息被复制到“关注者”。
因此,具体回答你的问题,我的理解是:
如果我有一个由2个或更多代理组成的集群,其中一个节点出现故障,那么唯一一个正常运行的节点会继续接受消息吗?
只有一个节点接受消息,那就是领导者节点。如果追随者失败,领导者会继续接受消息。如果领导者失败了,就会从那些最新的追随者中选出新的领导者。
如果是,当第二个数据再次出现时,它如何重新同步丢失的数据?
“follower”充当“leader”的消费者,因此,一旦被带回,追随者将继续使用来自leader的消息以恢复同步。
https://stackoverflow.com/questions/53123521
复制相似问题