큰 틀의 구현 방식
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..