如何使两个DC之间的kafka集群中的生产者幂等?
Posted
技术标签:
【中文标题】如何使两个DC之间的kafka集群中的生产者幂等?【英文标题】:How to make producer idempotence in kafka cluster among two DC? 【发布时间】:2021-12-18 02:13:49 【问题描述】:我对分布在 2 个 DC 之间的 kafka 集群有不小的问题。我想同时拥有:1)kafka 生产者幂等性和 2)从 DC1 到 DC2 的异步复制。众所周知,kafka 生产者幂等性要求在其属性中启用 acks=all。这也需要 DC1 和 DC2 中所有代理的确认。
我的问题是:如何更改 kafka 集群架构以实现使用幂等生产者的能力和 DC1 和 DC2 中经纪人的高可用性?更喜欢 DC1 的经纪人。
【问题讨论】:
一个普通的生产者应用程序无法跨集群做到这一点,但您是否研究过 MirrorMaker2 是如何实现这一点的? 这不是生产者的工作——而是经纪人。 我认为 DC1 和 DC2 是不同的集群,抱歉 【参考方案1】:参数min.insync.replicas
有助于解决问题。这意味着必须保存多少副本才能向生产者发送请求,即使配置了asks=all
。
link 1 link 2
【讨论】:
这个设置本身不控制幂等性,只控制持久性 如果我将此参数设置为等于brokers数量或更少,它有助于在更近的DC中实现幂等性,当然,生产者也需要普通的幂等设置。以上是关于如何使两个DC之间的kafka集群中的生产者幂等?的主要内容,如果未能解决你的问题,请参考以下文章