Kafka 生产者将消息发布到辅助集群
Kafka producer posting messages to secondary cluster
提议的集群设置说明
- 2 个数据中心,每个数据中心有 5 个节点的 Kafka 集群
- 集群具有相同的主题和相同的 producer/consumer 个实例
- 没有跨集群的数据复制。所以集群 1 和 2 中的数据是不同的
- 不需要消息相关性。 [如果生产者 1 开始 post向集群 2 发送消息,反之亦然]
我们想要实现的是,假设生产者 1 post 向集群 1 异步发送消息,但收到否定确认(在发生所有重试超时之后)。这在生产者回调方法中很容易检测到
收到此故障后,我们使用另一个 KafkaTemplate(具有集群 2 的详细信息)供生产者使用。现在生产者尝试 post 将相同的消息发送到集群 2 [它也适用于其他方式,如果生产者 2 无法在本地 post,它将向集群 1 发送消息]
我们到这里的好处是
- 消息没有丢失并且post自动发送到另一个集群
- 由于每个消息都会发生 activity,因此一旦集群 1 备份,生产者 1 就可以自动将消息发送到集群 1
我们看到的一个缺点是,我们通过在元数据获取超时或否定确认的异常处理块中生成辅助集群来自己处理故障转移逻辑
我在网上找不到任何显示类似设置的地方。这种方法是否存在根本性错误
当然;只需配置 2 套基础设施 beans - 生产者和消费者工厂、容器工厂、模板。
您不能为此使用 Boot 的自动配置,但您可以自己定义 bean。
提议的集群设置说明
- 2 个数据中心,每个数据中心有 5 个节点的 Kafka 集群
- 集群具有相同的主题和相同的 producer/consumer 个实例
- 没有跨集群的数据复制。所以集群 1 和 2 中的数据是不同的
- 不需要消息相关性。 [如果生产者 1 开始 post向集群 2 发送消息,反之亦然]
我们想要实现的是,假设生产者 1 post 向集群 1 异步发送消息,但收到否定确认(在发生所有重试超时之后)。这在生产者回调方法中很容易检测到
收到此故障后,我们使用另一个 KafkaTemplate(具有集群 2 的详细信息)供生产者使用。现在生产者尝试 post 将相同的消息发送到集群 2 [它也适用于其他方式,如果生产者 2 无法在本地 post,它将向集群 1 发送消息]
我们到这里的好处是
- 消息没有丢失并且post自动发送到另一个集群
- 由于每个消息都会发生 activity,因此一旦集群 1 备份,生产者 1 就可以自动将消息发送到集群 1
我们看到的一个缺点是,我们通过在元数据获取超时或否定确认的异常处理块中生成辅助集群来自己处理故障转移逻辑
我在网上找不到任何显示类似设置的地方。这种方法是否存在根本性错误
当然;只需配置 2 套基础设施 beans - 生产者和消费者工厂、容器工厂、模板。
您不能为此使用 Boot 的自动配置,但您可以自己定义 bean。