目录

  • gateway介绍
    • 一、鉴权
      • 1、实现方式:
      • 2、验证登录实现方式
      • 3、附加知识
    • 二、路由
    • 三、灰度发布、限流

gateway介绍

gateway相当于所有服务的门户,将客户端请求与服务端应用相分离,客户端请求通过gateway后由定义的路由和断言进行转发,路由代表需要转发请求的地址,断言相当于请求这些地址时所满足的条件,只有同时符合路由和断言才给予转发。

一、鉴权

我们在gateway服务定义了一组过滤器其图如下:

在所有的客户端请求在经过gateway时,都会被拦截下来,并进行统一的权限判断处理,校验权限信息,如果不通过会返回指定结果,当然也可以在代码中定义指定的路径不受权限的控制。

1、实现方式:

通过实现GlobalFilter和Ordered这两个接口中的filter(进行全局过滤)和getOrder(指定过滤器的优先级)方法

其中,FilterChain维护了一个链表,链表中存放着配置对象的链条,每次用户调用 一次chain.doFilter(request, response),链表就去取下一个配置对象,再通过配置对象 得到下一个filter,然后调用该filter,接着在filter里写的逻辑就被执行了。

public class AuthFilterTest implements GlobalFilter, Ordered {/*** @description  过滤器执行方法* @param exchange 前后端交互信息,包括request与response* @param chain 过滤器链* @return 下个过滤器直到过滤器结束或者校验不通过返回结果*/@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 开始执行鉴权方法doCheckAuth(exchange);// 调用下个过滤器(过滤器是基于函数回调)return chain.filter(exchange);}/*** @description 定义过滤器优先级,数字越小优先级约高,可以为负数* @return */@Overridepublic int getOrder() {return 0;}
}

2、验证登录实现方式

在gateway的拦截器中拦截到请求后,对请求进行权限验证,
1)、判断该接口是否携带token的请求头信息
String token = exchange.getRequest().getHeaders().getFirst(“Authorization”);
2)、如果没有则跳去登录页面进行 登录获取token信息,如果有则开始校验token信息
3)、传入token与请求路径,根据token去redis中获取登录信息包括手机号姓名等一些基本信息,再根据手机号去redis中当做key去获取相关权限信息
4)、如果同个账号多次登录则会在redis中手机号码对应的value会更新token的值(手机号对应的value是hash类型。)
5)、如果接口权限包含请求路径则放行
大致流程如下:

3、附加知识

1)、执行顺序与性能
执行顺序过滤器>>拦截器>>aop ,拦截器与aop类似,都是基于反射机制而过滤器是基于函数回调,依赖selevet容器。拦截规则越来越细致,执行顺序依次是过滤器、拦截器、切面。一般情况下数据被过滤的时机越早对服务的性能影响越小,因此我们在编写相对比较公用的代码时,优先考虑过滤器,然后是拦截器,最后是aop。比如权限校验,一般情况下,所有的请求都需要做登陆校验,此时就应该使用过滤器在最顶层做校验
2)、拦截器与过滤器的区别
–过滤器基于函数回调,拦截器是基于java的反射
–过滤器可以拦截所有请求(包括静态资源的请求),拦截器只能拦截action请求(不包含静态资源)
–拦截器在action的生命周期内是可以多次调用,而过滤器只在容器初始化时被调用一次。
–过滤器是包裹在拦截器之外
–拦截器可以访问action的上下文,值栈里面的对象,而过滤器不行
3)、过滤器与拦截器用途
– 过滤器用于比如设置字符编码,鉴权操作等
–拦截器颗粒比过滤器要细可用于日志输出、请求参数安全验证等

二、路由

概述:
gateway根据路由与断言去转发请求到指定的服务,gateway服务中的配置文件中配置

spring:cloud:gateway:routes:#唯一识别号 ,例:请求 http://localhost:6001/tool/test/get 会转发到tool-service-ly服务的test/get 接口- id: TOOL-SERVICE-ly #在服务注册中心找服务名为 tool-service-ly的服务uri: lb://tool-service-ly #设置路由断言,代理servicerId为TOOL-SERVICE-ly的   /tool/* 路径predicates:- Path=/tool/**    #前缀, 在当前路径匹配中表示去掉第一个前缀 /tool 即请求从/tool/test/get 变成 /test/getfilters:- StripPrefix=1

三、灰度发布、限流

