Skip to content

Commit 83e9d88

Browse files
committed
Update Kafka Post " [카프카 핵심 가이드] CHAPTER 4. 카프카 컨슈머: 컨슈머 설정 및 오프셋과 커밋 "
1 parent 59119b5 commit 83e9d88

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

_posts/2025-08-14-Kafka-Consumer-Config-And-Commit.md

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: post
3-
title: " [카프카 핵심 가이드] CHAPTER 4. 카프카 컨슈머: 컨슈머 설정 및 오프셋과 커밋 "
3+
title: " [카프카 핵심 가이드] CHAPTER 4. 카프카 컨슈머: 컨슈머 설정 및 오프셋과 커밋 "
44
categories: [Kafka]
55
author: devFancy
66
---
@@ -64,7 +64,12 @@ author: devFancy
6464

6565
### session.timeout.ms
6666

67-
컨슈머가 브로커(그룹 코디네이터)에게 하트비트(생존 신호)를 보내지 않고 버틸 수 있는 최대 시간이다. (기본값: 10,000ms = 10초)
67+
> [공식 문서](https://kafka.apache.org/documentation/#consumerapi) 기준으로 Kafka Consumer 에서는 `session.timeout.ms` 기본값이 45초이다.
68+
>
69+
> 2021.04.21 기준, `session.timeout.ms` 값은 기본값이 10초에서 45초로 변경된 것을 확인할 수 있다. (관련 내용: [KIP-735: Increase default consumer session timeout](https://cwiki.apache.org/confluence/display/KAFKA/KIP-735%3A+Increase+default+consumer+session+timeout))
70+
71+
72+
컨슈머가 브로커(그룹 코디네이터)에게 하트비트(생존 신호)를 보내지 않고 버틸 수 있는 최대 시간이다. (기본값: 45,000ms = 45초)
6873

6974
만약 이 시간 동안 하트비트가 없으면, 코디네이터는 해당 컨슈머에 장애가 발생했다고 판단하고 그룹에서 제외시킨 뒤 **리밸런싱**을 시작한다.
7075

@@ -78,9 +83,9 @@ author: devFancy
7883

7984
`poll()` 호출 사이의 최대 시간 간격이다. (기본값: 300,000ms = 5분)
8085

81-
하트비트는 백그라운드 스레드에서 보내므로, 메시지를 처리하는 메인 스레드가 멈춰도 하트비트는 계속 전송될 수 있다.
86+
하트비트는 백그라운드 스레드에서 보내므로, 메시지를 처리하는 메인 스레드가 멈춰도 하트비트는 계속 전송될 수 있다.
8287

83-
이 설정은 이런 '좀비' 상태를 방지하기 위한 안전장치다. `poll()`을 호출한 후 다음 `poll()`이 이 시간 안에 호출되지 않으면, 컨슈머는 그룹에서 이탈하고 리밸런싱이 발생한다.
88+
`poll()`을 호출한 후 다음 `poll()`이 이 시간 안에 호출되지 않으면, 컨슈머는 그룹에서 이탈하고 리밸런싱이 발생한다.
8489

8590
메시지 처리 로직이 **5분 이상** 걸릴 가능성이 있다면 이 값을 반드시 늘려야 한다.
8691

@@ -91,6 +96,15 @@ author: devFancy
9196
* `max.poll.interval.ms`은 컨슈머의 **메시지 처리 로직**이 일을 하고 있는지(Progress) 감시하는 역할이다.
9297

9398

99+
#### 리밸런싱 방지하기 위한 방법
100+
101+
`max.poll.interval.ms` 설정을 잘못 다루면 컨슈머 그룹에서 리밸런싱이 발생할 수 있다.
102+
103+
`max.poll.records`를 비정상적으로 높게 설정하고, `max.poll.interval.ms`를 총 처리 시간보다 낮게 설정하면 리밸런싱이 발생할 수 있다.
104+
105+
이를 위해 애플리케이션의 총 처리 시간을 고려해서 `max.poll.records` 를 낮게 설정하거나 `max.poll.interval.ms` 를 늘리는 방안을 고려한다.
106+
107+
94108
## 파티션 할당 전략
95109

96110
리밸런싱이 발생했을 때, 그룹 내 컨슈머들에게 파티션을 어떻게 분배할지 결정하는 알고리즘이다. `partition.assignment.strategy`로 설정한다.
@@ -245,7 +259,7 @@ public class KafkaConsumerConfig {
245259

246260
* 이는 메시지 유실을 방지하는 확실한 방법이다.
247261

248-
* `AUTO_OFFSET_RESET_CONFIG`earliest로 설정했다.
262+
* `AUTO_OFFSET_RESET_CONFIG``earliest` 설정했다.
249263

250264
* 이를 통해 새로운 컨슈머 그룹이 서비스를 시작하거나 오프셋 정보가 유실되었을 때,
251265

@@ -261,7 +275,7 @@ public class KafkaConsumerConfig {
261275

262276
* `MAX_POLL_INTERVAL_MS_CONFIG`(10분)은 메시지 처리 로직의 동작(Progress)을 감시한다.
263277

264-
* 이 값들을 넉넉하게 설정하여, 일시적인 부하나 긴 처리 시간으로 인해 컨슈머가 '좀비'로 오인받아 그룹에서 쫓겨나는 상황을 방지한다.
278+
* 이 값들을 넉넉하게 설정하여, 일시적인 부하나 긴 처리 시간으로 인해 컨슈머가 처리가 멈춘 '실패' 상태로 간주되어 컨슈머 그룹에서 쫓겨나는 상황을 방지한다.
265279

266280
* 또한, `PARTITION_ASSIGNMENT_STRATEGY_CONFIG``CooperativeStickyAssignor`로 지정했다.
267281

_posts/2025-10-30-Modern-AI-Development-at-KarrotReview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ AI 기술이 빠르게 발전하면서 IT 서비스 회사 중 하나인 당근
6767

6868
첫 번째는 "VoC 플레이그라운드"를 통해 고객의 목소리를 수집하고 분석하는 방식이었고,
6969

70-
두 번째는 "AI 에이전트 시스템(KAMP)"을 직접 구축하여 모든 사용자에게 제공하려는 당근팀의 큰 그림이었습니다. (책의 내용 중에서 이 부분이 가장 크게 인상깊었다.)
70+
두 번째는 "AI 에이전트 시스템(KAMP)"을 직접 구축하여 모든 사용자에게 제공하려는 부분이였다. (책의 내용 중에서 이 부분이 가장 크게 인상깊었다.)
7171

7272
(이처럼 책에서 비중 있게 다루는 기술적인 내용들과 인상 깊게 본 구체적인 부분들은, 서두에 밝힌 깃허브 링크에 자세히 정리해 두었습니다.)
7373

0 commit comments

Comments
 (0)