Kafka Connect는 Kafka에서 공식적으로 제공하는 컴포넌트이고, 반복적인 데이터 파이프라인을 효과적으로 배포하고 관리할 수 있다.
Kafka는 Connect와 Connector로 이루어져 있다.
Connect는 Connector를 동작하도록 실행해주는 프로세스
파이프라인을 실행하는 Connector를 동작하기 위해선 Connect를 실행해줘야 하는 것이다.
Connector는 실질적으로 데이터를 처리하는 코드가 담긴 jar 패키지
Connector는 일련의 템플릿과 같은 동작을 하는 코드 뭉치
Connector 안에는 파이프라인에 필요한 여러 동작들과 실행하는 메서드들이 포함되어 있다.
토픽에서 데이터를 어떤 DB에 저장하고싶다?
-> Connector에 insert 메서드를 구현하고 Connector를 실행하면 된다.
Connector는 두가지로 이루어져 있다.
Sink Connector
Sink Connector는 어딘가로 데이터를 싱크한다는 뜻.
특정 토픽에 있는 데이터를 다른 저장소에 저장하는 역할.
즉, 컨슈머와 같은 역할이라고 할 수 있다.
토픽의 데이터를 특정 DB 테이블에 넣고싶다면 Sink Connector를 만들어야 한다.
그리고 보통 Sink Connector 글자 앞에 어떤 DB에 넣을 것인지 선언한다.
ex) 오라클의 DB에 데이터를 저장하고 싶다?
oracle-sink-connector
ex) GCP의 Pub/Sub에 데이터를 전송하고 싶다?
cps-sink-connector (cps는 Cloud Pub/Sub)
Source Connector
Source Connector는 DB로 부터 데이터를 가져와서 토픽에 넣는 역할.
즉, 프로듀셔 역할이라고 할 수 있다.
Connect에도 두 가지 종류가 있다.
단일 실행모드 Connect
단일 실행모드는 간단한 데이터 파이프라인을 구성하거나 개발용
분산 모드 Connect
실제 프로덕션 환경에서 사용
분산 모드는 아래 사진과 같은 구조로 생각하면 된다.
즉, 두 개 이상 Connect가 하나의 클러스터로 묶이는 것
클러스터로 묶은 Connect는 일부 Connect에 장애가 발생하더라도 자연스럽게 Fail-over를 한다.
Connect가 실행될 때 커넥터가 어디에 위치하는지 config 파일에 그 위치를 지정해줘야 한다.
위 사진처럼 Connector jar 페키지가 있는 디렉토리를 config 파일에 지정해줘야 된다.
그리고 Connect를 실행하면 jar 파일의 Connector들을 모아서 Connector를 실행할 수 있도록 준비하는 것이다.
그 후에 실행중인 Connect에서 REST API를 통해 Connector를 실행하여 파이프라인을 생성한다.