본문 바로가기
Data PipeLine/Kafka

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

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

목적

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

Release note Clause

3.6.0

Notable Changes

  • 아파치 브로커는 이제 같은 포트에 대해 IPv4와 IPV6 리스너를 가지는 것을 지원함. advertised 리스너는 이미 동작중이고 이 non-advertised 리스너도 적용되는 의미
  • 아파치 주키퍼 의존성이 3.6가 EOF에 도달하여 3.8.1로 업그레이드 됨. 2.4버전의 클러스터에서는 바로 업그레이드가 되고 2.4 미만에서는 2.4 < 버전 < 3.6 사이로 한번 경유해야 함
  • log.message.timestamp.difference.max.ms  설정이 만료됨. 이제 log.message.timestamp.before.max.ms와 log.message.timestamp.after.max.ms 설정이 신규 추가됨
  • 카프카 스트림즈에서 특정 조건에 랙 간의 트래픽을 최소화할 수 있는 연산 작업 할당을 위해 새로운 작업 assignor인 RackAwareTaskAssignor를 도입함. 이 기능은 기존의 StickyTaskAssignor 및 HighAvailabilityTaskAssignor와 함께 동작함
  • 버전 3.1.0에 도입된 호환성 단절을 고려하여 미러메이커2에 새로운 replication.policy.internal.topic.separator.enabled 속성이 추가됨. 만약 3.0.x 이하 버전에서 업그레이드한다면 이 설정을 false로 해야할 수 있음
  • tiered storage 기능을 사용할 수 있게 됐지만 프러덕션 환경에서는 추천하지 않음
  • 트랜잭션 중단을 방지하기 위해 데이터 파티션에 트랜잭션 파티션 확인이 추가됨. 압축을 사용하는 Workloads에서 InvalidRecordExceptions 및 UnkownServerExceptions이 발생할 수 있음. 이 기능은 transcation.partition.verification.enable을 false로 설정하여 비활성화할 수 있으며 3.6의 기본값은 true임. 이 설정은 동적으로 변경할 수 있고 브로커에 적용됨. 예외 발생은 3.6.1에서 수정될 예정임

New Feature

  • 카프카 계층형 저장소가 도입됨
  • KRaft 메타데이터 트랜잭션이 도입됨
  • cli에 connect-plugin-path가 추가됨
  • plugin.discovery 워커 설정이 추가됨

Improvement

  • 메타데이터를 fetch하는데 실패했을 때 Admin.deleteRecords가 재시도하도록 함
  • kafka-topics.sh --describe 아웃풋에 대해 토픽ID를 포함하도록 doc를 갱신함
  • remote tier 내 로그에 대한 사이즈의 계산을 최적화함
  • 주키퍼를 3.8.2로 업그레이드함
  • docs 내 미러메이커 커넥터 설정을 포함함
  • kafka-metadata-quorum 아웃풋을 개선함
  • 프로듀서의 레코드 타임스탬프 유효성 검사를 개선함
  • 리스너가 로그의 시작에 있을 때 KRaft가 스냅샷을 선호하도록 함
  • 토픽을 삭제할 때 원격 세그먼트도 삭제하도록 함
  • 미러메이커2가 alterOffsets을 구현하도록 함
  • KRaft 내 위임 토큰을 지원함
  • 계층형 스토리지 메트릭을 개선함
  • 공통 커넥트 플러그인 내 버전이 지정된 인터페이스를 구현함

Bug

  • 커넥트 내 빠른 리밸런스가 일어날 경우 상태 레코드의 인터리빙 때문에 타스크 상태가 부정확해지는 버그가 수정됨
  • 커넥트 플러그인을 스캔하는 작업이 AccessDeniedException 예외와 함께 실패하는 버그가 수정됨
  • 윈도우에서 카프카가 KRaft와 함께 시작되지 않는 버그가 수정됨
  • ACL 설정 내 공백(" ")이 카프카 시작을 실패하게 만드는 버그가 수정됨
  • 필드에 0으로 시작하는게 있으면 JSonConverter가 실패하는 버그가 수정됨
  • 보류중인 리밸런스 동안 Exactly-once 소스 타스크가 시작을 실패하는 버그가 수정됨
  • 토픽 삭제가 디렉토리를 오프라인으로 바꿀 수 있는 버그가 수정됨

Task

  • assign()과 assignment()를 구현함
  • OffsetFetcher로부터 재사용할 수 있는 로직을 추출함

Test

  • -

Sub-task

  • 계층형 스토리지 설정의 토픽 레벨에 대해 클러스터나 브로커 레벨 설정을 추가함
  • 커넥터 오프셋 쓰기 REST API를 구현함
  • JoinGroup/SyncGroup APIs를 구현함
  • 하트비트 API를 구현함
  • 커넥터 오프셋 리셋 REST API를 구현함
  • 타스크에 대한 소스 토픽 파티션의 랙 정보를 얻도록 함
  • 타스크/클라이언트에 대해 cost function을 추가함
  • 원격 저장소가 토픽에 대해 활성화될 때 설정 유효성 검사를 추가함
  • 원격 스토리지에서 활성된 토픽에 대해 리더 선출 후 log-start-offset을 갱신하도록 함

3.6.1

Notable Changes

  • -

New Feature

  • -

Improvement

  • 주키퍼를 3.8.3으로 업그레이드 함

Bug

  • 주키퍼 내 삭제로 마킹된 토픽이 KRaft로 올바르지 못하게 마이그레이션 되는 버그가 수정됨
  • 주키퍼 브로커가 KRaft 메타데이터 스냅샷을 올바르지 못하게 처리하는 버그가 수정됨
  • 마이그레이션 후에 KRaft 컨트롤러가 주키퍼에 비어있는 상태를 쓰는 버그가 수정됨

Task

  • -

Test

  • -

Sub-task

  • -

참고

728x90
반응형