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
- -
참고
- 3.6.0 Release note doc
archive.apache.org/dist/kafka/3.6.0/RELEASE_NOTES.html - 3.6.1 Release note doc
archive.apache.org/dist/kafka/3.6.1/RELEASE_NOTES.html - 3.6.0 Notable Changes doc
Apache Kafka
728x90
반응형
'Data PipeLine > Kafka' 카테고리의 다른 글
[Kafka] 카프카 시작 시 주키퍼 id 충돌 이슈 (0) | 2024.02.28 |
---|---|
[Kafka] 3.5.x Release note 주요 내용 정리 (0) | 2024.02.18 |
[Kafka] 3.4.x Release note 주요 내용 정리 (0) | 2024.02.17 |
[Kafka] 3.3.x Release note 주요 내용 정리 (0) | 2024.02.16 |
[Kafka] 3.2.x Release note 주요 내용 정리 (0) | 2024.02.14 |