운영 환경에서 컨슈머에 대한 질문이 있습니다.
319
작성한 질문수 37
특정 토픽에 대한 파티션을 3개를 만든 후 소스에서 컨슈머 그룹에 대한 컨슈머를 3개를 만들었습니다.
운영 환경에서 실행중인 서버가 1개인데 CPU 사용량으로 인한 오토스케일링이 발생하여 서버가 2개가 되었을 때, 그럼 총 6개의 컨슈머가 생성되는 것이라고 생각됩니다.
그럼 3개의 컨슈머는 idle 상태로 놀고 있는게 아닌가 싶습니다.
제가 이해한게 맞을까요?
실제 운영 환경에서 이런 경우는 어떻게 하는게 좋은 방법일지 궁금합니다.
---------------
멀티스레드 컨슈머 애플리케이션 강의를 들었습니다.
그렇다면 강사님께서는 토픽 + 컨슈머 그룹 + 컨슈머 별로 각각의 프로세스를 실행시키나요?
다른 강의에서 파티션의 개수를 충분히 많은 개수 50~100개를 권장하셨는데.. 그럼 프로세스가 너무 많이 떠있는거라 생각되서요..
강의 예로는 아래와 같이 컨슈머가 있다면, 총 7개의 프로세스에 단일 쓰레드로 실행시키는 걸까요?
ex)
A-TOPIC
A-TOPIC-GROUP-1
A-TOPIC-GROUP-1-CONSUMER-1
A-TOPIC-GROUP-1-CONSUMER-2
A-TOPIC-GROUP-2
A-TOPIC-GROUP-2-CONSUMER-1
A-TOPIC-GROUP-2-CONSUMER-2
A-TOPIC-GROUP-2-CONSUMER-3
B-TOPIC
B-TOPIC-GROUP-1
B-TOPIC-GROUP-1-CONSUMER-1
B-TOPIC-GROUP-1-CONSUMER-2
답변 1
0
파티션이 3개인 토픽에 대응한 컨슈머를 3개 만들어서 운영할 경우, 1:1로 파티션과 컨슈머가 할당됩니다. 그러므로 오토스케일링으로 인해 컨슈머가 6개가 되면, 할당되지 못한 컨슈머 3개가 idle 상태로 남겨지게 됩니다.
실제 운영 환경에서는 컨슈머를 오토스케일링에 넣기 보다는 컨슈머 랙, 컨슈머 데이터 처리량을 모니터링 하면서 지정한 서버 개수만큼을 적정수로 유지하면서 운영하는 것이 좋아보입니다. 그러면서 파티션 개수를 컨슈머 개수를 동일하게 유지하면서 필요에 따라 함께 늘리는 것이 좋을 것 같습니다.
상황에 따라 다르겠지만, 개인적인 경험으로는 말씀대로 토픽 + 컨슈머 그룹 + 컨슈머 별로 따로 프로세스를 실행시키는 것이 운영하는데 편리했습니다. 파티션 개수가 많고 프로세스가 많이 떠있다는 뜻은 그만큼 데이터 처리량을 늘려야 한다는 것이므로, 프로세스가 많이 실행되는 것에 대한 어려움은 없었습니다. 오히려 프로세스에 n개 스레드의 컨슈머들을 운영하는 것이 장애 대응에 어려움이 많기 때문입니다.
A-TOPIC
A-TOPIC-GROUP-1
A-TOPIC-GROUP-1-CONSUMER-1
A-TOPIC-GROUP-1-CONSUMER-2
A-TOPIC-GROUP-2
A-TOPIC-GROUP-2-CONSUMER-1
A-TOPIC-GROUP-2-CONSUMER-2
A-TOPIC-GROUP-2-CONSUMER-3
B-TOPIC
B-TOPIC-GROUP-1
B-TOPIC-GROUP-1-CONSUMER-1
B-TOPIC-GROUP-1-CONSUMER-2
그러므로 상기와 같은 상황이 있다면, 프로세스를 7개를 따로 실행시킬 것 같습니다.
0
그렇군요~!
실제 운영 환경에서 카프카를 사용해보지 않아 n개의 스레드의 컨슈머들을 운영하는 것이 장애 대응이에 어떤 어려움이 있는지를 몰라서 아직까지는 컨슈머당 프로세스 1개를 띄우는게 와닿지는 않습니다!
이부분은 제가 실무에서 사용해보면서 느껴봐야 할 것 같네요!
감사합니다!
consume 이후 lag가 줄어들지 않음
0
74
2
안녕하세요. 강의의 카프카 버전과 현재 시점의 카프카의 차이점 문의 드립니다.
0
114
2
멱등성 프로듀서 retries 관련 질문입니다.
0
97
2
채팅 서비스 개발 시 주의점이 있을까요?
0
98
2
충분히 큰 파티션 생성시 궁금증이 존재합니다.
0
86
2
KTable 키가 없는 레코드 처리
0
72
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
154
2
zookeeper실행시 오류가 발생합니다.
0
268
2
커스텀 소스 커넥터에서 Thread.sleep (1000) 은 왜 하는거에요?
0
153
2
처리량을 늘리기 위해서 파티션을 늘리고 컨슈머를 늘려야한다고 설명하셨는데요
0
180
3
파티션 개수와 컨슈머 개수의 처리량 관련 질문
0
163
2
동영상 및 이미지 처리 관련 문의 드립니다.
0
225
2
주키퍼 없이 사용 문의 드립니다.
0
302
1
kafka 를 띄우니 오류가 발생하고 종료합니다.
0
281
3
zookeeper 실행시 오류 .. 무엇을 해야 할까요?
0
220
2
파티션 추가로 해결할 수 있지만 늘어난 파티션은 줄일 수 없지 않나요?
0
192
2





