Consumer 주요기능
- 특정 파티션을 관리하고 있는 파티션 리더에게 메세지 가져오기를 요청하는 것
- 각 요청은 로그의 오프셋을 명시하고 그 위치로 부터 로그메시지 수신
- 그래서 Consumer는 가져온 메세지의 위치를 조정할 수 있고, 필요하다면 이미 가져온 데이터도 다시 가져오기 가능.
- 가져온 메시지를 다시 가져올 수 있는기능은 RabbitMQ와 같은 일반적인 메세지큐 솔루션에서는 제공하지 않음. (기존 다른 메세징큐 솔루션에선는 Consumer 가 메세지를 가져가면 큐에서 삭제되어 다른 Consumer 가 가져갈 수 없는 것과는 다른 방식임.)
Consumer History
- Consumer 의 offset의 저장 위치에 따라 Old Consumer , New Consumer 로 나뉘어짐
- Old Consumer : Zookeeper 노드에 저장
- New Consumer : 카프카 토픽에 저장 (현재 적용버전)
Consumer 순서보장
- 토픽의 partition이 여러개인 경우 메세지 순서 보장 안됨. (파티션과 파티션 사이의 순서보장 X.)
- 파티션내에세는 순서보장 됨.
- 하나의 토픽에 여러 컨슈머 그룹 동시접속하여 메세지를 가져올 수 있음
Consumer Group
- Consumer 를 실행할때는 항상 Consumer 그룹이라는것이 필요
- Consumer 실행시 추가적인 옵션을 적용하지 않으면 자동으로 console-consumer-xxxx(숫자)로 생성됨
- Consumer 는 파티션의 오프셋 기준으로만 메세지를 가져옴
- Consumer 그룹은 운영 중에도 확장 가능
- 장애 대처도 용이
- Consumer 그룹 아이디 지정 : group.id
- Consumer 그룹안에서 Consumer 들은 메세지를 가져오고 있는 토픽의 파티션에 대해 소유권 공유
- 리밸러스 (Rebalance) : 소유권 이동
-
장점 : Consumer 쉽고 안전하게제거 높은 가용성, 확장성 확보
-
단점 : 리밸런스 동안 일시적으로 컨슈머 메세지를 가져올수 없음.
-
- 토픽의 파티션 만큼 최대 Consumer 수 연결 가능. (그 이상은 Consumer 연결 안됨)
- 여러 Consumer 그룹들이 하나의 토픽에서 메세지를 가져갈 수 있음 (why? 각각의 Consumer 가 오프셋 관리하기 때문)
Consumer Commit
- 정의 : 각 파티션에 대해 현재 위치를 업데이트 하는 동작, 카프카내에 별도로 내부에서 사용하는 토픽
- 형식 : __consumer_offet
- 커밋 설정
-
자동 : enable.auto.commit = true
-
수동 : enable.auto.commit = false
-
참고 문헌 : 카프카, 데이터 플랫폼의 최강자 실시간 비동기 스트리밍 솔루션 Kafka의 기본부터 확장 응용까지
'Programming > Kafka' 카테고리의 다른 글
[Kafka] No jmx port but jmx polling enabled (0) | 2020.04.21 |
---|---|
[kafka] 메시지 전송 케이스 별 프로듀서 옵션 설정 (0) | 2020.04.20 |
[kafka] Producer Connection Config (0) | 2020.04.19 |