Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Docker
- DFS
- 오일러프로젝트
- Spring Data JPA
- 클라우드
- aws
- Apache Kafka
- Kafka
- 클라우드 컴퓨팅
- 알고리즘
- 스프링부트
- 자료구조
- 스프링
- 월미도
- 인천여행
- Spring Boot
- 쿠버네티스
- Spring
- 백준
- VPC
- gcp
- 프로그래밍문제
- springboot
- Elasticsearch
- 로드밸런서
- 백트래킹
- 코드업
- 카프카
- JPA
- 스프링 부트
Archives
- Today
- Total
GW LABS
실전 카프카 개발부터 운영까지 (6) - 컨슈머의 내부 동작 원리와 구현 본문
6.1 컨슈머 오프셋 관리
- 컨슈머 동작 중 가장 핵심은 오프셋 관리
- __consumer_offsets 토픽에 각 컨슈머 그룹별로 오프셋 위치 정보가 기록
- __consumer_offsets은 다음에 읽어야 할 메시지의 오프셋을 기록된다.
6.2 그룹 코디네이터
- 리밸런싱: 컨슈머 그룹에서 각 컨슈머들에게 작업을 균등하게 분해하는 동작
- 그룹 코디네이터: 안정적인 컨슈머 그룹 관리를 위한 별도의 코디네이터
- heartbeat.interval.ms: 그룹 코디네이터와 하트비트 인터벌 시간
- session.timeout.ms: 컨슈머가 특정 시간 안에 하트비트를 받지 못하면 문제가 발생했다고 판단해 컨슈머 그룹에서 해당 컨슈머는 제거되고 리밸런싱 동작
- max.poll.interval.ms: 컨슈머는 주기적으로 poll()을 호출해 토픽으로부터 레코드들을 가져오는데, poll() 호출 후 최대 5분간 poll() 호출이 없다면 컨슈머에 문제가 있는 것으로 판단해 리밸런싱 동작
6.3 스태틱 멤버십
- 컨슈머가 재시작 등으로 그룹에서 나갔다가 다시 합류하더라도 리밸런싱이 일어나지 않게 하는 기능
- group.instance.id만 설정하면 적용 됨
- 점검이나 재배포 등의 상황에서 리밸런싱을 줄일 수 있음
6.4 컨슈머 파티션 할당 전략
- 레인지 파티션 할당 전략: 파티션 할당 전략의 기본값으로서 토픽별로 할당 전략을 사용함. 동일한 키를 이용하는 2개 이상의 토픽을 컨슘할 때 유용함
- 라운드 로빈 파티션 할당 전략: 사용 가능한 파티션과 컨슈머들을 라운드 로빈으로 할당함. 균등한 분배 가능
- 스티키 파티션 할당 전략: 컨슈머가 컨슘하고 있는 파티션을 계속 유지할 수 있음
- 협렵적 스티키 파티션 할당 전략: 스티키 방식과 유사하지만, 전체 일시 정지가 아닌 연속적인 재조정 방식임
6.5 정확히 한 번 컨슈머 동작
- 트랜잭션이 완료된 메시지만 읽게 하려면 컨슈머 설정에 ISOLATION_LEVEL_CONFIG 설정이 필요함
- 트랜잭션 메시지를 사용하기 때문에 메시지 오프셋이 2개씩 올라간다.
- 트랜잭션을 컨슈머에 적용시키는건 아직 어렵다.
- https://www.youtube.com/watch?v=TtwpO9Pozis
'Book-Review > Programing' 카테고리의 다른 글
실전 카프카 개발부터 운영까지 (5) - 프로듀서의 내부 동작 원리와 구현 (0) | 2022.09.04 |
---|---|
실전 카프카 개발부터 운영까지 (4) - 카프카의 내부 동작 원리와 구현 (0) | 2022.09.03 |
실전 카프카 개발부터 운영까지 (3) - 카프카 기본 개념과 구조 (1) | 2022.09.02 |
실전 카프카 개발부터 운영까지 (2) - 카프카 환경 구성 (0) | 2022.08.31 |
실전 카프카 개발부터 운영까지 (1) - 카프카 개요 (0) | 2022.08.31 |
Comments