본문 바로가기

Programming/Apache Kafka

아파치 카프카 실습 (Apache Kafka) / 카프카 커넥트란

반응형

* 카프카 커넥트

카프카 오픈소스에 포함된 툴 중 하나로 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션이다.

반복적인 파이프라인 생서 작업이 있을 시 매번 프로듀서, 컨슈머 애플리케이션을 개발하고 배포, 운영하기 때문에 비효율적이기에

특정한 작업 형태를 템플릿으로 만들어놓은 커넥터를 사용하면 효율적으로 사용할 수 있다.

 

 

# 프로듀서 역할을 하는 소스 커넥터(source connector)

# 컨슈머 역할을 하는 싱크 커넥터(sink connector)

 

소스 커넥터, 싱크 커넥터가 커넥트에서 실행되는 모습

 

 

# 태스크

사용자가 커넥트에 커넥터 생성 명령을 내리면 커넥트는 내부에 커넥터와 태스크를 생성한다.

커넥터는 태스크를 관리하고, 태스크는 커넥터에 종속되는 개념으로 실적적인 데이터 처리를 한다.

이에 데이터 처리를 정상적으로 하는지 확인하기 위해 각 태스크의 상태를 확인해야 한다.

 

커넥터를 실행할 경우 태스크가 실행된다.

 

 

# 컨버터

컨버터는 데이터를 처리하기 전에 스키마를 변경하도록 도와준다.

JsonConverter, StringConverter, ByteArrayConverter를 지원하고 필요하다면 커스텀 컨버터를 작성하여 사용할 수 있다.

 

 

* 커넥트 실행 방법

커넥트 실행 방법은 크게 두 가지가 있다.

 

# 단일 모드 커넥트

   - 단일 모드 커넥트는 단일 애플리케이션으로 실행된다.

   - 커넥터를 정의하는 파일을 작성하고 해당 파일을 참조하는 단일 모드 커넥트를 실행함으로써 파이프라인을 생성할 수 있다.

   - 1개 프로세스만 실행되는 것이 특징이다.

   - 단일 프로세스로 실행되기 때문에 고가용성 구성이 되지 않아 단일 장애점이 될 수 잇다.

   - 중요도가 낮은 파이프라인을 운영할 때 사용한다.

 

# 분산모드 커넥트

   - 분산 모드 커넥트는 2대 이상의 서버에서 클러스터 형태로 운영한다.

   - 2개 이상의 커넥트가 클러스터로 묶이면 1개의 커넥트가 중단되더라도 남은 1개의 커넥트가 파이프라인을 지속적으로 처리한다.

   - 데이터 처리량의 변화에도 유연하게 대응할 수 있다.

   - 상용환경에서는 분산 모드 커넥트를 2대 이상 구성하고 설정하는 것이 좋다.

분산 모드 커넥트

 

 

# 카프카 커넥트 REST API

REST API를 사용하면 현재 실행 중인 커넥트의 커넥터 플로그인 종류, 태스크 상태, 커넥터 상태 등을 조회할 수 있다.

커넥트는 8083 포트로 호출하며, HTTP 메서드 기반 API를 제공한다.

아래는 커넥트에서 지원하는 REST API 종류를 정리한 표이다.

요청 메서드 호출 경로 설명
GET / 실행 중인 커넥트 정보 확인
GET /connectors 실행 중인 커넥터 이름 확인
POST /connectors 새로운 커넥터 생성 요청
GET /connectors/{커넥터 이름} 실행 중인 커넥터 정보 확인
GET /connectors/{커넥터 이름}/config 실행 중인 커넥터의 설정값 확인
PUT /connectors/{커넥터 이름}/config 실행 중인 커넥터 설정값 변경 요청
GET /connectors/{커넥터 이름}/status 실행 중인 커넥터 상태 확인
POST /connectors/{커넥터 이름}/restart 실행 중인 커넥터 재시작 요청
PUT /connectors/{커넥터 이름}/pause 커넥터 일시 중지 요청
PUT /connectors/{커넥터 이름}/resume 일시 중지된 커넥터 실행 요청
DELETE /connectors/{커넥터 이름}/ 실행 중인 커넥터 종료
GET /connectors/{커넥터 이름}/tasks 실행 중인 커넥터의 태스크 정보 확인
GET /connectors/{커넥터 이름}/tasks/{태스크아이디}/status 실행 중인 커넥터의 태스크 상태 확인
POST /connectors/{커넥터 이름}/tasks/{태스크아이디}/restart 실행 중인 커넥터의 태스크 재시작 요청
GET /connectors/{커넥터 이름}/topics 커넥터별 연동된 토픽 정보 확인
GET /connector-plugins/ 커넥트에 존재하는 커넥터 플로그인 확인
PUT /connector-plugins/{커넥터 플러그인 이름}/config/validate 커넥터 생성 시 설정값 유효 여부 확인

 

 

커넥트 세팅 및 구현에 대한 정리는 다음 포스팅에서 하겠다.

 

 

 

 

해당 내용 출처 아파치 카프카 애플리케이션 프로그래밍 with 자바

 

반응형