首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡夫卡:高可用性所需的经纪人最低人数是多少?

卡夫卡:高可用性所需的经纪人最低人数是多少?
EN

Stack Overflow用户
提问于 2018-11-08 13:32:57
回答 2查看 12.1K关注 0票数 11

假设我想让高度可用的Kafka在小型部署上进行生产。我得用下面的话

代码语言:javascript
复制
min.insync.replicas=2 // Don't want to lose messages in case of 1 broker crash    
default.replication.factor=3 // Will let producer write in case of 1 replica disappear with broker crash

卡夫卡是否会开始制造新的复制品,以防1名经纪人崩溃,1名副本随车而去?

我们必须在任何条件下至少有default.replication.factor数量的经纪人才能继续工作吗?

EN

回答 2

Stack Overflow用户

发布于 2018-11-08 14:17:04

为了在Kafka中实现高可用性,您需要考虑以下因素:

1.复制因子:默认情况下,复制因子设置为1。生产环境推荐的replication-factor3,这意味着3代理是必需的

2.首选领袖选举:当代理被拆除时,其中一个副本将成为分区的新领导者。一旦失败的代理再次启动并运行,它就没有领袖分区,Kafka恢复了它在关闭时丢失的信息,然后它再次成为分区的领导者。默认情况下启用首选领导人选举。为了将切换回首选领导者时丢失消息的风险降到最低,需要将producer属性acks设置为all (显然,这需要付出性能代价)。

3.不洁领袖选举:您可以启用不干净的领袖选举,以便允许不同步的副本成为领袖并保持分区的高可用性。在不洁的领导人选举中,没有与新领导人同步的信息将被丢失。在一致性和高可用性之间存在一种权衡,这意味着在禁用了不干净的领导人选举之后,如果包含分区领袖副本的代理程序变得不可用,并且不存在不同步副本来替换它,则分区将变得不可用,直到领导人副本或另一个同步副本恢复联机为止。

4. :确认是指在使用acks属性确认消息之前提交新消息的副本的数量。当is设置为0时,消息立即被确认,而无需等待其他代理提交。当设置为1时,一旦领导者提交该消息,该消息将被确认。将acks配置为all提供了最高的一致性保证,但对集群的写入速度较慢。

5.最小同步副本min.insync.replicas定义了生产者必须可用的最小数量o个同步副本,这样才能成功地将消息发送到partition.If,min.insync.replicas设置为2acks设置为all,每个消息必须成功地写入至少两个副本。这意味着消息不会丢失,除非两个代理都失败(不太可能)。如果其中一个代理失败,分区将不再可用于写入。同样,这是一致性和可用性之间的权衡。

票数 20
EN

Stack Overflow用户

发布于 2018-11-08 14:10:23

那么,您可以拥有与replication.factor相同的min.insync.replicas。但可能会有一些挑战。

如我们所知,在代理中断期间,该代理上存在的所有分区副本都不可用。受影响分区的时间可用性取决于其其他副本的存在和状态。

如果分区没有其他副本,则分区将完全不可用。但是,如果分区有额外的不同步副本,则其中一个不同步副本将成为临时分区领导者。如果分区有附加副本,但没有一个是同步的,那么我们可以做出选择:我们要么选择等待分区领导者恢复联机--牺牲可用性 - ,要么允许一个不同步的副本成为临时分区领导者--牺牲一致性。

因此,在这种情况下,任何分区都会有一个额外的不同步副本,以避免分区领导者的丢失。这意味着,应该将min.insync.replicas设置为至少2。

要使最小ISR大小为2,复制因子也必须至少为2。但是,如果只有两个副本,而一个代理不可用,则ISR的大小将减少到最小值以下的1。因此,复制因子最好大于最小ISR大小(至少3)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53208811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档