Study/카프카 핵심 가이드
-
[카프카 핵심 가이드] CH4. 카프카 컨슈머: 카프카에서 데이터 읽기 (2)Study/카프카 핵심 가이드 2025. 2. 13. 20:00
4.6 오프셋과 커밋poll()을 호출할 때마다 카프카에 쓰여진 메시지 중 컨슈머 그룹에 속한 컨슈머들이 아직 읽지 않은 레코드가 리턴됨카프카의 고유한 특성 중 하나는 컨슈머로부터의 응답을 받는 방식이 아니라는 점대신, 컨슈머가 카프카를 사용해 각 파티션에서의 위치를 추적할 수 있게 함파티션에서의 현재 위치를 업데이트하는 작업을 '오프셋 커밋'이라고 함카프카는 레코드를 개별적으로 커밋하지 않음컨슈머는 파티션에서 성공적으로 처리해 낸 마지막 메시지를 커밋하여 그 앞의 모든 메시지들 역시 성공적으로 처리되었음을 암묵적으로 나타냄poll()이 리턴한 마지막 오프셋 바로 다음 오프셋을 커밋하는 것이 기본적인 작동!카프카의 __consumer_offsets 토픽에 각 파티션별로 커밋된 오프셋을 업데이트하는 메시지..
-
[카프카 핵심 가이드] CH4. 카프카 컨슈머: 카프카에서 데이터 읽기 (1)Study/카프카 핵심 가이드 2025. 2. 11. 21:24
4.1 카프카 컨슈머: 개념4.1.1 컨슈머와 컨슈머 그룹토픽의 메시지를 처리하기 위해서는 KafkaConsumer 객체를 생성하고, 대상 토픽을 구독하고, 메시지를 수신하여 처리해야 한다.카프카 컨슈머는 컨슈머 그룹의 일부로서 동작한다.각각의 컨슈머는 동일한 토픽에서 서로 다른 파티션을 할당받아 파티션의 메시지를 처리함따라서 컨슈머 그룹에 컨슈머를 추가하는 것은 카프카 토픽에서 읽어오는 데이터 양을 확장하는 주된 방법이다.컨슈머를 추가하여 단위 컨슈머가 처리하는 파티션과 메시지의 수를 분산시키는 것이 일반적인 규모 확장 방식정리하자면,1개 이상의 토픽에 대해 모든 메시지를 받아야 하는 서비스별로 새로운 컨슈머 그룹을 생성한다.컨슈머 그룹에 컨슈머를 추가하여 토픽에서 메시지를 읽거나 처리하는 규모를 확장..
-
[카프카 핵심 가이드] 추가 - 카프카 컨슈머 리밸런스Study/카프카 핵심 가이드 2025. 2. 11. 01:31
✅ two-phase rebalance protocol (리밸런스의 기본 동작 정의)컨슈머 그룹 내 한 개의 컨슈머가 그룹 리더로 선정된다. (가장 먼저 등록된 컨슈머)리밸런스는 두 단계로 구성된다.1단계 : JoinGroup그룹 코디네이터는 컨슈머가 그룹에 조인하기를 기다린다.컨슈머가 그룹 코디네이터에게 JoinGroup 요청을 보낸다.인코딩한 구독 정보 전달 (구독 토픽, 클라이언트가 정의한 유저 데이터)그룹 코디네이터는 그룹 리더에게 JoinGroup 응답으로 컨슈머들의 구독 정보를 보낸다.2단계 : SyncGroup그룹 리더는 구독 정보들을 디코딩하고, 각 컨슈머에게 파티션을 할당하여 해당 정보를 인코딩한다.해당 정보는 그룹 리더가 그룹 코디네이터에게 SyncGroup 요청을 보낼 때 함께 전송된..
-
[카프카 핵심 가이드] 3.6 파티셔너 (카프카 3.9 버전 반영)Study/카프카 핵심 가이드 2025. 2. 6. 01:03
✅ 카프카 버전 3.3 이전에는?카프카 3.3 버전부터 파티셔너 관련 default configuration이 변경되었고, 새로운 configuration이 추가되었음아래 내용은 카프카 버전 3.3 이전의 파티셔너 내용임 ProducerRecord의 키값 역할 2가지메시지에 value와 함께 저장되는 추가적인 정보토픽에 속한 여러 개의 파티션 중 해당 메시지가 저장될 파티션을 결정짓는 기준점기본 파티셔너 사용할 경우 같은 키 값을 가진 모든 메시지는 같은 파티션에 저장됨 파티셔너 설정partitioner.class 설정 사용 (https://kafka.apache.org/32/documentation.html#producerconfigs_partitioner.class)DefaultPartitioner메..