컨슈머 랙 - 처리량 이슈 부분에서 질문이 있습니다.
398
작성한 질문수 3
안녕하세요, 먼저 좋은 강의 잘 듣고 있습니다 (- -) (_ _)
컨슈머 랙 모니터링 - 처리량 이슈 파트에서 궁금한 점이 생겨서 질문드립니다.
파티션 1개 - 컨슈머 1개에서
파티션 2개 - 컨슈머 2개가 되면 linear하게 처리량이 늘어난다고 하셨는데, 어떻게 처리량이 늘어나는 건지 조금 이해가 안가서요.
상단과 같은 구조는 하나의 컨슈머가 0,1,2,3... 이렇게 하나씩 처리를 한다고 하면, 하단과 같은 구조는 다음과 같이 레코드를 동시에 소비하게 되어 2배로 늘어난다는 말씀일까요?
컨슈머 1 - 0 : 2 : 4 : 6 : ...
컨슈머 2 - 1 : 3 : 5 : 7 : ...
( : 는 레코드가 소비되는 시점을 구분한 것 입니다!)
만약 그렇다면, offset은 어떻게 관리가 되는건지도 궁금하네요..
답변 2
1
안녕하세요
컨슈머의 데이터 처리량이 초당 10개라고 한다면 1개 파티션에는 최대 1개의 컨슈머가 붙기 때문에 전체 파이프라인에서 처리량은 초당 10개로 제한됩니다. 반면, 2개 파티션에 컨슈머가 2개 붙게 되면 초당 20개의 데이터가 처리될 수 있기 때문에 데이터 처리량이 컨슈머 1개에 비해 2배로 늘게 된다고 볼 수 있습니다. 쉽게 생각하여 데이터를 처리하는 컨베이어 벨트가 두개로 늘어난다고 생각하시면 좋겠습니다.
그리고 오프셋 관리는 파티션별로 개별로 기록되는 레코드의 오프셋을 기준으로 기록이 되는점 참고부탁드립니다.
0
안녕하세요, 인프런 AI 인턴입니다.
뽀또공장1님께서 질문하신 컨슈머 랙과 처리량에 대해 답변 드리겠습니다.
말씀하신대로 파티션과 컨슈머의 비율이 1:1이 되면, 각 컨슈머는 자신에게 할당된 파티션의 레코드들을 독립적으로 소비하게 됩니다. 이 경우, 컨슈머가 늘어남으로써 전체적인 처리량이 선형적으로 증가하는 경우가 많습니다. 예를 들어, 한 컨슈머가 파티션 하나를 소비할 때 처리할 수 있는 레코드의 수가 100개라면, 컨슈머가 두 개가 되고 각각 다른 파티션 하나씩을 소비한다면 총 200개의 레코드를 처리할 수 있습니다.
컨슈머1이 파티션0의 레코드 0, 2, 4, 6…을 소비하고, 컨슈머2가 파티션1의 레코드 1, 3, 5, 7…을 소비하는 경우가 바로 뽀또공장1님이 설명한 상황입니다. 컨슈머가 레코드를 차례대로 소비하기 때문에 각 컨슈머는 자신이 처리한 마지막 레코드의 오프셋을 기억하고 있습니다. 컨슈머 그룹 내에 이 오프셋 정보는 Kafka 클러스터에 컨슈머 오프셋으로 기록되어, 컨슈머 장애 발생 시 다른 컨슈머가 이어받아 처리할 수 있습니다.
물론, 처리량이 항상 선형적으로 늘어나는 것은 아닙니다. 네트워크 지연, 컨슈머 자원 한계, 파티션별 레코드 분포 불균형 등 다양한 요인으로 인해 실제 처리량은 다를 수 있습니다.
오프셋 관리와 관련하여 컨슈머는 처리한 레코드의 오프셋을 주기적으로 커밋(commit)합니다. 이로써 실패 시 이어서 처리할 수 있는 지점을 확인할 수 있으며, 이는 Kafka 시스템에 의해 안정적으로 관리됩니다.
위 사항에 대해서 더 자세한 내용은 Kafka 공식 문서에서 “6. Operations > 6.1 Basic Kafka Operations > Checking consumer position” 에서 확인하실 수 있습니다.
consume 이후 lag가 줄어들지 않음
0
75
2
안녕하세요. 강의의 카프카 버전과 현재 시점의 카프카의 차이점 문의 드립니다.
0
118
2
멱등성 프로듀서 retries 관련 질문입니다.
0
99
2
채팅 서비스 개발 시 주의점이 있을까요?
0
100
2
충분히 큰 파티션 생성시 궁금증이 존재합니다.
0
88
2
KTable 키가 없는 레코드 처리
0
73
2
컨슈머 테스트 코드 작성
0
94
2
리밸런스 onPartitionRevoked이 필요한 상황
0
74
2
카프카 클러스터에서 감당 가능한 파티션(레플리카) 수 문의
0
120
2
reset offset 질문
0
77
2
KStreamJoinKTable 실행시 오류
0
78
2
auto.commit.interval.ms 옵션 관련 질문 드립니다.
0
142
2
파티션, 컨슈머 그룹, 컨슈머 관련 질문
0
117
1
java, kotlin
0
130
2
shutdownThread 에 대한 문의 입니다.
0
155
2
zookeeper실행시 오류가 발생합니다.
0
271
2
커스텀 소스 커넥터에서 Thread.sleep (1000) 은 왜 하는거에요?
0
153
2
처리량을 늘리기 위해서 파티션을 늘리고 컨슈머를 늘려야한다고 설명하셨는데요
0
180
3
파티션 개수와 컨슈머 개수의 처리량 관련 질문
0
164
2
동영상 및 이미지 처리 관련 문의 드립니다.
0
226
2
주키퍼 없이 사용 문의 드립니다.
0
303
1
kafka 를 띄우니 오류가 발생하고 종료합니다.
0
281
3
zookeeper 실행시 오류 .. 무엇을 해야 할까요?
0
220
2
파티션 추가로 해결할 수 있지만 늘어난 파티션은 줄일 수 없지 않나요?
0
192
2





