【问题标题】:Different versions of clients, on single version of Kafka broker不同版本的客户端,在单个版本的 Kafka 代理上
【发布时间】:2018-06-16 06:03:50
【问题描述】:

不同客户端版本的 kafka 是否可以命中单个版本的 Kafka 代理。我知道我们可以启用“inter.broker.protocol.version”以使新版本的 Kafka 接受旧版本的客户端。

例如,我们有没有办法让 0.8 和 0.9 版本的 Kafka 客户端在 0.9 Kafka 代理上工作?

【问题讨论】:

    标签: java scala apache-kafka kafka-consumer-api


    【解决方案1】:

    其实inter.broker.protocol.version与此无关,其唯一目的是支持集群滚动升级,以防止新代理开始“谈论”旧代理无法理解的新协议版本的情况,所以这就是你设置的原因inter.broker.protocol.version 到您当前的集群版本。

    关于客户端,只要满足一个简单的规则就应该没有问题:客户端应该使用代理支持的协议版本,例如0.9 的代理会很乐意处理来自旧客户端的所有请求,但会在 0.10 中出现的请求版本上失败。基本上规则是upgrade brokers first, then clients,以确保在代理上实现所有必要的逻辑以成功处理客户端请求。

    客户端在每个请求上发送请求版本,因此代理可以区分旧客户端和新客户端并正确处理他们的请求。

    【讨论】:

      【解决方案2】:

      更新:

      从 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 1970-01-01
        • 2017-01-07
        • 2018-12-27
        • 1970-01-01
        相关资源
        最近更新 更多