💡 해당 글은 '카프카 핵심 가이드 2nd Edition'을 읽고 정리한 글입니다. 1️⃣ 클러스터 멤버십브로커를 관리하는 클러스터는 아파치 주키퍼를 사용하여 브로커의 목록을 유지 및 관리하다.브로커 프로세스가 시작되면 주키퍼에 Ephemeral 노드의 형태로 ID를 등록하게 되는데, 이는 고유한 식별자가 된다.주키퍼의 `/brokers/ids` 경로를 구독 혹은 Watcher로 등록함으로써, 브로커가 추가 혹은 삭제될때마다 알림을 받을 수 있다.Ephemeral 노드로 등록되기 때문에, 브로커와 주키퍼 간의 연결이 끊어진다면 해당 노드는 자동으로 삭제된다.💡 브로커가 정지되면 브로커를 나타내는 ZNode도 삭제되지만, 브로커 ID는 자료구조에 남게 되므로 만약 동일한 ID를 받은 브로커가 다시 생성..
💡 해당 글은 '카프카 핵심 가이드 2nd Edition'을 읽고 정리한 글입니다. 1️⃣ 어드민 클라이언트 (Admin Client)토픽 목록 조회, 생성, 삭제, 클러스터 상세 정보 등의 프로그램적 관리를 위해 제공되는 API를 말한다.명령줄로도 특정 정보는 확인이 가능하지만, 사용자 입력에 기반한 관리를 위해서는 해당 API가 필요하다. 특징비동기클러스터 컨트롤러 API 요청을 보내면, 1개 이상의 Future 객체를 리턴한다.Future는 비동기적 연산 결과를 표현하는 인터페이스이다.이 객체들은 컨트롤러의 상태가 완전히 업데이트된 시점에서 완료된 것으로 간주한다.Future 객체를 감싼 Result 객체를 반환한다. Result 객체는 작업이 끝날때까지 대기하거나 적업 결과에 대해 일반적으로 ..
💡 해당 글은 '카프카 핵심 가이드 2nd Edition'을 읽고 정리한 글입니다. 1️⃣ 오프셋과 커밋 ( Offset & commit ) 카프카에서는 파티션에서의 현재 위치를 업데이트 하는 작업을 오프셋 커밋(offset commit)이라고 한다.컨슈머는 커밋을 레코드마다 진행하지 않고, 파티션에서 성공적으로 처리해낸 마지막 메세지만 커밋을 한다.정확하게는 카프카 특수 톡픽인 `__consumer_offsets`에 정상적으로 처리 완료한 오프셋 + 1을 커밋한다.불필요한 커밋 횟수를 줄이는 좋은 방식이긴하지만, 마지막 메세지에 대한 커밋만 진행하다보니 레코드 처리 중 리밸런스가 발생하면 메세지 중복 및 누락 문제가 발생한다.메세지 중복 발생 경우Offset 3에서부터 시작해서 폴링 반복문을 통해 O..
💡 해당 글은 '카프카 핵심 가이드 2nd Edition'을 읽고 정리한 글입니다. 1️⃣ 컨슈머(Consumer)란 ? 프로듀서(Producer)에서 생성한 메세지를 사용하는 주체이다.프로듀서가 같은 토픽에 여러 개의 메세지를 쓰듯이, 여러개의 컨슈머가 같은 토픽으로부터 데이터를 분할해서 읽어올 수 있게 하기 위해 컨슈머 그룹(Consumer Group)으로 동작할 수 있다.단일 컨슈머 구성하는 경우도 있지만, 보통 그룹으로 묶어서 사용한다.컨슈머와 파티션 관계컨슈머는 토픽의 파티션에서 메세지를 가져오기 때문에 파티션 수와 밀접한 관계가 있다.컨슈머 그룹에 한개의 컨슈머이 있다면, 해당 컨슈가 토픽의 모든 파티션에서 가져오게 된다.그룹에 한개 이상의 컨슈머가 있다면 파티션 할당 전략에 의해 파티션을 ..