kafka 5

협력적 스티키 파티션 할당 전략

협력적 스티키 파티션 할당 전략협력적 스티키 파티션 할당 전략(Cooperative Sticky Partition Assignment Strategy)은 Apache Kafka 2.4 버전에서 도입된 새로운 파티션 할당 전략이다. 이 전략은 컨슈머 그룹의 리밸런스 과정에서 효율성과 안정성을 높이기 위해 설계되었다. 기존의 파티션 할당 전략들보다 더 나은 성능을 제공하며, 특히 컨슈머 그룹의 파티션 할당이 보다 협력적이고 일관되게 유지되도록 한다. 기존 전략과 무엇이 다른지 알기 위해 기존에 사용한 EAGER(즉각적인) 리밸런스 방식이 어떻게 발생하는지 알아야 한다. EAGER(즉각적인) 리밸런스위와 같이 카프카가 구성되어 있다고 가정해 보자. 컨슈머가 장애가 발생하거나 컨슈머가 추가되어 리밸런싱이 필요한..

kafka 2024.07.08

static membership

스태틱 멤버십스태틱 멤버십(Static Membership)은 Apache Kafka 2.3 버전에서 도입된 기능으로, Kafka 컨슈머 그룹(consumer group) 관리에서 사용됩니다. 이 기능은 컨슈머 그룹의 멤버십 관리를 보다 효율적으로 만들어 준다.  스태틱 멤버십을 이해하기 위해 동적 멤버십을 알아야 한다. 동적 멤버십을 설명 후 이를 개선한 스태틱 멤버십을 소개하도록 하겠다. 동적 멤버십컨슈머는 컨슈머 그룹에 가입하거나 탈퇴할 때 entity id를 할당받는다. 이 id를 기준으로 파티션과 매핑이 발생한다. consumer group의 consumer 1이 잠깐 리로드 되는 상황을 가정해 보자.  consumer 1이 consumer group에서 해제되는 순간 기존 컨슈머들은 새로운 i..

kafka 2024.07.08

리더 에포크

리더 에포크(Leader Epoch)리더 에포크(Leader Epoch)는 분산 시스템에서 리더 선출과 관련된 개념으로, 주로 Apache Kafka와 같은 분산 메시지 브로커 시스템에서 사용된다. 리더 에포크는 파티션 리더의 변경을 추적하기 위한 메커니즘이다. 리더 에포크는 분산 시스템에서 리더의 상태 변화를 추적하고, 일관성을 유지하며, 장애 발생 시 효율적인 복구를 지원하는 중요한 메커니즘이다. 리더 에포크가 왜 중요한지 한 예시를 통해 설명하도록 하겠다. 리더 변경시 문제점위 그림과 같이 팔로워 파티션과 리더 파티션이 있다고 가정해 보겠다. 리더 파티션은 message1까지 메시지가 커밋되었고, 팔로워 파티션은 message 0까지 커밋되었다.  리더 파티션에 장애가 발생해 정상적으로 작동하지 못..

kafka 2024.07.08

카프카 버전별 차이 및 업그레이드

카프카 버전 업그레이드 카프카 버전 업그레이드를 해야할 일이 생겨 버전별 차이 및 업그레이드 방법에대해 알아봤다. 자료는 kafka 공식 document에서 찾아보았다.  kafka broker와 kafka-clients만 업그레이드 해야 했기 때문에 kafka-connect와 streams는 업그레이드 내용을 찾아볼 때 제외하였다. 아래는 자료출처이다.    https://kafka.apache.org/downloads#2.0.0 Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.orghttps://kafka.apache.org/documentation/#upgrade_200_notable Apache KafkaApache ..

kafka 2024.07.08

Kafka 기초 및 명령어

카프카란?대용량 메시지 처리를 위한 오픈소스이다. 기존에는 end to end 연결 방 식의 아키텍처를 사용했다. 데이터 연동의 복잡성 증가했고, 각기 다른 데이터 파이프라인 연결구조 확장에 엄청난 노력필요 했다. 이를 해결하기 위해 kafka가 만들어졌다.  카프카의 구조 및 특징에 대해 알아보도록 하겠다.  카프카 구조 - 프로듀서 프로듀서란 브로커로 메시지를 보낼 개체이다. 카프카 브로커로 메시지를 보내기 위해 producer record를 작성해야 한다. producer record는 토픽, 파티션, 키, 밸류로 구성되어 있다. 토픽이란 브로커의 다양한 토픽 중 어디로  보낼지 설정하는 값이다. 밸류는 보내고자 하는 메시지를 의미한다. 토픽과 밸류는 필수 값으로 설정해야 한다.   partitio..

kafka 2024.07.08