我在做一个项目。我的目标是设计一个Kafka集群。防止一台机器死机时,Kafka上的数据全部消失的情况。我想知道Kafka复制是否可以设置在不同的机器上以便备份?
tnkciper1#
除了在主题中设置复制因子2或3以确保最终创建备份副本外,还应发布acks=all的消息,以确保acknowledges表示数据已写入所有副本。否则,如果acks=1,则仅提交1个副本后,您将收到一个ack;如果acks=0,则根本不会收到任何ack,因此您永远不会知道您发布的消息是否已进入kafka提交日志。同时将unclean leader election参数设置为false,以确保只有insync副本才能成为leader。
ltskdhd12#
在kafka中,您可以为一个主题定义复制因子,并通过这种方式在多个代理上复制每个分区。其中一个是生产者和消费者之间进行信息交换的领导者。另一个是追随者,他们从领导者那里获得消息的副本,以便同步。如果领导人下台,新的领导人选举将在所有同步副本之间开始。kafka将支持n-1个失败的代理,其中n是复制因子。
stszievb3#
是的,复制因子定义了这一点。
3条答案
按热度按时间tnkciper1#
除了在主题中设置复制因子2或3以确保最终创建备份副本外,还应发布acks=all的消息,以确保acknowledges表示数据已写入所有副本。否则,如果acks=1,则仅提交1个副本后,您将收到一个ack;如果acks=0,则根本不会收到任何ack,因此您永远不会知道您发布的消息是否已进入kafka提交日志。
同时将unclean leader election参数设置为false,以确保只有insync副本才能成为leader。
ltskdhd12#
在kafka中,您可以为一个主题定义复制因子,并通过这种方式在多个代理上复制每个分区。其中一个是生产者和消费者之间进行信息交换的领导者。另一个是追随者,他们从领导者那里获得消息的副本,以便同步。如果领导人下台,新的领导人选举将在所有同步副本之间开始。kafka将支持n-1个失败的代理,其中n是复制因子。
stszievb3#
是的,复制因子定义了这一点。