【发布时间】:2021-04-24 14:15:12
【问题描述】:
建议的集群设置说明
- 2 个数据中心,每个都有 5 个节点的 Kafka 集群
- 集群具有相同的主题和使用它的相同生产者/消费者实例
- 没有跨集群的数据复制。所以集群 1 和 2 中的数据是不同的
- 不需要消息关联。 [如果生产者 1 开始向集群 2 发布消息,则在功能上没有任何区别,反之亦然]
我们想要实现的是,假设生产者 1 向集群 1 异步发送消息,但收到否定确认(在所有重试超时发生之后)。这在生产者回调方法中很容易检测到
收到此故障后,我们使用另一个 KafkaTemplate(具有集群 2 的详细信息)供生产者使用。现在生产者尝试将相同的消息发布到集群 2 [它也适用于其他方式,如果生产者 2 无法在本地发布,它将向集群 1 发送消息]
我们在这里得到的优势是
- 消息不会丢失并自动发布到另一个集群
- 由于每条消息都会发生此活动,因此一旦集群 1 备份,生产者 1 就能够自动向集群 1 发送消息
我们看到的一个缺点是,我们通过在元数据获取超时或否定确认的异常处理块中生成辅助集群来自己处理故障转移逻辑
我在网上找不到任何显示类似设置的地方。这种方法是否存在根本性的问题
【问题讨论】:
标签: apache-kafka spring-kafka kafka-producer-api failover