SpringCloud Gateway
什麼是微服務網關
微服務網關是整個微服務API請求的入口,可以實現日誌攔截、權限控制、解決跨域問題、限流、熔斷、負載均衡、黑名單與白名單攔截、授權等。
過濾器與網關的區別
過濾器用於攔截單個服務
網關攔截整個的微服務
Zuul與Gateway有那些區別
Zuul網關屬於netfix公司開源的產品屬於第一代微服務網關
Gateway屬於SpringCloud自研發的第二代微服務網關
相比來說SpringCloudGateway性能比Zuul性能要好
注意:Zuul基於Servlet實現的,阻塞式的Api, 不支持長連接。
SpringCloudGateway基於Spring5構建,能夠實現響應式非阻塞式的Api,支持長連接,能夠更好的整合Spring體系的產品。
Gateway環境快速搭建
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
####服務網關名稱
spring:
application:
name: springcloud-alibaba-geteway
cloud:
gateway:
discovery:
locator:
####開啓以服務id去註冊中心上獲取轉發地址
enabled: true
###路由策略
routes:
###路由id
- id: member
####轉發lb:springcloud-alibaba-impl-member/
uri: lb://springcloud-alibaba-impl-member/
filters:
- StripPrefix=1
###匹配規則
predicates:
- Path=/member/**
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
###分組
group: DEFAULT_GROUP
###類型
file-extension: yaml
解決跨域的問題
- 1.HttpClient轉發
- 2.使用過濾器允許接口可以跨域 響應頭設置
- 3.Jsonp 不支持我們的post 屬於前端解決
- 4.Nginx解決跨域的問題保持我們域名和端口一致性
- 5.Nginx也是通過配置文件解決跨域的問題
- 6.基於微服務網關解決跨域問題,需要保持域名和端口一致性
- 7.使用網關代碼允許所有的服務可以跨域的問題
- 8.使用SpringBoot註解形式@CrossOrigin