하위 호환성은 기술 및 컴퓨터 분야에서 새 제품이 이전 제품을 염두에 두고 만들어진 제품에서 별도의 수정 없이 그대로 쓰일 수 있는 것을 뜻한다.
Kafka는 1.XX version으로 올라가기 전까지는 "one-way" 하위 호환성을 가지고 있었다. 신규 버젼의 broker는 옛날 버젼의 client를 지원했으나, 신규 버젼의 client는 옛날 버젼의 broker을 지원하지 못한다는 뜻이다. Client버젼을 높이기 위해서는 반드시 broker의 버젼을 높여야 했으므로, kafka client 업그레이드에 허들로 작용했다.
카프카 커뮤니티는 KIP-97 ticket을 통해 "two-way" 하위 호환성을 가지도록 하는 방안을 논의하였고 이후에 호환성 protocol을 정의하여 broker 버젼과 client 버젼이 동일하지 않더라도 동작가능하도록 정리하였다. 이를 통해 아래와 같은 Kafka broker - Kafka client의 호환성을 정리할수 있게 되었다.
Kafka broker 버젼 |
Java client 호환성 |
Kafka stream 호환성 |
Kafka Connect 호환성 |
0.10.0 |
0.10.1을 제외한 모든 버젼 가능 |
0.10.0 버젼만 가능 |
0.10.1을 제외한 모든 버젼 가능 |
0.10.1 |
모든 버젼 가능 |
모든 버젼 가능 |
0.10.1 이하 버젼 가능 |
0.10.2 |
모든 버젼 가능 |
모든 버젼 가능 |
모든 버젼 가능 |
0.11.0 |
모든 버젼 가능 |
모든 버젼 가능 |
모든 버젼 가능 |
1.0.0 |
모든 버젼 가능 |
모든 버젼 가능 |
모든 버젼 가능 |
상기와 같은 표와 같이 client가 호환된다고해서 모든 broker의 신규 기능을 쓸수 있는 것을 보장하지 않는다. client version이 올라갈때 마다 신규 브로커를 위한 기능이 추가 된다. 신규 client에서 새로운 기능의 api를 호출하면 옛날 버젼 broker에서는 당연히 사용이 불가하고, 호출시 ObsoleteBrokerVersion exception이 발생하므로 주의해야한다.
각 broker 버젼별 사용 불가한 client api들은 아래와 같이 정리할 수 있다.
Kafka broker 버젼 | Features that newer clients might notice missing |
0.10.0 | AdminClient requests # Topics # createTopics # deleteTopics # createPartitions # ACLs # createAcls # describeAcls # deleteAcls # Configs # describeConfigs # alterConfigs # Log Dirs # describeLogDirs # describeReplicaLogDirs # alterReplicaLogDirs |
0.10.1 | AdminClient # Topics # createPartitions # ACLs # createAcls # describeAcls # deleteAcls # Configs # describeConfigs # alterConfigs # Log Dirs # describeLogDirs # describeReplicaLogDirs # alterReplicaLogDirs |
0.10.2 | AdminClient # Topics # createPartitions # ACLs # createAcls # describeAcls # deleteAcls # Configs # describeConfigs # alterConfigs # Log Dirs # describeLogDirs # describeReplicaLogDirs # alterReplicaLogDirs |
0.11.0 | # Topics: # createPartitions # Log Dirs # describeLogDirs # describeReplicaLogDirs # alterReplicaLogDirs |
1.0.0 | N/A |
Reference
'빅데이터 > Kafka' 카테고리의 다른 글
Kafka Burrow에서 consumer의 lag을 정의하는(평가하는) 방법 - Consumer Lag Evaluation Rules (262) | 2019.08.02 |
---|---|
Burrow - kafka consumer의 지연(lag)을 모니터링할 수 있는 효과적인 opensource tool (249) | 2019.08.02 |
KSQL - Streaming SQL for Apache Kafka 개요 - readme 설명 번역 (265) | 2019.07.07 |
Apache Kafka에서 topic의 partition 개수 줄이는 방법? (268) | 2018.12.26 |
아파치 Kafka Consumer의 데이터 처리 내부 architecture 설명 및 튜닝포인트 (369) | 2018.12.24 |
아파치 Kafka Producer의 데이터 처리 내부 architecture 설명 및 튜닝포인트 (371) | 2018.12.24 |