회사에서 kafka를 사용하고 있는데 topic 1개로 데이터 주고 받는 단순 메시지 브로커 역할로만 사용하고 있어서 좀 더 자세하게 알아보고 사용하려고 기초 개념을 정리해봤다.
인프런 강의 데브원영 아파치 카프카 for beginners 들었음.
참고로 유투브에도 그냥 올라와있고 설명 자세하게 잘 해주신다!
내용은 짧은데 불필요한 문장이 없어서 끊어서 듣느라 시간 생각보다 많이 걸렸음.
처음에는 어플리케이션 하나에서 타겟(EX: DB) 하나로 간단한 구조였는데 아키텍처들이 복잡해지면서 어플리케이션과 타겟들이 많아지기 시작함.
소스 애플리케이션과 타겟 애플리케이션 사이의 중간 관리자 역할 > 타겟이 여러 개가 되는 경우 엄청난 장점으로 다가 올 수 있음.
⭐ 파티션을 늘리는 것은 가능하지만 줄일 수 없기 때문에 신중하게 늘려야 한다.
파티션을 늘리면 컨슈머 개수를 늘려서 데이터를 분산 처리 할 수 있음.
브로커 개수에 따라서 복제 개수는 이하로 정해짐
원본 하나의 파티션은 Leader Partition / 나머지는 Follower Partition. Leader+Follower 합쳐서 ISR (In Sync Replica)라고 함.
Producer의 레코드는 무조건 파티셔너를 통해서 브로커로 데이터가 전송됨.
데이터를 토픽에 어떤 파티션에 넣을지 결정하는 역할을 하게 됨. 메세지 키에 따라서 다른 파티션에 넣을 수 있음.
동일한 메세지 키를 가진 레코드는 항상 동일한 파티션에 들어 갈 수 있도록 보장함. = 순서를 보장 할 수 있다는 장점. (우리는 session.id를 이용해서 데이터를 넣을 수 있게 되는 걸까?)
메세지 키가 없는 레코드는 라운드 로빈을 기반으로 데이터를 보내게 됨.
기본 파티셔너 이외에 다른 커스텀 파티셔너를 이용해서 어느 파티션에 데이터를 보낼지 정할 수 있음. (EX: VIP 데이터는 좀 더 빠르게 처리 하고 싶은 경우에는 전체 10개의 파티션이 있을 때 vip는 8개를 쓰고 나머지 일반 고객은 2개 쓰게 하는 것..)
프로듀서와 컨슈머의 상태에 대해서 유추 가능하며, 컨슈머 상태를 모니터링 할 때 사용함.
Lag은 여러 개가 존재 할 수 있음.
컨슈머 상태에서 Lag을 수집하는 것은 컨슈머에 의존 상태가 생기기 때문에 위험 할 수 있음.
Kafka Lag을 모니터링 할 수 있기 위해 링크드인에서 배포 한 독립적인 오픈소스
멀티 카프카 클러스터를 연동해서 확인 할 수 있도록 함.
메시징 플랫폼
메시지 브로커는 이벤트 브로커로 역할을 할 수 없음
이벤트 브로커는 메시지 브로커의 역할을 할 수 있음
메시지 브로커 > 대규모 메시지 기반 미들웨어 아키텍처에서 사용되어 왔음
이벤트 브로커 > 이벤트(메세지)라고 이야기하는 레코드를 딱 하나만 보관하고 인덱스를 통해 개별 엑세스를 관리함/ 업무상 필요한 시간 동안 이벤트 보관 가능.
이 부분은 장점일 잘 와닿지 않았음.
카프카에서 공식적으로 제공하는 컴포넌트 중 하나 = 중요한 플랫폼, 데이터 파이프라인 플랫폼
반복적인 작업에 효과적임
카프카 커넥트 (Kafka Connect)
커넥터 (Kafka Connector)