我有 3 个代理和几个主题的 kafka 集群,每个主题有 5 个分区。现在我想为分区设置复制因子。
我可以为 kafka 主题的分区设置的最大复制因子是多少?
我有 3 个代理和几个主题的 kafka 集群,每个主题有 5 个分区。现在我想为分区设置复制因子。
我可以为 kafka 主题的分区设置的最大复制因子是多少?
复制因子决定了每个分区的复制数量,这允许 Kafka 在集群中的服务器发生故障时自动故障转移到这些副本,以便在发生故障时消息仍然可用
分区副本分布在代理之间,一个代理应该保留一个副本,这意味着我们不能拥有比代理数量更多的副本
最大复制因子 <= 代理数量。
这也意味着确定min.insync.replicas,这意味着它总是小于或等于复制因子
min.insync.replicas 表示 <= 复制因子
min.insync.replicas是您愿意随时在线以继续运行和接受新传入消息的最小数据副本数。
理想情况下,复制因子 3如上所述很好,但是,根据用例,您可以将复制因子调整为小于 2(意味着高风险),同时大于 3 提供更好的可用性,但需要更多开销和更大的大小。
在决定复制因子时,还要考虑以下几点:
A):Broker Size复制因子直接影响整个 Broker 磁盘大小
所以高复制因子需要更大的磁盘大小
B)大量分区复制:在大量分区复制的情况下,会增加额外的延迟。
一个代理只能为一个分区托管一个副本。
因此,如果您的集群有 3 个代理,那么您可以拥有的最大复制因子是 3。
虽然理论上可以设置具有非常大的复制因子的主题,但实际上将其设置为高于 4 几乎没有任何好处。副本用于高可用性和持久性,并且基本上确定在丢失任何数据之前可以脱机的代理数量。如果您有 3 个副本,则所有 3 个代理不太可能同时崩溃/失败。