인프런 커뮤니티 질문&답변
concurrency 설정 + 같은 groupId 내에 consumer 여러개
작성
·
33
0
concurrency 관련하여 궁금한점이 있습니다.
하나의 topic (ex. email.send) 에 5개의 파티션이 있다고 가정.
같은 groupId 로 지정된 consumer 2 (A, B)개가 있고 각각 concurrency=3 으로 설정이 되어 있다고 가정
이런 경우, 같은 groupId 내의 컨슈머는 같은 partition 을 consume 할 수 없으니 1개의 thread 는 동작하지 않게 된다고 보면 될까요?
A-1 thread ===> partition 1
A-2 thread ===> partition 2
A-3 thread ===> partition 3
B-1 thread ===> partition 4
B-2 thread ===> partition 5
B-3 thread (동작안함) ====> x
추가로 실무에서는 일반적으로 concurrency 옵션을 사용하는지 궁금합니다.
답변 2
0
안녕하세요 ! 질문 잘해주셨어요 ~
질문해 주신 내용에 대해 답변드려볼게요 !
"이런 경우, 같은 groupId 내의 컨슈머는 같은 partition 을 consume 할 수 없으니 1개의 thread 는 동작하지 않게 된다고 보면 될까요?"
-> 네 맞아요 !
같은 groupId를 가진 Consumer A, B가 각각 concurrency=3으로 설정되어 있고,
토픽에 5개의 파티션이 있다면, 총 6개의 쓰레드 중 1개는 파티션을 할당받지 못하고 놀게 돼요 !
카프카는 같은 Consumer Group 내에서
하나의 파티션은 오직 하나의 컨슈머 쓰레드만 처리할 수 있다는 원칙이 있기 때문에,
파티션 수(5개)보다 컨슈머 쓰레드 수(6개)가 많으면 남는 쓰레드는 메시지를 받지 못하게 돼요 !
"실무에서는 일반적으로 concurrency 옵션을 사용하는지 궁금합니다.
-> 실무에서 자주 사용돼요 !
concurrency 옵션을 사용하면 하나의 Spring Boot 애플리케이션 내에서
여러 개의 컨슈머 쓰레드를 띄울 수 있어서,
메시지 처리량(Throughput)을 높이는 데 효과적이기 때문이죠 :)
추가로 궁금하신 점 있으시면 언제든 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. writer0713님.
Kafka에서 컨슈머 그룹과 파티션의 관계는 데이터의 병렬 처리와 관련된 중요한 요소입니다. 질문하신 내용에 대해 간략히 설명 드리겠습니다.
Kafka의 컨슈머 그룹과 파티션:
컨슈머 그룹 내의 컨슈머들은 각기 다른 파티션을 할당받아 데이터를 처리하게 됩니다. 같은 그룹 내의 컨슈머들은 같은 파티션을 동시에 처리할 수 없으므로, 주어진 파티션 수보다 많은 스레드(concurrency)를 설정하면 일부 스레드가 사용되지 않을 수 있습니다.
주어진 예시의 해석:
- 5개의 파티션과 두 개의 컨슈머 그룹, A와 B가 있으며, 각 컨슈머가
concurrency=3를 설정했습니다.
- 결과적으로 파티션의 수는 5개인데, 컨슈머가 사용 가능한 스레드는 6개(3 스레드 * 2 컨슈머)이기에 질문하신 예시에 설명하신 것처럼 하나의 스레드는 동작하지 않게 됩니다.
- 이 경우, 실제 동작은 이렇게 됩니다:
A-1 ===> partition 1 A-2 ===> partition 2 A-3 ===> partition 3 B-1 ===> partition 4 B-2 ===> partition 5 B-3 ===> (idle - 할당 없음)
실무에서 concurrency 옵션 사용:
- 실무에서는 컨슈머 당 적절한 스레드 수를 설정하여 최대 병렬 처리 성능을 도출합니다.
- 파티션 수가 중요하며, 보통 파티션 수와 컨슈머 수를 유사한 수로 맞추려는 노력을 합니다.
concurrency옵션은 쉽게 스레드를 늘려 병렬 처리 성능을 증대시킬 수 있어 유용하지만, 늘어난 스레드 수 만큼의 적절한 파티션 수와 시스템 리소스가 뒷받침 되어야 합니다.
관련된 추가 정보는 아래 유사한 질문 링크를 참고하시면 도움이 될 것입니다:
- Kafka에서의 컨슈머 스레드 및 파티션 관리 - 스레드와 파티션의 효율적 관리 방법에 대한 토론입니다.
- Kafka에서의 파티션과 concurrency 사용법 - 파티션 수 조정에 대한 유사한 사례를 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




