ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kafka Connector 구성하기
    TIL 2023. 2. 27. 08:32

    1. kafka Connector란?

    • Kafka Connect 를 통해 Data 를 Import/Export 가능
    • 코드없이 Configuration 으로 데이터를 이동
    • Standalone mode, Distribution mode 지원
      • RESTful API 통해 지원
      • Stream 또는 Batch 형태로 데이터 전송 가능
      • 커스텀 Connector 를 통한 다양한 Plugin 제공 (File, S3, Hive, Mysql, etc....)


    2. 사전 준비

    - Kafka 서버와 Zookeeper 서버가 가동 되어 있어야 한다.

    - Kafka Connect Jdbc 파일을 구한다.

    kafka connect jdbc 파일

    - Kafka Connect를 설치한다 http://packages.confluent.io/archive/6.1/confluent-community-6.1.0.tar.gz

    -본인 Db에 맞는 Connector .jar 파일을 구한다.

    나의 경우 MySQL버전에 맞는 커넥터를 구하였다.

    - 구한 connector .jar 파일을 \confluent-6.1.0\share\java\kafka 폴더에 넣어준다.

    - \confluent-6.1.0\etc\kafka 의 connect-distributed.properties를 수정한다.

     

    plugin.path를 다운받은 jdbc kafka connector의 위치로 지정

     


    3. 카프카 커넥터를 실행한다.

    ./bin/connect-distributed ./etc/kafka/connect-distributed.properties

     


     

    4. connector를 등록한다.

     

     

    Source connector 등록
    Sink connector 등록
    get 요청을 통해 커넥터가 정상적으로 등록된것을 확인 할 수 있다.


    5. DB test

    testing이란 테이블에 여러가지 값을 insert하였다

     

    kafka connetor를 통해 테이블이 자동 생성된 모습

     

    기존의 db와 완벽히 동기화가 된 것을 볼 수 있다

     


    6.결론

    우선, Kafka와 Kafka Connector는 독립적인 구성이다.  kafka의 MQ 시스템을 극대화 하는 추가 구성의 느낌이다. kafka가 메시지 전달에 그쳤다면, Kafka Connector는 소스에 직접 관여하여, 변화를 감지하고 이를 kafka의 topic으로 전달 하게 해준다.지금 이 모든 일련의 과정이 Spring의 서버를 거치지 않고 수행 되었다. 이점은 대단한 강점이 될 것이라고 생각한다.

     

    물론 Database의 동기화를 하는 단순한 예제 이지만, DB 뿐만이 아니라 다양한 소스에 활용 할 수 있다고 한다. 

    이 예제에서는 Source Connector와 Sink Connector를 한쌍으로 사용하였지만, SpringBoot와의 활용에서는 sink connector하나 만으로, db동기화도 가능할것으로 생각된다.

     

     

    예를 들면 이런식의 db를 위한 mq 시스템을 구축 할 수 있을 것 이다.

     

     

     

     

     

     

     

     

    참고<인프런,Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA), dongwonlee>

    'TIL' 카테고리의 다른 글

    Ubuntu 라우팅 꼬였을때 초기화 방법  (0) 2023.03.06
    Docker-composes 사용하기  (1) 2023.03.06
    특정 포트 막혀있을 때 해결 방법  (1) 2023.02.27
    FeignClient vs RestTemplate  (1) 2023.02.13
    스키마/페이로드/필드  (1) 2023.02.12
Designed by Tistory.