Kafka 카프카 요약 정리
2 minute read
카프카 기본 개념
- 카프카 : 카프카 클러스터를 포함한 이벤트 스트림 프로세싱 아키텍쳐
- 브로커 : 카프카 클러스터의 서버 중 하나. 데이터를 저장하고 전달하는 역할
- 토픽 : 카프카 클러스터에서 데이터를 구분하는 단위. 토픽은 최소 1개 이상의 파티션을 가지고 있음.
- 파티션 : 토픽에서 데이터를 논리적으로 구분하는 단위
- 레코드 : 메세지를 담는 가장 작은 크기
- 오프셋 : 프로듀서가 보낸 데이터가 브로커에 저장되었을 때 받는 고유한 번호
- 타임스탬프 : 레코드가 프로듀서에서 생성되었을 때 시간(또는 브로커에 적재된 시간)
- 메세지 키 : 데이터를 구분하는 값. 파티셔너는 메세지 키를 토대로 파티션을 지정
- 메세지 값 : 실질적으로 처리하고자 하는 데이터
- ISR : 동기화가 완료된 리더, 팔로워 파티션 묶음
카프카 프로듀서
- 카프카 프로듀서 : 카프카 브로커로 데이터를 전달하는 역할을 하는 애플리케이션
- 파티셔너 : 메세지 키를 토대로 파티션을 지정하는 class. 커스텀 클래스를 사용하여 로직 변경 가능
- Accumulator : 레코드 전송 시 배치로 묶는 역할
- acks : 레코드를 카프카 클러스터로 전송 시 전달 신뢰성을 지정
- min.insync.replicas : acks=all 일 경우 최소 적재 보장 파티션 갯수
- enable.idempotence : 멱등성 프로듀서로 동작하기 위해 설정하는 옵션 (버전 3 이후 기본 true)
- transactional.id : 트랜잭션 프로듀서로 동작하기 위해 설정하는 옵션
카프카 컨슈머
- 카프카 컨슈머 : 카프카 클러스터에 저장된 레코드를 받아와서 처리하는 애플리케이션
- 컨슈머 그룹 : 동일한 역할을 하는 컨슈머들의 묶음
- 컨슈머 랙 : 파티션에서 가장 최근의 레코드 오프셋과 컨슈머 오프셋 간의 차이
- 커밋 : 컨슈머가 레코드 처리가 완료되었을 경우 카프카 클러스터에 마지막으로 읽은 레코드의 오프셋 번호를 저장하는 작업 ( 자동 커밋 몇초마다 저장, 레코드 별로 커밋 )
- 리밸런싱 : 컨슈머 글부에서 컨슈머 갯수의 변화 또는 파티션 갯수의 변화로 인해 할당이 변경되는 작업
- auto.offset.reset : 컨슈머 그룹이 없을 경우 처음 읽을 오프셋의 위치를 지정하는 옵션
- isolation.level : 트랜잭션이 완료된 레코드를 읽을 것인지 판단하는 옵션
카프카 스트림즈
- 카프카 스트림즈 : 상태/비상태 기반 스트림 데이터 처리를 수행하는 애플리케이션
- 태스크 : 스트림즈 애플리케이션 내부에서 생성되어 로직을 수행하는 최소 단위
- 프로세서 : 데이터를 가져오거나, 처리하거나, 내보내는 노드
- 스트림 : 프로세서로 부터 처리된 데이터를 다른 프로세스로 전달되는 레코드
- 스트림즈 DSL : 추상화되어 스트림 프로세싱에 필요한 함수들을 정의한 함수들의 모음
- 프로세서 API : 스트림즈 DSL에서 구현할 수 없는 로직을 구현할 때 사용하는 API
- KStream : 레코드의 흐름. 컨슈머의 poll() 과 유사
- KTable : 특정 파티션의 메세지 키를 기준으로 가장 최근의 레코드들의 묶음
- GlobalKTable : 모든 파티션의 메세지 키를 기준으로 가장 최근의 레코드들의 묶음
- 코파티셔닝 : 동일한 파티션 갯수, 동일한 파티셔닝 전략을 통해 레코드가 저장된 서로 다른 2개의 토픽
카프카 커넥트
- 카프카 커넥트 : 카프카 기반 데이터 파이프라인을 반복적으로 생성할 때 사용하는 애플리케이션
- 소스 커넥터 : 특정 파일 또는 소스 애플리케이션으로부터 토픽으로 데이터를 보내는 프로듀서
- 싱크 커넥터 : 토픽에서 특정 파일 또는 소스 애플리케이션으로 데이터를 보내는 컨슈머
- 오픈소스 커넥터 : 소스/싱크 커넥터를 사용할 수 있도록 jar 형태로 배포하는 커넥터
- 태스크 : 커넥터에서 데이터를 처리하는 최소 로직 단위
- 단일 모드 : 디버깅, 테스트용으로 적합한 1개 프로세스 단위 커넥트
- 분산 모드 : 상용환경 운영에 적합한 멀티 프로세스 단위 커넥트
Comments