Gateway 笔记

是什么:SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty

          Spring WebFlux 是 Spring 5.0 引入的新的响应式框架,区别于 Spring MVC,它不需要依赖Servlet API,它是完全异步非阻塞的,并且基于 Reactor 来实现响应式流规范

作用:

  1. 反向代理
  2. 鉴权
  3. 流量控制
  4. 熔断
  5. 日志监控

执行流程:

核心逻辑:路由转发+执行过滤器链

客户端 -----> Springcloud gateway ----->Gateway Handler Mapping(匹配对应的路由)------->Gateway Web Handler------->过滤器链(执行对应的业务)---->返回

            过滤器可以在代理服务器执行前  后执行业务逻辑

          执行在业务逻辑之前:做参数校验、权限校验、流量监控、日志输出、协议转换等

         执行咋业务逻辑之后:在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输出,流量监控

 

网关路由的实现过程,基础操作在:com.capgemini.springcloud.Gateway9527

实现路由的两种方式:配置  初始化类(路由代替了ip+port,后面的路径还是要保持一致

 

动态路由:实现修改  URI改为服务名,lb协议代表开启负载均衡功能

cloud:
gateway:
discovery:
locator:
enabled: true #开启从注册中心动态创建路由的功能,利用微服务名进行路由
routes:
- id: payment_routh #payment_route #路由的ID,没有固定规则但要求唯一,建议配合服务名
#uri: http://localhost:8001 #匹配后提供服务的路由地址
uri: lb://cloud-payment-service #匹配后提供服务的路由地址 需要注意的是uri的协议为lb,表示启用Gateway的负载均衡功能。
predicates:
- Path=/payment/get/** # 断言,路径相匹配的进行路由


断言:为了实现一组匹配规则,让请求过来找到对应的Route进行处理
具体实现:
predicates:
- Path=/payment/lb/** # 断言,路径相匹配的进行路由
- After=2022-07-05T15:10:03.685+08:00[Asia/Shanghai] #满足这个时间后 才可以就行访问
#- Before=2020-02-05T15:10:03.685+08:00[Asia/Shanghai] #之前
#- Between=2020-02-02T17:45:06.206+08:00[Asia/Shanghai],2020-03-25T18:59:06.206+08:00[Asia/Shanghai] #中间
# - Cookie=username,zzyy #http://localhost:9527/payment/lb --cookie "username=zzyy" 带这个cookie访问
#- Header=X-Request-Id, \d+ # 请求头要有X-Request-Id属性并且值为整数的正则表达式 curl http://localhost:9527/payment/lb -H "X-Request-Id:123
- Host=**.atguigu.com #正确:curl http://localhost:9527/payment/lb -H "Host: www.atguigu.com" 满足最后是atguigu.com
- Query=username, \d+ # 要有参数名username并且值还要是整数才能路由 http://localhost:9527/payment/lb?username=31

过滤器:一般使用自定义过滤器(implements GlobalFilter,Ordered)
实现 全局日志记录
统一网关鉴权


posted @   niao66  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示