Определение совместимости Kafka-клиента с kafka-broker

#java #apache-kafka #spring-kafka

#java #apache-kafka #spring-кафка

Вопрос:

В удаленном облачном кластере kafka брокеры kafka будут обновлены до новой версии (5.1), и поэтому применяется новый протокол kafka.

Теперь я должен обновить свой клиент kafka, чтобы иметь возможность подключаться. Прямо сейчас я использую следующие зависимости, относящиеся к kafka, в моем приложении для весенней загрузки:

 <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>1.3.8.RELEASE</version>

<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>2.0.1.RELEASE</version>

<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<version>1.0.3.RELEASE</version>

<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>1.0.3.RELEASE</version>

<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.9.0.1</version>

<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.9.0.1</version>
 

Я уже искал подходящую матрицу совместимости для kafka-клиентов и kafka-брокеров.

  • У кого-нибудь есть идея, как успешно выполнить обновление?
  • Есть ли у кого-нибудь матрица совместимости для этих зависимостей?

Комментарии:

1. Ясе Доган, как вы это решили?

Ответ №1:

Из https://github.com/spring-cloud/spring-cloud-stream/wiki/Kafka-Client-Compatibility

Матрица совместимости

  -------- -------------- ------------------ --------------- ------------- 
| Spring |  Spring for  |      Spring      | kafka-clients |    Kafka    |
|  Cloud | Apache Kafka |    Integration   |               |    Broker   |
| Stream |              | for Apache Kafka |               |             |
 -------- -------------- ------------------ --------------- ------------- 
| 2.1.x  | 2.2.x        | 3.1.x            | 2.0.0,        | 2.0.0,      |
|        |              |                  | 1.1.x,        | 1.1.x,      |
|        |              |                  | 1.0.x(*)      | 1.0.x,      |
|        |              |                  |               | 0.11.0.x(*) |
 -------- -------------- ------------------ --------------- ------------- 
| 2.0.x  | 2.1.x        | 3.0.x            | 1.1.x,        | 1.1.x,      |
|        |              |                  | 1.0.x(*)      | 1.0.x,      |
|        |              |                  |               | 0.11.0.x(*) |
 -------- -------------- ------------------ --------------- ------------- 
| 1.3.x  | 1.3.x,       | 2.3.x,           | 0.11.0.x(**), | 0.10.x.x    |
|        | 1.2.x,       | 2.2.x,           | 0.10.2.x      | or higher   |
|        | 1.1.x        | 2.1.x            |               |             |
 -------- -------------- ------------------ --------------- ------------- 
| 1.2.x  | 1.2.x,       | 2.2.x,           | 0.10.1.x      | 0.10.x.x    |
|        | 1.1.x        | 2.1.x            |               | or higher   |
 -------- -------------- ------------------ --------------- ------------- 
 

Другие источники

Ответ №2:

Согласно документации:

Ранее общим правилом было то, что брокер Kafka, с которым взаимодействовал клиент, должен был быть более новой версией, чем клиент. Теперь более новые версии Java-клиентов и других клиентов, поддерживающих KIP-35, таких как librdkaf, могут возвращаться к более старым типам запросов или выдавать соответствующие ошибки, если функциональность недоступна.

На странице проекта Spring для Apache Kafka есть ссылка на confluent matrix (вместе с совместимостью spring-kafka / kafka-clients).

Ответ №3:

Теперь поддерживается двунаправленная совместимость с клиентами, вам больше не нужно беспокоиться о матрице совместимости, для клиентов с поддержкой KIP-35 подходит любая версия, KIP-35 выпущен из протокола брокера — 0.10.0, Java-клиенты — 0.10.2

см.:

https://cwiki.apache.org/confluence/display/KAFKA/Compatibility Матрица

https://www.confluent.io/blog/upgrading-apache-kafka-clients-just-got-easier/