현재 마이크로 서비스간의 통신을 위해 user-service와 order-service가 나누어져 있다. 그런데 만약 order-service에 주문이 많이 들어와 order-service의 서버를 하나 늘렸다고 해보자. 이때 어떤 주문은 60001번 포트 order-service에 저장되고, 다른 주문은 60002번 order-service에 저장된다면, 유저A가 여러 번 주문했을 경우 유저A의 주문 정보는 60001:order-service, 60002:order-service에 흩어져 저장되었을 수 있다. 이것이 바로 데이터 동기화 문제이다.
하여 이러한 문제를 해결하기 위해 아예 하나의 DB만을 사용하도록 해결할 수도 있지만. 이는 수많은 트랜잭션 관리에 대한 문제가 생길 수 있다.
또 생각해볼 수 있는 방법은 Kafka 혹은 RabbitMQ가 제공하는 메시지 큐잉 서비스를 사용하여 두 개의 order-service DB를 동기화 해주는 것이다.
혹은 아래와 같이 먼저 데이터가 메시지 큐잉 서비스를 거치게 하는 방법도 있다.
출처 : 인프런 Lee Dowon님의 강의와 PDF 자료
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4
'spring cloud' 카테고리의 다른 글
Spring Cloud micro service 간의 통신 - Feign Client (0) | 2022.03.09 |
---|---|
Spring Cloud micro service 간의 통신 - Rest Template (0) | 2022.03.08 |
Spring Cloud Bus (0) | 2022.03.06 |
Spring Cloud Config (0) | 2022.03.05 |
API Gateway Service - Spring Cloud Gateway + Eureka (0) | 2022.03.01 |