1.网关的理解?理解成火车站的检票口,统一去检票
网关的优点:统一去做一些操作,处理一些问题
作用
1.路由
2.鉴权
3.跨域
4.缓存
5.流量染色
6.访问控制
7.统一业务处理
8.发布控制
10.负载均衡
11.接口保护
a. 限制请求
b.信息脱敏
c . 降级(熔断)
d .限流
e. 超时时间
11. 统一日志
12. 统一文档
路由
起到转发的作用,比如接口a和接口b,网关会记录着些信息,根据用户访问的地址和参数,转发请求到对应的(服务器/或者集群)
/a =》接口a
/b =》 接口b
/c =》服务a/集群a(随机转发到某一个机器中)
负载均衡
在路由的基础上
/c =》服务a/集群a(随机转发到某一个机器中)
统一鉴权
判断用户是否有权限操作,无论访问什么接口,我都去统一去判断权限,不用重复选
统一处理跨域
网关统一处理跨域 ,不用在每个项目里处理
统一业务逻辑
把一些每个项目的都要做的统一逻辑放到(网关),统一处理,比如本项目的次数统计
访问控制
黑白名单,比如限制ddos ip
发布控制
灰度发布,不如上线新接口,分配20%的流量,慢慢调整比重
流量染色
1.区分用户来源
2.排查用户的问题( 每一个请求添加一个therid)
给请求添加一些标识,一般设置在请求头里
统一日志
统一请求,响应信息记录
统一文档
将下游项目文档进行聚合,在一个页面统一查看
网关的分类
1.业务网关(作用是将请求转发到不同的业务/项目/接口 /服务)
2.全局网关(接入层网关)作用是负载均衡
实现
1.nainx(全局网关), kong网关(api网关)
2.业务网关 spring CloudGateway (取代了zuul)性能高,可以用java来写逻辑
spring CloudGateway 用法
核心概念
路由(根据什么条件,转发到哪里)
断言:一组规则,条件,用来确定如何转发路由
1.客户端发起请求
2. Handler Mapping 根据断言,去将请求转发到对应的路由
3. web Mapping 处理请求,(一层层经过过滤器)
4.实际调用请求服务
两种配置方式
1.配置式 (方便,规范)
2.编程式 (灵活)
断言有很多规则
1. After 在xx时间之前
2. Before 在xx时间之后
3.权重路由 (可以实现灰度发布)
断言其他类型下面地址官网
Route Predicate Factories :: Spring Cloud Gateway
使用案例
logging: level: org: springframework: cloud: gateway: trace
日志配置:打印更多信息,转发路径
跨域处理
CORS Configuration :: Spring Cloud Gateway
spring: cloud: gateway: globalcors: cors-configurations: '[/**]': allowedOrigins: "https://docs.spring.io" allowedMethods: - GET