Producer & Consumer
- 프로듀서는 레코드를 생성하여 브로커로 전송
- 전송된 레코드는 파티션에 신규 오프셋과 함께 기록됨
- 컨슈머는 브로커로 부터 레코드를 요청하여 가져감(polling)
Example
1. 파티션이 3개인 토픽과 컨슈머 1대
- 3개의 파티션, 1개의 토픽
- 1개의 프로듀서가 토픽에 레코드를 보내는 중
- 1개의 컨슈머가 3개의 파티션으로부터 polling 중
2. 파티션이 3개인 토픽과 컨슈머 3대
- 3개의 파티션, 1개의 토픽
- 1개의 프로듀서가 토픽에 레코드를 보내는 중
- 1개의 컨슈머가 3개의 파티션으로부터 polling 중
3. 파티션이 3개인 토픽과 컨슈머 4대
- 파티션 개수가 컨슈머 개수보다 적으므로 Consumer #4는 파티션을 할당받지 못함
4. 컨슈머 3대 중 1대 장애 발생
• 컨슈머 중 한개가 장애가 난 경우에 대한 대비 가능
• 리밸런스 발생 : 파티션 컨슈머 할당 재조정
• 나머지 컨슈머가 파티션으로 부터 polling 수행
5. 2개 이상의 컨슈머 그룹
- 목적에 따른 컨슈머 그룹을 분리할 수 있음.
- 컨슈머 그룹간 간섭(coupling)을 줄임.
- Consumer Group B에 이슈가 발생해 적재지연이 발생하더라도 Group A의 동작에는 이슈가 없음.
사진 인용 및 출처