为什么要用网关:
1. 在分布式系统中,后端服务器有多个,如果前端要配置所有的服务器ip的话太繁杂了,所以用网关,前端只需要配置网关的服务器地址,根据服务标识,把请求发到网关,网关再进行转发。
2. 网关可以做负载均衡
3. 网关可以做统一鉴权
4. 网关可以做统一日志打印
网关的请求流程:客户端发送请求到网关,网关通过断言判断该请求是否符合路由规则,如果符合就走filter。然后再请求到指定服务器。
使用:
- 创建项目
- 添加nacos服务发现和配置中心
nacos服务发现,只要配置地址和开启即可
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
@EnableDiscoveryClient
配置中心,只要配置地址和在nacos中创建配置文件即可
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=8a56cfab-13c4-486a-96f2-e1ef04a3a7d7
- 在配置中配置路由断言和过滤
spring:
cloud:
gateway:
routes:
- id: baidu_test
uri: https://www.baidu.com
predicates:
- Query=url,baidu //有个参数url值为baidu,就跳转到uri去
- id: qq_test
uri: https://www.qq.com
predicates:
- Query=url,qq