Programming-[Backend]/Kafka (11) 썸네일형 리스트형 [카프카 핵심가이드] 9. 모니터링 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일13. 카프카 모니터링하기 13.1 지표 기초13.1.1 지표는 어디에 있는가?카프카의 모든 지표는 JMX(Java Management Extensions) 인터페이스를 통해서 사용할 수 있다.check_jmx, jmxtrans와 같은 JMX 인터페이스에 접속하는 프로그램이 있음Jolokia, MX4J 등은 카프카 프로세스에서 직접 실행되는 JMX 에이전트이다JMX 포트 찾기*주키퍼에 저장되는 브로커에 대한 정보는 /brokers/ids/{브로커 id}에 JSON 형식으로 저장된다. 여기에 hostname, jmx_port가.. [카프카 핵심가이드] 8. 클러스터간 데이터 미러링하기 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 10. 클러스터간 데이터 미러링하기카프카에서는 같은 클러스터 내의 노드간 데이터 교환을 `복제(replication)`라 부르기로 하고, 다른 클러스터간 데이터 복제는 `미러링(mirroring)`이라고 부르기로 한다. 10.1 클러스터간 미러링 활용 사례지역 및 중앙 클러스터: 각 도시의 데이터센터에 클러스터를 갖고, 각 데이터들을 중앙 클러스터에 미러링하여 비즈니스적인 분석을 해야하는 경우 활용고가용성(high availability)와 재해 복구(disaster discovery): 여분 준비규제: 국가별, 법적 문제.. [카프카 핵심가이드] 7. 멱등적 프로듀서와 트랜잭션 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 1. 멱등적 프로듀서 m1, m2, m1, m2, m3 -> 중복 발생enable.idempotence=trueproducer ID 요청 후, 해당 pid와 레코드 별 seq 넘버를 추가해서 중복 메시지를 없애고 순서 보장 트랜잭션 필요 상황 가정 '이체' 애플리케이션Alice -> Bob 에게 이체하는 상황전송 토픽 이벤트를 가져와서 출력 토픽 2개에 레코드를 쌓는다. (Alice -10$ 인출, Bob +10$ 입금)위의 트랜잭션이 완료되어야 오프셋 커밋이 찍힌다. 트랜잭션 없이 시스템 장애 발생 Alice -> .. [카프카 핵심가이드] 5. 카프카 어드민 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 5. 프로그램 내에서 코드로 카프카 관리하기 5.1 AdminClient 개요5.1.1 비동기적이고 최종적 일관성을 가지는 APIAdminClient는 비동기 결과인 Future 객체를 `Result 객체`로 감싸서 작업이 끝날 때까지 대기하거나 작업 결과에 대해 일반적으로 뒤이어 쓰이는 작업을 수행하는 헬퍼 메서드를 가지고 있음최종적 일관성(eventual consistency)AdminClient API가 리턴하는 Future 객체의 완료 여부는 컨트롤러의 상태가 완전히 업데이트된 상태를 기준으로 한다. 즉 여러 브로커.. [카프카 핵심가이드] 3. 프로듀서 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역제이펍 · 2023년 04월 14일 1. 카프카 프로듀서1.1 카프카 프로듀서 개괄프로듀서가 브로커에 메세지 전송 과정키와 파티션은 선택사항키와 값을 직렬화 후 바이트 배열 변환.파티션을 지정하지 않은경우 파티셔너를 통해 파티션이 결정되고 레코드 배치에 추가.별도의 쓰레드가 카프카 브로커에게 전송브로커는 메세지 응답을 돌려준다 성공의 경우 RecordMetadata 정보를 리턴한다(토픽,파티션,레코드 오프셋). 에러인 경우 에러를 리턴한다.에러를 받은 경우 몇번 더 재전송을 시도할 수 있다. 아래는 프로듀서의 최소 기본값을 설정하여 추가해주는 코드 예시이다... [카프카 핵심 가이드] 1. 카프카 시작하기 카프카 핵심 가이드 2E: 대규모 실시간 데이터와 스트림 처리 그웬 샤피라 , 토드 팔리노 , 라지니 시바람 , 크리트 페티 저자(글) · 이동진 번역 제이펍 · 2023년 04월 14일 1. 카프카 시작하기 어떠한 데이터를 얻을 것인지 합의하고 데이터를 얻을 수 있다면 문제는 해결된다. -닐 디그래스 타이슨 1.1 발행/구독 메시지 전달 초기 발행/구독 시스템에 비해 카프카의 장점은 발행/구독 주체들끼리 직접 연결되지 않고 `중앙 집중화된 메시지 큐 시스템`을 여러 시스템들이 공유 받을 수 있다는 점 1.2 카프카 입문1.2.1 메시지와 배치 메시지 - 카프카 데이터의 기본 단위는 `메시지` == `레코드` - `키` 는 메시지를 저장할 파티션을 결정하기 위해 사용한다. 배치(batch) - 같은 토픽.. [TIL] Kafka Transaction mode, offset lag = 1 유지 현상 1. 현상진행 중인 프로젝트에서 메시지의 중복 처리를 막기 위해서 멱등적 프로듀서 및 transaction mode를 적용했다. 이럴 경우 2가지 현상이 나타난다.브로커에 쓰는 메시지가 2개씩 생성됨한 번도 메시지가 쌓이지 않았을 때는 consumer의 offset lag이 0이지만, 한 번 쌓이기 시작하면 offset lag이 1로 유지된다.2번 현상 이후, AWS MSK에서 Estimated Max Time Lag은 30초 정도까지 계속 올랐다 내렸다를 반복한다. 이 중 1번 항목은 널리 알려진 사실이지만, 2번 항목은 offset lag이 올라가서 경고를 받을 수 있음에도 불구하고 잘 알려지지 않은 것 같다. AWS Cloud Watch나 Datadog과 같은 툴에서 offset lag의 경보 알림.. 카프카 멱등성(Idempotence) 설정, Retry 및 DLT 설정 시 유의사항 1. 멱등성 설정enable.idempotence = truemax.in.flight.requets.per.connection retries > 0 이여야함 -> '2147483647'로 설정acks = 'all' 이여야함 만약 enable.idempotence = false이고,max.in.flight.requests.per.connection > 1이면 메시지 배치 중 일부가 에러가 났을 때재시도하면서 순서가 바뀔 수 있음2. Retry, DLT 설정DefaultErrorHandler() 부분에 컨슈머 에러 발생 시 Retry, DeadLetter 정책 설정@Bean public DefaultErrorHandler errorHandler() { DefaultErrorHandler handler.. 이전 1 2 다음