kafka的不同客户端版本可以访问单个版本的Kafka代理。我知道我们可以启用'inter.broker.protocol.version'来使更新版本的Kafka接受旧版客户端。
例如,我们是否有办法让0.8和0.9版本的Kafka客户在0.9 Kafka经纪人身上工作?
答案 0 :(得分:0)
实际上inter.broker.protocol.version
与此没有任何关系,其唯一目的是支持群集的滚动升级,以防止新经纪人开始“谈论”较旧的经纪人无法理解的新协议版本的情况,这就是为什么您将inter.broker.protocol.version
设置为当前的群集版本。
关于客户端,只要满足一个简单规则就应该没有任何问题:客户端应该使用代理支持的协议版本,例如: 0.9代理将很乐意处理来自旧客户端的所有请求,但会在0.10中出现的请求版本上失败。基本上规则是upgrade brokers first, then clients
,以确保在代理上实现所有必要的逻辑,以成功处理客户端请求。
客户端在每个请求上发送请求版本,因此代理可以区分较旧的客户端和更新的客户端并正确处理它们的请求。
答案 1 :(得分:0)
更新
从版本0.10.2开始,Java客户端(生产者和消费者)已获得与旧代理进行通信的能力。版本0.11.0客户端可以与版本0.10.0或更新的代理进行通信。但是,如果您的代理超过0.10.0,则必须先升级Kafka群集中的所有代理,然后再升级客户端。版本0.11.0经纪商支持0.8.x和更新的客户。