전체 글
-
[array] best time to buy and sell stockAlgorithm/LeetCode 2025. 2. 15. 16:13
✅ Problemhttps://leetcode.com/problems/best-time-to-buy-and-sell-stock/해당 문제는 배열의 값을 그래프로 나열해 시각화 하면 해결 방식 떠올릴 때 도움 됨 ✅ Approach & Solution방식1) 브루트 포스, 시간복잡도 : O(n^2)더보기모든 경우의 수익을 구하게 됨class Solution { public int maxProfit(int[] prices) { int maxProfit = 0; for (int i = 0; i 방식2) 저점과 현재 값과의 차이 계산, 시간복잡도 : O(n)더보기저점과 최대 수익 계산을 for문 안에서 연달아 수행class Solution { public int maxPro..
-
[카프카 핵심 가이드] 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 요청을 보낼 때 함께 전송된..