백엔드 개발 · 중급
Kafka 컨슈머가 메시지를 어디까지 읽었는지 추적하는 오프셋(Offset)은 무엇이며, 컨슈머 그룹 내에서 오프셋이 어떻게 관리되는지 설명해 주세요.
힌트 · 오프셋은 각 파티션 내에서 메시지의 고유한 순서 번호입니다. 컨슈머 그룹은 __consumer_offsets 토픽에 현재 처리한 오프셋을 주기적으로 커밋하여 메시지 처리 상태를 관리합니다.
오프셋컨슈머 그룹파티션커밋__consumer_offsets
모범답안
Kafka에서 오프셋은 컨슈머가 특정 파티션에서 어디까지 메시지를 읽었는지 나타내는 숫자입니다. 각 파티션 내에서 메시지의 순서를 나타내는 고유한 ID라고 생각하시면 됩니다.
컨슈머 그룹 내에서는 오프셋 관리가 중요한데, 컨슈머 그룹은 __consumer_offsets라는 내부 토픽에 현재 처리한 오프셋을 주기적으로 커밋합니다. 이렇게 커밋된 오프셋을 통해 컨슈머가 재시작되거나 그룹에 새로운 컨슈머가 참여하더라도, 이전에 처리했던 메시지를 다시 처리하지 않고 마지막으로 커밋된 오프셋부터 이어서 메시지를 처리할 수 있습니다. 즉, 컨슈머 그룹은 이 __consumer_offsets 토픽을 통해 메시지 처리 상태를 관리합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 메시지 큐 (Kafka) 면접 질문
- 카프카의 '브로커(Broker)'는 무엇이며, 카프카 클러스터 내에서 어떤 기능을 담당하나요?
- Kafka에서 토픽을 여러 파티션으로 나누는 주된 이유와 이로 인해 얻을 수 있는 이점을 설명해 주세요.
- Kafka의 Consumer Group이 무엇이며, 이를 통해 메시지 소비의 확장성과 고가용성을 어떻게 확보하는지 설명해 주세요.
- Kafka가 메시지의 내구성(Durability)을 보장하기 위해 사용하는 메커니즘들을 설명해 주세요.
- Kafka의 ISR(In-Sync Replicas) 개념은 무엇이며, 이것이 데이터 손실 방지 및 고가용성 유지에 어떻게 기여하는지 설명해 주세요.
- Kafka 프로듀서가 메시지를 브로커로 전송할 때 발생할 수 있는 At-Most-Once, At-Least-Once, Exactly-Once 딜리버리 시맨틱스 각각의 특징과 구현 방법을 설명해 주세요.