1. 网关介绍
网关作为流量得入口,常用得功能包括路由转发,权限校验,限流等
2. 核心概念
路由
路由是网关中最基础得部分,路由信息包括一个ID,一个目的URI,一组谓词工厂,一组filter组成。如果谓词为真,则说明请求得URL和配置得路由匹配。
谓词
Gateway使用Predicate实现路由得匹配条件
过滤器
SpringCloud Gateway中得flter分为Gateway Filter和Global Filter. Filter可以对请求和响应进行处理。
3. 工作原理
![在这里插入图片描述](https://img-blog.csdnimg.cn/72683cf04b0646f8bda465d5c1d44bed.png)
- 客户端向 Spring Cloud Gateway 发出请求
- 如果 Gateway Handler Mapping 找到与请求相匹配的路由,将其发送到 Gateway Web Handler
- Handler 再通过指定的 过滤器链 来将请求发送到我们实际的服务执行业务逻辑,然后返回
- 过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑
4.快速入门
- 引入maven配置
<!-- gateway网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
-配置文件配置
spring:
cloud:
gateway:
discovery:
locator:
#默认值是false,如果设为true开启通过微服务创建路由的功能,即可以通过微服务名访问服务
#http://localhost:13001/argus-application/order/create
#不建议打开,因为这样暴露了服务名称
enabled: true
其中13001是网关服务得端口,然后argus-analysis-application是被调用方得服务名称,这里可以发现服务名称其实是暴漏出来了,不太优雅
5.谓词工厂配置
- gateway网关中uri得配置方式有3种
第一种:ws(websocket)方式: uri: ws://localhost:9000
第二种:http方式: uri: http://localhost:8130/
第三种:lb(注册中心中服务名字)方式: uri: lb://brilliance-consumer - Cookie信息携带
gateway:
routes:
- id: hailtaxi-driver
uri: lb://hailtaxi-driver
predicates:
- Path=/driver/**
- Cookie=username,ithei