如何使两个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集群中的生产者幂等?的主要内容,如果未能解决你的问题,请参考以下文章

Kafka快速入门(生产者)同步异步发送分区消息精确一次发送幂等性事务

Kafka 学习kafka 生产者幂等性

如何在一个应用程序中使用两个未互连的 Kafka 代理?

Kafka 事务和幂等详解

kakfa从入门到放弃: 相关概念,幂等性&事务

kakfa从入门到放弃: 相关概念,幂等性&事务