Kafka 카프카 요약 정리
카프카 기본 개념
카프카 기본 개념
Kafka Architecture
카프카 커넥트는 편리한 rest api 인터페이스를 제공하지만 지속적으로 파이프라인(싱크 커넥터, 소스 커넥터)를 운영하는데는 한계가 있다.
Kafka Custom Sync Connector
Kafka Custom Source Connector
Kafka Distributed Mode Connect
커넥트를 실행하는 방법은 크게 두 가지가 있다.
Kafka Connect
Kafka Streams Spart Structured Streaming Deployment Standalone Java Process Spark Executor (mo...
Streams Processor API
카프카 스트림즈에서 KTable은 카프카 토픽의 데이터를 로컬의 rocksDB에 Meterialized View로 만들어 두고 사용하기 때문에 레코드의 메세지 키, 메세지 값을 기반으로 keyValueStore로 사용할 수 있다.
스트림즈 DSL - window processing
스트림즈 DSL - GlobalKtable과 KStream을 join()
스트림즈 DSL - Ktable과 KStream을 join()
Gradle ```groovy dependencies { compile 'org.apache.kafka:kafka-streams:2.5.0' } ```
필수 옵션
Kafka Streams DSL
Kafka Streams
트랜잭션 프로듀서의 동작
Kafka Idempotent Producer
Burrow
카프카 명령어 사용
Consumer Lag
카프카는 처리량을 늘리기 위해 파티션과 컨슈머 갯수를 늘려서 운영할 수 있다. 파티션을 여러개로 운영하는 경우 데이터를 병렬처리하기 위해서 파티션 갯수와 컨슈머 갯수를 동일하게 맞추는 것이 가장 좋은 방법이다.
컨슈머 애플리케이션은 안전하게 종료되어야 한다. 정상적으로 종료되지 않은 컨슈머는 세션 타임아웃이 발생할때까지 컨슈머 그룹에 남게된다.
컨슈머와 파티션 할당 정책은 컨슈머의 assignor에 의해 결정된다. 카프카에서는 RangeAssignor, RoundRobinAssignor, StickyAssignor를 제공한다. 카프카 2.5.0는 RangeAssignor가 기본값으로 설정된다.
Commit
Rebalancing
필수 옵션
Consumer
필수 옵션
Producer
카프카 브로커로 커맨드 라인 툴 명령을 내릴 때 브로커의 버전과 커맨드 라인 툴 버전을 반드시 맞춰서 사용하는 것을 권장한다.
1. 첫번째는 카프카 컨슈머 또는 프로듀서가 카프카 브로커에 생성되지 않은 토픽에 대해 데이터를 요청할 때, 그리고 두번째는 커맨드 라인 툴로 명시적으로 토픽을 생성하는 것이다.
kafka-producer-perf-test.sh
kafka-topics.sh
로컬 카프카 설치 및 실행
1. 클라우드 서비스 - 컨플루언트 컨플루언트는 카프카에 대한 개념을 최초로 생각하고 아키텍쳐를 제안, 개발한 인물인 제이 크랩스와 그의 동료들이 설립한 회사이다. 제이 크랩스는 링크드인에서 데이터 인프라를 담당하는 아키텍트 팀장이었는데 카프카의 성장 가능성과 미래를 보고...
개요 카프카 클러스터를 실행하기 위해서는 주키퍼가 필요하다. 주키퍼의 서로 다른 znode에 클러스터를 지정하면 된다. root znode에 각 클러스터별 znode를 생성하고 클러스터 실행 시 root 가 아닌 하위 znode로 설정...
카프카 클라이언트는 통신하고자 하는 리더 파티션의 위치를 알기 위해 데이터를 주고(프로듀서) 받기(컨슈머) 전에 메타데이터를 브로커로부터 전달받는다. 메타데이터는 다음과 같은 옵션을 통해 리프레쉬 된다. 카프카 프로듀서 메타데이터 옵션 ...
토픽 이름 제약 조건 빈문자열 X 마침표 1개(.) 또는 마침표 2개(..)로 생성 X 249자 이상 X 사용 가능 문자 (이외 문자 X) 영어 대소문자 숫자 0~9 ...
1. 브로커에 한번 적재된 레코드는 수정할 수 없고 로그 리텐션 기간 또는 용량에 따라서만 삭제된다. 2. 레코드의 구성 timestamp - 타임스탬프 레코드의 타임스탬프는 스트림 프로세싱에서 활용하기 위한 시간을 저장하는 용도로 사용된다. 카...
1. 토픽은 카프카에서 데이터를 구분하기 위해 사용하는 단위이다. 2. 토픽은 1개 이상의 파티션을 소유하고 있다. 3. 파티션에는 프로듀서가 보낸 데이터들이 들어가 저장되는데 이 데이터를 ‘레코드(record)’라고 부른다. 4. 파티션은 자료구조에서 접하는 큐(queue)와 비...
카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체인 애플리케이션이다.
데브원영님의 카프카 강의를 바탕으로 공부한 내용을 정리하였습니다!