일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준 16236
- 백준 17626
- JPA
- 백준 파이썬
- Coroutine
- 백준 17779
- 파이썬
- java
- spring oauth
- Spring Boot
- 프로래머스
- sql 기술면접
- MySQL
- re.split
- 프로그래머스
- MSA
- spring security
- 백준 16719
- 백준
- JVM
- java 기술면접
- Spring
- 웹어플리케이션 서버
- with recursive
- 백준 15685
- 백준 19238
- Kotlin
- spring cloud
- springboot
- 백준 16235
- Today
- Total
목록Programming/MSA (13)
시작이 반
https://tmdrl5779.tistory.com/188?category=875847 [MSA] Spring Cloud ( Kafka 데이터 동기화 ) 이전에는 FeignClient를 사용하여 user-service에서 http통신을 통해 order-service API를 불러왔다. 현재는 서비스마다 각각의 DB를 사용하고 있다. 하지만 order-service가 여러개 실행된다면 어떻게 될까?? 하.. tmdrl5779.tistory.com 이전 포스팅에서 설명했던 order-service가 여러개 켜져있을 경우이다.만약 각 서비스당 하나의 DB를 가지고 있다면 같은 api를 호출해도 각각 다른 DB에 분산되어 저장되기 때문에 일괄적으로 데이터를 가져올때 어려움이 있다.이 때문에 DB를 하나만 사용..
서비스의 시나리오를 확인해보자. user-service에서 회원가입, 로그인을하고 user는 catalog-service에서 상품목록을 보고 order-service를 통해 해당 상품을 주문한다. 상품을 주문하면 catalog-service의 상품개수가 줄어들어야 한다. 이러한 데이터를 동기화 하기위해 Kafka를 사용해보자. order-service에서 Kafka Topic으로 메시지 전송 -> Producer catalog-service에서 Kafka Topic에 전송 된 메시지 취득 -> Consumer catalog-service에 Kafka적용 ( Consumer ) 우선 kafka관련 디펜던시를 추가해준다. Kafka config와 consumer를 작성해야한다. Kafka config관련 코..
이전에는 FeignClient를 사용하여 user-service에서 http통신을 통해 order-service API를 불러왔다. 현재는 서비스마다 각각의 DB를 사용하고 있다. 하지만 order-service가 여러개 실행된다면 어떻게 될까?? 하나의 서비스가 여러개 실행된다면 각각 가지고 있는 DB또한 달라진다. order-service1 ----- db1 order-service2 ----- db2 order-serivce3 ----- db3 .... 그럼 이때 사용자가 주문을 하게된다면 어떻게 될까?? user1 사용자가 여러 주문을 하게된다면 처음에는 db1에 주문정보가 저장되고 다음 주문은 db2, 다음 주문은 db3, 또 다음 주문은 db1 이런식으로 round robin 형식으로 순차적으..
Microservice간의 통신은 동기방식과 비동기 방식 2가지가 있다. 동기방식은 하나의 요청이 들어오면 다른작업을 하지 못한다. 이는 RestTemplate, FeignClient의 HTTP 통신 방법으로 구현이 가능하다. 비동기방식은 변경된 사항을 전달해주고 서비스는 더이상 관여를 하지 않는 방식이디. 이는 AMQP라는 프로토콜을 이용하여 구현이 가능하다. Microservice간의 통신으로 FeignClient를 사용해보겠다. FeignClient - Rest Call을 추상화한 Spring Cloud Netfix에 포함된 라이브러리이다. 사용방법으로는 호출하려는 HTTP Endpoint에 대한 Interface를 생성하고 @FeingClient를 선언한다. 기존에 User-Service appl..
외부 Config 정보 바꾸기는 3가지가 있다. - 서비스 재기동 - Actuator refresh - Spring cloud bus 이전 포스트는 Actuator refresh까지 설명하였다. Actuator refresh는 어플리케이션 서버가 한두개면 문제가 되지 않지만 수백개의 서비스가 있을경우 각각의 어플리케이션마다 다 refresh를 수동으로 해줘야 하기 때문에 번거롭다. 이보다 더 편한 방법은 3번째 방법인 Spring cloud bus를 이용하면 된다. 이방법은 한쪽에서 refresh를 config와 연결된 모든 서비스를 refresh를 해주는 방법이다. 상태 및 구성에 대한 변경사하으 연결된 노드에게 전달한다. (Broadcast) 구현방법 AMQP : 메시지 지향 미들웨어를 위한 개방형 ..
분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보(application.yml)를 외부 시스템에서 관리 하나의 중앙화 된 저장소에서 구성요소 관리 가능 각 서비스를 다시 빌드하지 않고, 바로 적용 가능 어플리케이션 배포 파이프라인을 통해 DEV-UAT-PROD 환경에 맞는 구성 정보 사용 Local 저장소, Git저장소 등에서 관리를 할 수 있다. 우선 Spring Cloud Config 프로젝트를 생성하자 config server를 디펜던시로 등록한다. main 클래스에 EnableConfigServer를 등록해준다. application.yml 파일 (포트번호 8888) server: port: 8888 spring: application: name: config-service profile..
지금까지 API Gateway, Discovery 를 만들었다. 이번에는 간단한 User-Service, order_service, catalog-service를 만들고 API와 Discovery에 등록해 볼 것이다. USER-SERVICE 사용할 APIs (함수 내용은 설명하지 않겠습니다.) 기능 URI HTTP Method 사용자 정보 등록 /user-service/users POST 전체 사용자 조회 /user-service/users GET 사용자 정보, 주문 내역 조회 /user-service/users/{user_id} GET 작동 상태 확인 /user-service/health_check GET 환영 메시지 /user-service/welcome GET (디스커버리에 서비스를 등록하기 위해서..
API gateway를 통하여 다른 서비스에 접속하였을때 자바코드와 yml을 이용하여 필터를 적용 할 수 있다. (first-service, secon-service는 안만든 상태임 filter를 설명하기 위해 예시로 작성) Java코드를 통하여 필터 적용 Configuration, Bean 어노테이션 작성(캡쳐할때 주석처리했는데 작성해야함) 프로젝트 밑에 config라는 폴더를 만들고 필터를 적용할 코드를 작성하기 위해 FilterConfig라는 class를 생성 하였고 Configuration 어노테이션을 등록해준다. 위 사진을 예로 든다면 route정보를 입력한다. path 의 정보인 /first-service/** 라는 정보로 들어가게 된다면 uri인 localhost:8001의 주소가 실행된다는..