본문 바로가기

FrameWork/Spring Cloud19

마이크로서비스간에 데이터 동기화 - 3 데이터 동기화 Orders -> Catalogs Orders Service에 요청 된 주문의 수량 정보를 Catalogs Service에 반영 Orders Service에서 Kafka Topic으로 메시지 전송 -> Producer Catalogs Service에서 Kafka Topic에 전송 된 메시지 취득 -> Consumer 현재 각 서비스는 독립적인 DB를 가지고 있음 독립적인 DB들의 동기화를 위해 Kafka 를 이용 Kafka topic에 메시지를 보내 동기화작업을 진행 Order(Producer) 설정 , Catalog(Consumer) 설정 Catalog-Service build.gradle - spring-kafka 추가 Message Queuing 과 관련된 패키지, 클래스 생성 Kaf.. 2021. 9. 8.
마이크로서비스간에 데이터 동기화 - 2 Apache Kafka Apache Software Foundation의 Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트 Open Source Message broker Project 링크드인(Linked-in)에서 개발, 2011년 오픈 소스화 2014년 11월 링크드인에서 Kafka를 개발하던 엔지니어들이 Kafka개발에 집중하기 위해 Confluent라는 회사 창립 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공 Apple, Netflix, Shopify, Yelp, Kakao, New York Times, Cisco, Ebay, Paypal, Hyperledger Fabric, Uber,Salesforce.com 등이 사용 Kafka가 개발되기.. 2021. 9. 8.
마이크로서비스간에 데이터 동기화 - 1 MicroService(Orders Service)를 2개 가동 했을 경우 2개의 데이터 베이스가 생성됨 Users의 요청 분산 처리 Orders 데이터도 분산 저장 -> 동기화 문제 하나의 Database 사용해 여러개의 서비스를 동기화 여러개의 MQ(Message Queuing)를 통해 Database간의 동기화 Kafaka Connector + DB 를 사용해 데이터베이스 동기화 두개의 order-service 가동 데이터를 저장했을 때 두개의 서버에 나눠서 저장됨 조회도 번갈아가면서 조회됨 게이트웨이가 RR(Round Robbin)방식으로 번갈아가면서 저장, 호출 함 2021. 9. 8.
마이크로서비스간 통신 - Feign Web Service Client FeignClient -> HTTP Client REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 사용방법 호출하려는 HTTP Endpoint에 대한 Interface를 생성 @FeignClient 선언 Load balanced 지원 Feign Web Service Client openfeign 라이브러리 추가 @FeignClient Interface 생성 package com.example.userservice.client; import com.example.userservice.vo.ResponseOrder; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind... 2021. 9. 7.
마이크로서비스간 통신 - Resttemplate MSA에선 물리적으로 분산된 서비스들간에 통신이 필요함 대표적인 HTTP 통신 방법인 RestTemplate SpringCloud에서 사용하는 Feign Client Communication Types 동기 방식으로 통신 (Synchronous HTTP communication) 하나의 프로세스의 요청에 대해 작업이 끝나야 다른 작업을 호출 하는 방식 비동기 방식으로 통신 (Asynchronous commnunication over AMQP) amqp라는 프로토콜을 이용해 순차적으로 동기하는 것이 아니라 연결되어 있는 모든 서비스를 변경된 사항을 전달할 수 있음 Rest Template Java로 만들어진 웹어플리케이션 간에 HTTP 프로토콜을 이용해 또 다른 서비스(API)를 호출하는 방식 User S.. 2021. 9. 6.
암호화(Encryption) - 비대칭 키 비대칭키(Asymmetric Encryption) 암호화와 복호화할때 다른 키를 사용 하는 방식 JDK Keytool을 이용해 Public(복호화용), Private(암호화용) Key 생성 알고리즘: RSA(공개키 암호화시스템중 하나) 생성 시 셀프 인증 패스워드는 임의로 alias 설정 keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=TaeYoon Lee, OU=API Development, O=ty1306.tistory.com, L=Seoul, C=KR" -keypass "yoon1234" -keystore apiEncryptionKey.jks -storepass "yoon1234" Private Key 확인 keytool -li.. 2021. 9. 5.