我们正在使用 springboot 应用程序来开发 kafka 流应用程序。到目前为止,我们只使用单一经纪人,所以我们没有遇到任何问题
但是一周前我们创建了集群模式,包含 3 个 Zookeeper 和 3 个 kafka 代理,以实现更高的可用性
我们像下面这样配置我们的应用程序。
spring.kafka.bootstrap-servers=x.x.x.x:9093,x.x.x.x:9093,x.x.x.x:9093
领导者 1 领导者 2 领导者 3
所以我们正在测试下面的服务器停机行为是结果
预期行为:它必须通过消耗和产生数据来连续运行而没有任何挣扎
实际行为:如果我们关闭任何一台服务器,它将抛出异常,并且在应用程序停止一段时间后代理不可用
在分析原因时,我们发现消费主题具有领导者 1,而产生数据的主题具有领导者 2,所以当我停止领导者 1 时,我们认为它会更改为下一个领导者,但事实并非如此?
这是默认行为还是我们做错了什么?
谁能建议我如何克服这个问题?