gateway的作用相关推荐

  1. 从系统架构理解Spring Cloud Gateway的作用

    1.nginx和Gateway的区别? 首先,我们要了解网关这个概念.对应nginx和Gateway这两者来说,他们都是网关,但他们的使用场景却不同,也就是说,他们的作用是不同的. Gateway 作 ...

  2. SpringCloud学习之Gateway—单点登录的实现

    文章目录 1.Gateway的介绍 2.Gateway的作用 3.Gateway的工作原理 4.Gateway的路由功能 5.Gateway跨域配置 6.Gateway过滤器 7.使用Gateway实 ...

  3. API Gateway 网关

    API Gateway:网关,统一应用请求接口.API 网关在微服务们的最前端,让 API 网关变成由应用所发起的每个请求的入口,简化客户端实现和微服务应用程序间的沟通方式. API Gateway两 ...

  4. 京东超大规模联邦学习探索实践

    导读:对于AI飞速发展的今天来说,大规模的多维度.高质量的数据是其成功的关键要素,也是制约其进一步发展的重要瓶颈.随着大家对数据的重要性与隐私性的认知程度的不断提升,跨组织的数据的合作越来越谨慎,相关 ...

  5. Elasticsearch 100问(上)

    一.基本概念 1.ElasticSearch是什么: Elasticsearch是一个分布式的,开源的NoSQL数据库.通常做为文档搜索数据库. 2.什么是索引(indices) indices分为两 ...

  6. Alluxio2.X简要介绍

    本文基于将alluxio 2.X集成到大数据发行版的经验,从各个方面介绍alluxio 什么是alluxio? alluxio是一个以内存为中心的分布式虚拟存储系统 为什么需要alluxio? 借用官 ...

  7. 2022 年前面试总结与感悟分享

    2022年1月22日于浦东图书馆三楼 前言 传统软件出身,水平一般,面试高级,面了10天左右,10家左右,几家大公司,几家小公司,1家央企子公司,1家外包. 面试感受 最差的 某知名CRM 公司 HR ...

  8. 学习Nginx看这篇就够了

    0. NGINX的优点 响应速度快 单次请求响应快,高并发请求响应速度快 高扩展性 低耦合的模块设计框架使得可以扩展大量的第三方模块 高可靠性 每个worker进程相对独立 master进程在一个wo ...

  9. (〇)SpringCloud之SpringCloud是什么

    SpringCloud是什么 聊SpringCloud之前先聊聊微服务 1.微服务是什么 微服务架构是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦 微服务架构是个很有趣的概 ...

  10. 医学成像技术知识点大全(笔记)

    课程链接: https://www.bilibili.com/video/BV1JJ411W7Fv 课程目录 1.课程简介 2.医学成像技术简介 Radiography(X光成像) Fluorosco ...

最新文章

  1. 命名实体识别训练集汇总(一直更新)
  2. C++中struct的使用
  3. uvalive5986(贪心)
  4. Linux修改history存储的最大记录数
  5. python代码_Python发送邮件基础知识与代码讲解!
  6. 字迹相似度测试软件,文章相似度检测_文章在线相似度检测_文章相似度检测软件-纸牌屋检测工具...
  7. 惠普电脑u盘重装系统步骤_惠普电脑如何重装系统?惠普电脑用U盘重装win10系统教程...
  8. Win10 21H1发布后的首个更新上线 包含大量的修复内容
  9. 找回密码功能的流程总结
  10. 程序员的十种搞笑级别
  11. 计算机里设备和驱动器下面有个没有名字的文件夹怎么删除它
  12. yocto编译linux,好实用!用 Yocto 在 Ubuntu 上创建最小化 Linux 发行版
  13. 为什么人人都应该玩儿点儿DIY?
  14. 51单片机控制DHT11温湿度传感器,并使用OLED屏幕显示
  15. 【每日新闻】Gartner:2017年CRM跃升为规模最大、增速最快的软件市场 | 中国科学家发现神奇半导体材料
  16. 【视频直播场景下P2P对等网技术①】挑战与形式化分析
  17. MS8006单片机开发IR红外遥控解码原理与程序实现(NEC)
  18. 全国首例!某度起诉“文库下载神器”,索赔300万
  19. 数据库第七周【第五章作业存储过程】
  20. DesktopGoose的下载和使用(抖音网红桌宠鹅)【保姆级教程】

热门文章

  1. PHP 数字金额转换成中文大写金额的函数 数字转中文
  2. 数字电路设计之RTL编码指导原则
  3. 基于 Verilog 的经典数字电路设计(3)选择器
  4. CDH存在隐患 : 该角色的进程使用的交换内存为xx兆字节。警告阈值:200字节
  5. 联想电脑如何启动BIOS并开启CPU虚拟化功能
  6. 电脑下载路径与安装路径设置 以及浏览器推荐
  7. [转]内向的人如何建立人际网络
  8. ❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】
  9. 电商平台接入手机支付宝支付(服务商授权模式,可直接付款给卖家)
  10. 中国AFC自动售检票机市场发展形势与需求潜力预测报告2022-2027年