💻Development
-
[카프카 핵심 가이드] CH4. 카프카 컨슈머: 카프카에서 데이터 읽기 (1)DevBook 2025. 2. 11. 21:24
4.1 카프카 컨슈머: 개념4.1.1 컨슈머와 컨슈머 그룹토픽의 메시지를 처리하기 위해서는 KafkaConsumer 객체를 생성하고, 대상 토픽을 구독하고, 메시지를 수신하여 처리해야 한다.카프카 컨슈머는 컨슈머 그룹의 일부로서 동작한다.각각의 컨슈머는 동일한 토픽에서 서로 다른 파티션을 할당받아 파티션의 메시지를 처리함따라서 컨슈머 그룹에 컨슈머를 추가하는 것은 카프카 토픽에서 읽어오는 데이터 양을 확장하는 주된 방법이다.컨슈머를 추가하여 단위 컨슈머가 처리하는 파티션과 메시지의 수를 분산시키는 것이 일반적인 규모 확장 방식정리하자면,1개 이상의 토픽에 대해 모든 메시지를 받아야 하는 서비스별로 새로운 컨슈머 그룹을 생성한다.컨슈머 그룹에 컨슈머를 추가하여 토픽에서 메시지를 읽거나 처리하는 규모를 확장..
-
[카프카 핵심 가이드] 추가 - 카프카 컨슈머 리밸런스DevBook 2025. 2. 11. 01:31
✅ two-phase rebalance protocol (리밸런스의 기본 동작 정의)컨슈머 그룹 내 한 개의 컨슈머가 그룹 리더로 선정된다. (가장 먼저 등록된 컨슈머)리밸런스는 두 단계로 구성된다.1단계 : JoinGroup그룹 코디네이터는 컨슈머가 그룹에 조인하기를 기다린다.컨슈머가 그룹 코디네이터에게 JoinGroup 요청을 보낸다.인코딩한 구독 정보 전달 (구독 토픽, 클라이언트가 정의한 유저 데이터)그룹 코디네이터는 그룹 리더에게 JoinGroup 응답으로 컨슈머들의 구독 정보를 보낸다.2단계 : SyncGroup그룹 리더는 구독 정보들을 디코딩하고, 각 컨슈머에게 파티션을 할당하여 해당 정보를 인코딩한다.해당 정보는 그룹 리더가 그룹 코디네이터에게 SyncGroup 요청을 보낼 때 함께 전송된..
-
[array] product of array except selfAlgorithm/LeetCode 2025. 2. 8. 17:46
✅ Problemhttps://leetcode.com/problems/product-of-array-except-self/ ✅ Approach & Solution방식1) 시간복잡도 : O(n)더보기자기 자신을 제외하고 자신의 왼쪽 곱셈 결과와 오른쪽 곱셈 결과 곱하기class Solution { public int[] productExceptSelf(int[] nums) { int[] result = new int[nums.length]; // 자기 자신의 왼쪽 곱셈 결과 포함시키기 int p = 1; // 자기 자신은 제외시켜야 하므로 1로 초기화 for (int i = 0; i = 0; i--) { result[i] *= p;..
-
[카프카 핵심 가이드] 3.6 파티셔너 (카프카 3.9 버전 반영)DevBook 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메..