Apache Kafka
데이터 동기화 Orders ➔ Catalogs
- Order Service에 요청된 주문 수량 정보를 Catalog Service에 반영
- Order Service에서 Kafka Topic으로 메시지 전송 ➔ Producer
- Catalog Service에서 Kafka Topic에 전송된 메시지 취득 ➔ Consumer
Order-Service와 Catalog-Service에 Kafka 기능 구현 추가
- ZooKeeperServer와 KafkaServer 기동 + Eureka Server (discovery-service) 실행
- config-service, apigateway-service, order-service, catalog-service 실행
수량 데이터 업데이트 완료
Multiple Order Service에서의 데이터 동기화 문제 👉 Kafka Connect로 해결
만약 Order-Service가 2개 기동되었다면 user의 요청을 분산 처리하게 된다.
그러면 orders 데이터도 분산 저장되어 동기화 문제가 발생한다.
이 문제를 Kafka Connect를 활용하여 단일 데이터베이스를 사용하도록 만들어서 해결하면 된다.
order-service를 각각 실행했을 때 독립적인 데이터베이스를 갖고 있기 때문에 주문한 내역이 분산되어 저장되었다.
💡 해결방법 정리
👉 order-service에 요청된 주문 정보를 DB가 아니라 Kafka Topic으로 전송한다. ➔ Kafka Source Connect가 전송
👉 Kafka Topic에 설정된 Kafka Sink Connect를 사용해 단일 DB에 저장해 데이터를 동기화한다.
🔹 order-service에서 단일 데이터베이스에 가지고 있던 내용 제거 ➔ order-service에 전달되었던 메시지 값을 Message Queuing Server에 전달 ➔ Sink Connect에 의해 단일 데이터베이스에 있는 값을 RDB에 몰아 넣기
H2 DB ➔ MariaDB로 변경
단일 데이터베이스에 저장되어 있는 것을 확인할 수 있다.
'Spring Framework > ☁️ Spring Cloud' 카테고리의 다른 글
[Spring Cloud] Microservices간의 통신 - RestTemplate & FeignClient (0) | 2023.12.07 |
---|---|
[Spring Cloud] Spring Cloud Bus와 RabbitMQ를 사용하여 Config 정보 반영하기 (0) | 2023.11.27 |
[☁️ Spring Cloud] Spring Cloud Config 개념 및 적용 방법 (2) | 2023.11.27 |
[☁️ Spring Cloud] MSA와 Spring Cloud (0) | 2023.11.11 |