5

我有 3 个代理和几个主题的 kafka 集群,每个主题有 5 个分区。现在我想为分区设置复制因子。

我可以为 kafka 主题的分区设置的最大复制因子是多少?

4

2 回答 2

7

复制因子决定了每个分区的复制数量,这允许 Kafka 在集群中的服务器发生故障时自动故障转移到这些副本,以便在发生故障时消息仍然可用

分区副本分布在代理之间,一个代理应该保留一个副本,这意味着我们不能拥有比代理数量更多的副本

最大复制因子 <= 代理数量。

这也意味着确定min.insync.replicas,这意味着它总是小于或等于复制因子

min.insync.replicas 表示 <= 复制因子

min.insync.replicas是您愿意随时在线以继续运行和接受新传入消息的最小数据副本数。

理想情况下,复制因子 3如上所述很好,但是,根据用例,您可以将复制因子调整为小于 2(意味着高风险),同时大于 3 提供更好的可用性,但需要更多开销和更大的大小。

在决定复制因子时,还要考虑以下几点:

A):Broker Size复制因子直接影响整个 Broker 磁盘大小

所以高复制因子需要更大的磁盘大小

B)大量分区复制:在大量分区复制的情况下,会增加额外的延迟。

于 2019-11-12T00:23:11.340 回答
2

一个代理只能为一个分区托管一个副本。

因此,如果您的集群有 3 个代理,那么您可以拥有的最大复制因子是 3。

虽然理论上可以设置具有非常大的复制因子的主题,但实际上将其设置为高于 4 几乎没有任何好处。副本用于高可用性和持久性,并且基本上确定在丢失任何数据之前可以脱机的代理数量。如果您有 3 个副本,则所有 3 个代理不太可能同时崩溃/失败。

于 2019-11-11T19:30:34.543 回答