본문 바로가기

MSA (MicroServiceArchitecture)/MSA Application (온라인 쇼핑몰))

8. Kafka Connect 활용하여 sink 적용하기

# Kafka Connect를 활용하여 sink를 적용하는 방법에 대해 알아보기

1. 3개의 서비스가 실행되어 있어야 한다.

- 아파치 주키퍼

- 아파치 카프카

- 아파치 커넥터

2. 실행 프로세스는 아래와 같다.

- DB와 커넥션을 통해 다른 DB 및 경로로 데이터를 Sink 시키는 방식이다.

3. Kafka Sink 생성하기

- 해당 내용을 postman에 등록을 해줘야 한다.

{
    "name":"my-sink-order-connect",
    "config":{
        "connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector",
        "connection.url":"jdbc:mysql://localhost:3306/mydb",
        "connection.user":"root",
        "connection.password":"test1357",
        "auto.create":"true",
        "auto.evolve":"true",
        "delete.enabled":"false",
        "tasks.max":"1",
        "topics":"orders"
    }
}

- 포스트맨 등록

- 등록된 sink 커넥트 확인, 위에서 등록한 커넥터를 확인 할 수 있다.

- localhost:8083/connectors/my-sink-order-connect/status 로 등록된 커넥터의 현재 상태를 확인할 수 있다.

4. 동작 프로세스

① Users는 Postman을 통해 REST API주소로 서비스를 호출한다.

② REST API 이다. (POST, GET, PUT, DELETE)

③ Postman 프로그램을 실행하여 RestAPI 주소를 호출한다.

④ Service이다. 실제 REST API로 호출된 서비스 프로세스가 실행된다.

⑤ Apache Kafka와 Connector 이다.

⑥ MySQL Database 이다.API를 호출하고 DB에서 데이터를 가져오거나 저장한다.

5. 실제 서비스 동작 및 Kafka Connector를 통한 MySQL DB에 데이터를 저장하기

서비스는 총 5개가 필요하다.

[1.Discovery, 2.주문, 3.사용자, 4.제품 카탈로그, 5.API GW]

- 실행 영상은 아래와 같다.

[MP4 버전]

- 서비스들을 컨테이너로 만들고 K8S에 올려보는 작업을 하면 마무리 될거 같다.

- 웹에서 orders의 내용을 출력하면 아래와 같다. (json 형태로 출력 되는것을 확인 할 수 있다.)

- 현재까지의 작업을 git에 업로드 해 놓았다.

https://github.com/stars/Nanninggu/lists/msa-service-code-kafka

 

Nanninggu's list / MSA-Service-Code-Kafka

MSA-Service-Code-Kafka

github.com

- 끝 -