본문 바로가기
Data PipeLine/Kafka

[Kafka] 3.3.x Release note 주요 내용 정리

by 연습장이 2024. 2. 16.
728x90
반응형

목적

  카프카 브로커의 버전 업그레이드 시 발생할 수 있는 사이드 이펙트를 사전파악 및 대응, 신기술에 대한 도입 검토하기 위함

Release note Clause

3.3.0

Notable Changes

  • 새로운 클러스터에서 KRaft 모드가 운영 준비가 됨
  • 키가 없는 레코드에 기본적으로 사용되는 파티셔너가, 하나 이상의 브로커가 느릴 때 이상한 동작을 방지하도록 개선됨. 새로운 로직은 배치 처리 동작에 영향을 미칠 수 있으며 이는 batch.size 또는 linger.ms 설정을 통해 조정할 수 있음. 또한 partitioner.class=org.apache.kafka.clients.producer.internals.DefaultPartitioner를 사용하여 이전 동작으로 원복할 수 있음
  • 위에서 설명한 것처럼, KRaft 클러스터의 업그레이드 프로세스가 주키퍼 기반 클러스터와 약간 다름

New Feature

  • 소스 커넥터의 트랜잭션단위 EoS(End Of Stream, 메시지를 더 안정적으로 처리한다는 뜻)
  • 소스 커넥터 레코드와 오프셋에 대한 세밀한 커밋을 지원함
  • 배치된 오프셋 fetch 요청에 대한 Admin API를 추가함
  • KafkaStreams Topologies를 잠시 중지/ 재개할 수 있도록 함
  • 로그 회복 처리에 대한 메트릭을 추가함

Improvement

  • kafka-dump-log.sh를 사용할 때 배치의 수를 제한함
  • 커넥트 REST API에 대한 doc를 발생함
  • 설정과 관련된 직렬화와 역직렬화에 대한 validators를 추가함
  • kafka zero-copy에 대한 문서를 개선함
  • 삭제중인 레플리카에 대해 재초기화를 피함
  • ssl.keystore.type과 ssl.truststore.type의 문서를 개선함
  • kafka-metadata-quorum.sh를 구현함
  • KRaft 내 ISR에 Fenced 레플리카가 조인을 허용하지 못하도록 함

Bug

  • Sticky 파티션으로 인해 메시지가 고르지 않게 분포되어 일부 파티션에서는 비정상적인 지연이 발생되는 버그가 수정됨
  • 카프카 설정과 로그 설정 사이에 비일관성이 발생하는 버그가 수정됨
  • 타겟 파티션이 비어있을 때 미러메이커2 오프셋 동기화가 올바르지 않는 버그가 수정됨
  • PEM 파일을 사용할 때 암호화되지 않은 private keys를 사용하는 버그가 수정됨
  • 컨트롤러가 알수 없는 API를 사용할 때 EOFException이 발생하는 버그가 수정됨
  • doc 내에 BrokerTopicMetrics 메트릭이 생략된 것을 수정함
  • AbstractConfig 로그 출력 정보가 올바르지 못한 버그가 수정됨
  • kraft 컨트롤러가 토픽을 생성할 때 메트릭 이름과 동일한 토픽을 생성하는 것을 허용하는 버그가 수정됨
  • KRaft 모드에서 validateOnly 요청 필드가 CreatePartition 요청에 대해 동작하지 않는 버그가 수정됨
  • KRaft 모드에서 Add와 Subtract 다중 설정값이 지원되지 않는 버그가 수정됨
  • 키가 없는 메시지에 대해 DefaultStreamPartitioner가 하나의 파티션에 대해 멈출 수 있음
  • rebalanceInProgress 에러로 실패한 싱크 그룹이 협력적인 모드로 많은 리밸런스를 야기할 수 있는 버그가 수정됨
  • KRaft 내에서 셧다운 중인 브로커가 파티션 리더로 선출될 수 있는 버그가 수정됨
  • 브로커가 unfenced 상태여도 스냅샷을 발생하는 버그가 수정됨
  • log.cleaner.io.max.bytes.per.second 파라미터가 동적으로 바뀌지 않는 버그가 수정됨
  • onJoinPrepare 내 커밋 오프셋에 대해 컨슈머가 협력적인 리밸런스 동안 멈추는 버그가 수정됨
  • Kraft 컨트롤러 로컬 타임이 올바르게 계산되지 않는 버그가 수정됨
  • 엄청 큰 배치에 대해 QuorumController가 올바르게 처리하지 못하는 버그가 수정됨
  • KRaft 레플리카가 스냅샷에 포함되지 않은 세그먼트를 삭제할 수 있는 버그가 수정됨

Task

  • KRaft에 대한 빠른시작 가이드를 제공함

Test

  • -

Sub-task

  • 사용자가 다른 사용자를 위해 위임 토큰을 획득할 수 있도록 지원을 추가함
  • KRaft 내 metadata.version을 도입함
  • kraft 컨트롤러의 디스크 실패에 대한 복구 방법을 문서화함

3.3.1

Notable Changes

  • -

New Feature

  • -

Improvement

  • -

Bug

  • -

Task

  • -

Test

  • -

Sub-task

  • -

3.3.2

Notable Changes

  • -

New Feature

  • -

Improvement

  • KRaft 브로커 하트비트 타임아웃이 broker.session.timeout.ms를 초과하지 않도록 개선함

Bug

  • 정적 멤버가 다시 조인할 때 리밸런스 타임아웃이 갱신되지 않는 버그가 수정됨
  • 메시지 처리할 때 RecordCollector가 예외를 던지는 버그가 수정됨
  • 셧다운하는 KRaft 브로커가 무기한으로 지연되는 버그가 수정됨
  • 해임 후 KRaft 컨트롤러 스냅샷이 트리거 되지 않는 버그가 수정됨
  • 레코드 키가 없고 batch.size=0인 Producer.send 가 무한루프에 빠지는 버그가 수정됨
  • 토픽명에 "."이 포함되었을 때 이를 삭제 후 재생성할 수 없는 버그가 수정됨
  • 오프셋이 직렬화될 수 없음에도 소스 타스크 프로듀서가 트랜잭션을 커밋하는 버그가 수정됨
  • 메타데이터를 갱신하면서 컨슈머가 선호 읽기 레플리카를 리프레쉬할 수 없는 버그가 수정됨
  • 리밸런싱 동안 레코드를 처리할 때 streamThreads가 리밸런스 이벤트를 유실할 수 있는 버그가 수정됨
  • 정적 멤버를 지원하지 않는 멤버가 포함된 그룹에 조인 후ㅠ에 컨슈머 리밸런스가 멈추는 버그가 수정됨

Task

  • -

Test

  • -

Sub-task

  • -

참고

728x90
반응형