Kafka broker와 java client의 버젼 하위호환성 정리

2019.02.14 13:23빅데이터/Kafka


하위 호환성은 기술 및 컴퓨터 분야에서 새 제품이 이전 제품을 염두에 두고 만들어진 제품에서 별도의 수정 없이 그대로 쓰일 수 있는 것을 뜻한다. 


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

# KIP-97: Improved Kafka Client RPC Compatibility Policy

Compatibility Matrix