微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kafka HA 代理设置

如何解决Kafka HA 代理设置

我在两个位置 A 和 B(每个位置两个)运行 4 个 Kafka 代理。我希望进行设置,以便在任何 2 个代理变得不可用时应用程序可以继续运行,而不会丢失数据/重复事件(恰好一次语义),同时实现我所能达到的最佳性能

目前我正在查看以下设置:

log.retention.hours = 24
offsets.retension.minutes = 1500 (25hrs - figure its safer to have +1hr)
offset.topic.replication.factor = 4
min.insync.replicas = 2
transaction.state.log.min.isr = 2
transaction.state.log.replication.factor = 4
broker.rack = A or B
default.replication.factor = 4
num.partitions = 50
replica.selector.class = RackAwareReplicaSelector (for consumption)

消费者属性

auto commit = false
isolation level = read committed

生产者属性

idempotence = true
transaction_id = <some unique id>

读取偏移量与任何新记录(通过事务)以原子方式提交。

我的问题是,这些设置是否符合我对 HA 的期望接受标准?如果 ISR min 设置为 2,则同一位置的副本可能会首先 ACK,随后如果该位置离线,我将处于不确定状态,可能会丢失数据。

如果我设置 ISR min = 3,那么我需要 3 个代理才能让我的应用程序继续运行。

这是正确的吗?有没有更好的设置方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。