gateway
主要作用:前端请求都是先请求网关,网关根据请求路径决定调用哪个微服务,规则定义在配置文件中。
使用要求:被路由的服务和gateway注册到nacos同一命名空间中
1.pom.xml引入依赖,前提本工程或父工程引入了springcloud
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2.bootstrap中配置nacos配置中心的地址、服务名称、命名空间和分组。配置nacos配置中心中配置文件的名字及分组。
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=47.98.252.142:xxxx
spring.cloud.nacos.config.namespace=997c7a2d-a93e-443f-b7e3-ed1c74bac44a
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.extension-configs[0].data-id=other.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=application.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true
3.nacos配置中心,other.yml中配置服务端口及注册中心的地址
4.application.yml中配置路由、过滤规则及转发路径
spring:
cloud:
gateway:
routes:
- id: product_route
uri: lb://service-product
predicates:
- Path=/api/gulimallproduct/**
filters:
- RewritePath=/api/(?<segment>.*),/$\{segment}
- id: third_party_route
uri: lb://gulimall-third-party
predicates:
- Path=/api/thirdparty/**
filters:
- RewritePath=/api/thirdparty/(?<segment>.*),/$\{segment}
- id: admin_route
uri: lb://renren-fast
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
routes: 代表路由多个
uri:转发的目标路径 lb代表负载均衡 load balance
predicates:断言
-path:代表拦截什么样的路径,意思就是遇到这样的路径就进行转发 转发到uri配置的服务
predicate其他属性:
filters:过滤器
- RewritePath:路径重写 此处第一个- RewritePath配置是要把/api去掉
filters其他配置