MSA(마이크로 서비스 아키텍처)

큰 틀의 구현 방식

E재HO 2023. 7. 24. 22:22

eureka 서버를 일단 연다.

 

열고 각 서비스 단위별로 등록을 해준다.

 

어떻게??

각 서비스 마다 

 

@EnableDiscoveryClient 클라이언트로 쓰겠다고 등록해주고

to be continue..

 

application.yaml이나 application.properties가서

server.port = 서버 사용 포트 0 (0은 자동으로 이어주는 것)

spring.application.name : user-service ==user-service라는 이름으로 유레카에 등록하겠다

eureka.client.register-with-eureka : true 유레카에 나를 등록한다.

eureka.client.fetch-registry : true 유레카 서버로 부터 인스턴스들의 정보를 주기적으로 가져올 것인지 설정하는 속성이다!

defaultZone은 그냥 유레카 디팔트 존 - 자세히 모른다. 그냥 유레카 디파트 존이 유레카 서버라는 것을 의미한다.

무튼 이런 설정을 해주면 각각의 서비스단위별로 유레카에 올라간다.

 

to be continue...

APIGATEWAY

각 서비스를 그럼 어떻게 연결해야할까?

위의 그림에서 보듯 일일이 하나씩 연결시켜주면 귀찮고 어렵다.

 

근데??

 

APIGATEWAY

APIGATEWAY

APIGATEWAY

 

이 APIGATEWAY 라는 멋진 것이 단일 접점으로 작용한다.

 

APIGATEWAY는 프록시처럼 절로 접속하면 알아서 각 서비스로 라우팅해주고 각서비스에서 반환된 정보를 다시 필요한 클라이언트로 돌려준다.

 

얘는 

1. 인증 권한부여

2. 서비스 검색 통합

3. 응답 캐싱

4. 정책 회로 차단, qos다시 시

5. 속도제한

6. 부하분산

7. 로깅, 추적, 상관 관계

8. 헤더 쿼리 

등등의 장점이 많다.

 

to be continue...

 

그럼 어떻게 쓰냐

 

routes.id 라우팅할 곳의 아이디

uri : uri이다

predicate: 조건

-path: /first-service/** 

first-service/~~하는 곳엔 다 id가 first-service로 등록된 것의 경로 uri로 찾아간다는 말이다 . 

새로 apigateway서비스를 하나 만들고 yaml파일에 위와같이 등록했따.

 

이런식으로 날아가게 된다.

그렇기 떄문에 실제 서비스 컨트롤러에 

이렇게 바꿔줘야한다.

 

스프링 클라우드 필터 (gateway 필터)

이건 스프링 클라우드 필터인데 따로 포스팅할 예정이다 이런게 있다는 걸 큰 틀에서 놓치고 싶지 않았다.

 

최종적으로 게이트 웨이의 yaml은 

 

이렇게 바뀐다. 뭐가 바뀐지 알아보겠는가?

기존에 uri에 직접 localhost:9999/first-service 이런게 있었다면 

이제는 

lb://MY-SECOND-SERVICE 이렇게 바뀌었따.

유레카 써버에 가서 찾아서 가져오는 것이다.

 

유레카 서버에 가서 MY-SECOND-SERVICE라는 이름을 찾고, 그 이름에 해당하는 주소 값을 읽어온다고 생각하면 된다.

 

to be continue..