Nacos+Spring Cloud Gateway動態(tài)路由配置
1啟動我們的Nacos匾南,配置我們服務(wù)需要配置文件荞胡。
nacos配置列表
image.png
比如youlai-gateway.yaml網(wǎng)關(guān)配置文件。
網(wǎng)關(guān)的配置文件
youlai-gateway.yml
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 啟用服務(wù)發(fā)現(xiàn)
lower-case-service-id: true
routes:
- id: mall-consumer
uri: lb://mall-consumer
predicates:
- Path=/consumer/brand/**
filters:
- SwaggerHeaderFilter
- StripPrefix=1
- id: youlai-auth
uri: lb://youlai-auth
predicates:
- Path=/youlai-auth/**
filters:
- SwaggerHeaderFilter
- StripPrefix=1
- id: mall-pms
uri: lb://mall-pms
predicates:
- Path=/mall-pms/**
filters:
- SwaggerHeaderFilter
- StripPrefix=1
- id: mall-ums
uri: lb://mall-ums
predicates:
- Path=/mall-ums/**
filters:
- SwaggerHeaderFilter
- StripPrefix=1
bootstrap.yml
spring:
application:
name: youlai-gateway
cloud:
nacos:
注冊中心
discovery:
server-addr: http://localhost:8848
配置中心
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yaml
mall-consumer的配置文件
mall-consumer.yaml
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/mall?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true
username: root
password: 514730
bootstrap.yml
application:
name: mall-consumer
cloud:
nacos:
discovery:
server-addr: http://localhost:8848
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yaml
2項目的目錄結(jié)構(gòu)
image.png
3同理我們需要添加mall-pms的配置文件,同上
2三個服務(wù)的端口分別為:
youlai-gateway:9999
mall-consumer:9602
youlai-pms:8602
image.png
3測試
依次啟動我們的gateway服務(wù)搀矫,mall-consumer服務(wù)
輸入http://localhost:9999/mall-consumer/consumer/brand/1,網(wǎng)關(guān)會根據(jù)我們配置的規(guī)則幫我們轉(zhuǎn)發(fā)到
http://localhost:9602/consumer/brand/1這個路徑上去抑片。也就是9602這個端口服務(wù)被轉(zhuǎn)發(fā)成了mall-conmuser的服務(wù)亏推。
image.png
Spring Cloud Gateway作用不光只是簡單的跳轉(zhuǎn)重定向期犬,還可以實現(xiàn)用戶的驗證登錄,解決跨域财岔,日志攔截风皿,權(quán)限控制,限流匠璧,熔斷桐款,負(fù)載均衡,黑名單和白名單機(jī)制等夷恍。是微服務(wù)架構(gòu)不二的選擇魔眨;