Kafka的不同客户端版本是否可以命中一个单一版本的Kafka代理。我知道我们可以启用“inter.broker.protocol.version”使较新版本的kafka接受较旧版本的客户端。例如,有没有一种方法可以使0.8和0.9版本的kafka客户机在0.9 kafka代理上工作?。
v2g6jxz61#
事实上 inter.broker.protocol.version 与此没有任何关系,它的唯一目的是支持集群的滚动升级,以防止出现新代理开始“谈论”旧代理无法理解的新协议版本的情况,所以这就是您设置 inter.broker.protocol.version 到当前群集版本。关于客户机,只要满足一个简单的规则,就应该没有任何问题:客户机应该使用代理支持的协议版本,例如,0.9代理会很高兴地处理来自旧客户机的所有请求,但是在0.10中出现的请求版本上会失败。基本上规则是 upgrade brokers first, then clients 确保在代理上实现所有必要的逻辑,以成功处理客户端请求。客户机在每个请求上发送请求版本,因此代理可以区分较旧的客户机和较新的客户机,并正确处理它们的请求。
inter.broker.protocol.version
upgrade brokers first, then clients
fsi0uk1n2#
更新:从版本0.10.2开始,java客户机(生产者和消费者)已经获得了与旧代理通信的能力。版本0.11.0的客户端可以与版本0.10.0或更新的代理对话。但是,如果您的代理的版本早于0.10.0,则必须在升级客户端之前升级kafka集群中的所有代理。版本0.11.0代理支持0.8.x和更新的客户端。https://kafka.apache.org/documentation/#upgrade_11_0_0
2条答案
按热度按时间v2g6jxz61#
事实上
inter.broker.protocol.version
与此没有任何关系,它的唯一目的是支持集群的滚动升级,以防止出现新代理开始“谈论”旧代理无法理解的新协议版本的情况,所以这就是您设置inter.broker.protocol.version
到当前群集版本。关于客户机,只要满足一个简单的规则,就应该没有任何问题:客户机应该使用代理支持的协议版本,例如,0.9代理会很高兴地处理来自旧客户机的所有请求,但是在0.10中出现的请求版本上会失败。基本上规则是
upgrade brokers first, then clients
确保在代理上实现所有必要的逻辑,以成功处理客户端请求。客户机在每个请求上发送请求版本,因此代理可以区分较旧的客户机和较新的客户机,并正确处理它们的请求。
fsi0uk1n2#
更新:
从版本0.10.2开始,java客户机(生产者和消费者)已经获得了与旧代理通信的能力。版本0.11.0的客户端可以与版本0.10.0或更新的代理对话。但是,如果您的代理的版本早于0.10.0,则必须在升级客户端之前升级kafka集群中的所有代理。版本0.11.0代理支持0.8.x和更新的客户端。
https://kafka.apache.org/documentation/#upgrade_11_0_0