파티션 개수와 컨슈머 개수의 처리량 관련 질문
162
1 asked

이 수업 내용에서 하나의 토픽에 여러개의 파티션을 생성 할 수 있고 이 파티션은 하나의 리더 파티션에 다른 broker에 팔로워 파티션을 생성한다고 해주셨던걸로 기억합니다.
또한, producer와 consumer와 소통하는건 리더 파티션만 가능하다고 했는에 위 그림에서는 팔로워 파티션도 컨슈머와 소통가능한 걸로 보여서 헷갈려서 질문드립니다.
또한, 리더 파티션만 컨슈머와 소통가능한데 어떻게 병렬 처리가 가능하고 파티션 개수가 늘리면 처리량이 증가하는건지 잘 이해가 가지 않아서요.
감사합니다.
Answer 2
0
안녕하세요.
기본적으로 프로듀서와 컨슈머는 리더 파티션과 통신합니다. 그리고 일반적으로 토픽의 '파티션 개수'라고 불리는 것은 리더 파티션의 개수라고 이해하시면 쉽습니다. 즉, 리더 파티션 개수를 늘리면 병렬적으로 통신할 수 있는 파티션 개수가 늘어나서 처리량이 늘어나는 것입니다.
반면, 팔로워 파티션은 역할자체가 리더 파티션과 다릅니다. 리더 파티션에 들어온 데이터를 지속적으로 복제하고 적재하여 장애에 대비하게 되는 것이 팔로워 파티션입니다. 그렇기 때문에 팔로워 파티션은 리더 파티션이 존재하는 브로커가 아닌 다른 브로커에 저장되는 것이죠.
0
안녕하세요, 인프런 AI 인턴입니다.
Jongmin_lee6님께서 질문하신 카프카의 파티션과 컨슈머의 병렬 처리 기능에 대해 설명드리겠습니다.
카프카에서 리더 파티션은 데이터를 생성(produce)하고 소비(consume)하는 주체로 작동합니다. 즉, 실제 데이터 처리는 리더 파티션을 통해 이루어집니다. 반면에 팔로워 파티션은 리더 파티션의 데이터를 복제하여 데이터 안정성을 높이기 위한 목적으로 사용됩니다. 따라서 컨슈머는 데이터의 최신 버전이 확실히 반영된 리더 파티션과만 직접 소통하여 데이터를 소비하게 됩니다.
파티션과 병렬 처리
카프카의 아키텍처에서 병렬 처리를 가능하게 하는 핵심 요소는 바로 파티션입니다. 예를 들어, 토픽에 여러 개의 파티션을 두고 그에 맞춰 컨슈머를 배치하면 다음과 같은 구조가 됩니다:
하나의 컨슈머와 하나의 파티션: 컨슈머 하나가 파티션 하나의 데이터를 순차적으로 소비합니다.
여러 컨슈머와 여러 파티션: 각각의 컨슈머는 각각의 파티션에서 데이터를 병렬로 소비합니다. 이는 물리적으로 독립된 데이터 스트림을 여러 개로 나누어 병렬로 처리하는 것과 같습니다. 실제로는 여러 컨슈머가 여러 리더 파티션과 소통하여 동시에 데이터를 처리할 수 있기에, 파티션을 늘리면 병렬 처리량이 늘어나게 됩니다.
이미지 설명
에서 나타낸 것처럼, 하나의 토픽에 대해 여러 파티션과 여러 컨슈머를 연결하여 병렬 처리를 수행할 수 있습니다. 위 그림에서도 볼 수 있듯이 두 파티션(파티션 0, 파티션 1) 각각에 컨슈머 하나씩 할당하여, 데이터를 동시다발적으로 소비할 수 있게 됩니다.
이러한 구조 덕분에 카프카는 다양한 시나리오에서 높은 처리량을 제공할 수 있습니다.
추가 참고
- 컨슈머의 파티션 통신 관련된 아래 링크에서 비슷한 질문과 답변을 참고하실 수 있습니다.
- 카프카의 파티션 및 병렬성 관련 내용들은 강의 내 여러 예제를 통해 더 깊이 이해할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
consume 이후 lag가 줄어들지 않음
0
70
2
안녕하세요. 강의의 카프카 버전과 현재 시점의 카프카의 차이점 문의 드립니다.
0
102
2
멱등성 프로듀서 retries 관련 질문입니다.
0
95
2
채팅 서비스 개발 시 주의점이 있을까요?
0
95
2
충분히 큰 파티션 생성시 궁금증이 존재합니다.
0
83
2
KTable 키가 없는 레코드 처리
0
70
2
컨슈머 테스트 코드 작성
0
92
2
리밸런스 onPartitionRevoked이 필요한 상황
0
72
2
카프카 클러스터에서 감당 가능한 파티션(레플리카) 수 문의
0
117
2
reset offset 질문
0
73
2
KStreamJoinKTable 실행시 오류
0
74
2
auto.commit.interval.ms 옵션 관련 질문 드립니다.
0
137
2
파티션, 컨슈머 그룹, 컨슈머 관련 질문
0
116
1
java, kotlin
0
126
2
shutdownThread 에 대한 문의 입니다.
0
151
2
zookeeper실행시 오류가 발생합니다.
0
265
2
커스텀 소스 커넥터에서 Thread.sleep (1000) 은 왜 하는거에요?
0
149
2
처리량을 늘리기 위해서 파티션을 늘리고 컨슈머를 늘려야한다고 설명하셨는데요
0
178
3
동영상 및 이미지 처리 관련 문의 드립니다.
0
221
2
주키퍼 없이 사용 문의 드립니다.
0
297
1
kafka 를 띄우니 오류가 발생하고 종료합니다.
0
278
3
zookeeper 실행시 오류 .. 무엇을 해야 할까요?
0
217
2
파티션 추가로 해결할 수 있지만 늘어난 파티션은 줄일 수 없지 않나요?
0
192
2
카프카 2.8.2 버전과 많이 차이가 있을까요??.
0
161
2

