두 프로젝트를 사용
1) community :
각 서비스들이 모여있음
2) gateway :
분산된 서비스들을 한번에 처리될 수 있게 도와줌
yml로 각 서비스가 다른 포트에서 돌아갈 수 있게 설정
configuration도 다르게 실행될 수 있도록 설정
게이트 웨이 필터 활용방식 :
추가 설명 : https://happycloud-lee.tistory.com/218
API Gateway가 필요한 이유
안전한 API유통과 Client 요청별로 유연하게 대처하기 위해
SCG는 Predicates(수행을 위한 사전 요구조건)와 Filter를 조합하여 동작
세가지 용어
=> yml 설정 파일에도 정의할 수 있고 java code 에서 정의 가능
spring:
cloud:
gateway:
routes:
- id: community-shop
uri: http://localhost:8081 # 포워딩할 주소
# http://localhost:8000으로 들어오면 http://localhost:8081 로 포워딩
predicates:
- Path=/api/shop/**
# 해당 gateway 서버의 /api/shop/**로 들어오는 놈은 community-shop service로 인식하겠다는 조건
filters:
- RewritePath=/api/(?<path>.*), /$\{path}
- name: LogExecution
args:
simpleUid: true
inSeconds: true
- id: community-user
uri: http://localhost:8082
predicates:
- Path=/api/user/**
filters:
- name: RewritePath
args:
regexp: /api/(?<path>.*)
replacement: /$\{path}
- LogExecution=true, true
- id: community-area
uri: http://localhost:8083
predicates:
- Path=/api/area/**
filters:
- RewritePath=/api/(?<path>.*), /$\{path}
1) 기존 디스커버리 패턴
마이크로서비스를 호출할 때 포트를 신경쓰지 않아도 된다면? => Spring Gateway
1.User 서버는 Order 서버에 보내야할 요청을 Gateway로 전달
2. Gateway는 Eureka Server로 Order 서버의 정보 discovery
3. Gateway가 Order Server로 연결
장점 :