网关超详解

news/2024/11/28 21:38:01/

文章目录

  • 网关详解
    • 一、Spring Cloud Gateway用法
    • 二、实现
    • 三、网关的分类
    • 四、什么是网关
    • 五、网关的作用
      • 路由
      • 负载均衡
      • 统一鉴权
      • 统一处理跨域
      • 统一业务处理
      • 访问控制
      • 发布控制
      • 流量染色
      • 接口保护
      • 统一日志
      • 统一文档


网关详解

一、Spring Cloud Gateway用法

去看官网:https://spring.io/projects/spring-cloud-gateway

官方文档:https://docs.spring.io/spring-cloud-gateway/docs/current/reference//html/

二、实现

  1. Nginx (全局网关),Kong网关(API网关), 编程成本相对较高
  2. Spring Cloud Gateway(取代了Zuul)性能高 可以用java代码来写逻辑 适于学习
    网关技术选型:https://zhuanlan.zhihu.com/p/500587132

三、网关的分类

1.全局网关(接入层网关):作用是负载均衡、请求日志等,不和业务逻辑绑定
2.业务网关(微服务网关):会有一些业务逻辑,作用是将请求转发到不同的业务/项目/接口/服务
参考文章:https://blog.csdn.net/qq21040559/article/,details/,122961395

四、什么是网关

什么是网关?理解成火车站的检票口,统一 检票

网关优点: 统一进行操作,去处理一些问题

五、网关的作用

  1. 路由
  2. 负载均衡
  3. 统一鉴权
  4. 统一处理跨域
  5. 统一业务处理(缓存)
  6. 访问控制
  7. 发布控制
  8. 流量染色
  9. 统一接口保护
    1. 限制请求
    2. 信息脱敏
    3. 降级(熔断)
    4. 限流 学习令牌桶算法,学习露桶算法,学习一下RedislimitHandler
    5. 超时时间
    6. 重试(业务保护)
  10. 统一日志
  11. 统一文档

路由

起到转发的作用,比如有接口A和接口B,网关会记录这些信息,根据用户访问的地址和参数,转发请求到对应的接口(服务器/集群)

用户a调用接口A

/a=>接口A
/b=>接口B

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories

负载均衡

在路由的基础上可以转发到某一个服务器

/c => 服务A/ 集群A(随机转发到其中的某一个机器)

uri从固定地址改成b:xx

统一鉴权

判断用户是否有权限进行操作,无论访问什么接口,我都统一去判断权限,不用重复写

统一处理跨域

网关统一处理跨域,不用在每个项目单独处理

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#cors-configuration

统一业务处理

把每个项目中都要做的通用逻辑放到上层(网关),统一处理,比如本项目的次数统计

访问控制

黑白名单,比如限制ddos ip

发布控制

灰度发布,比如上线新接口,先给新接口分配 20%流量,老接口80% ,再慢慢调整比例

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-weight-route-predicate-
factory

流量染色

区分用户来源

给请求(流量)添加一些标识,一般是设置请求头中,添加新的请求头
https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-addrequestheader-gatewayfilter-factory

全局染色:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#default-filters

接口保护

  1. 限制请求(限制请求的大小)

    https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#requestheadersiz-gatewayfilter-factory

  2. 信息脱敏 (去掉一些敏感的响应头和请求头)

    https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-removerequestheader-gatewayfilter-factory

  3. 降级(熔断) 进行兜底

    https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#fallback-headers

  4. 限流

    https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-requestratelimiter-gatewayfilter-factory

  5. 超时时间 超时就中断

    https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#http-timeouts-configuration

  6. 重试(业务保护):

    https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#the-retry-gatewayfilter-factory

统一日志

统一的请求,响应信息记录

统一文档

将下游项目的文档进行聚合,在一个页面统一查看

建议用:https://doc.xiaominfo.com/docs/middleware-sources/,aggregation-introduction


http://www.ppmy.cn/news/19013.html

相关文章

casbin权限和配置文件的理解

官方文档 基础权限模型 下图为我基于个人理解画出来的(关于多租户RBAC模型可能有误) 发现一篇博客讲的还行Casbin权限模型,看他的权限系统设计模型分析部分 casbin配置文件内容的结构解释 注意matchers可以设置多个。我在知道这个之前一直疑惑为什么需要policy_…

Sprig框架集成(SSM框架) | Sping+SpringMVC+Mybatis

SSM框架 SSM是spingspringMVCmybatis集成的框架:标准的MVC模式,整个系统划分为表现层,controller层,service层,DAO层四层 Spring(业务层) Spring就像是整个项目中装配bean的大工厂,在…

我的硕士前半生

本篇文章属于随笔类,它可能无法对你起到直接帮助,它只是我这个普通学生一年半以来的一些足迹与思考。本文首发于我的个人博客 Forever Young 我的本科像硕士,有实验室有工位,桌子超级大,有老师带有学长可以问。 我的硕…

mysql之存储过程

目录 1.概念 2.创建语法 3.调用 4.示例 5.删除 6.查看 1.概念 存储过程和函数类似java中的方法,能够提高代码的重用性,能够简化操作 一组预先编译好的SQL语句的集合,理解成批处理语句,减少了编译次数并且减少了和数据库服…

用户画像计算更新

3.1 用户画像计算更新 目标 目标 知道用户画像建立的流程应用 无 3.1.1 为什么要进行用户画像 要做精准推送同样可以使用多种推荐算法,例如:基于用户协同推荐、基于内容协同的推荐等其他的推荐方式,但是以上方式多是基于相似进行推荐。而构…

Exadata存储服务器(又称Exadata存储单元)

存储单元可以说是让Exadata如此大规模普及并且使用效果优异的核心要素。 I/O性能问题始终是Exadata存储或者存储服务器尽力去解决的问题。 Exadata存储服务器概述 Exadata数据库一体机通常预装了3类硬件: 数据库计算节点服务器存储服务器极速的InfiniBand存储交…

【论文翻译】Attention Is All You Need

【论文】Attention is All you Need (neurips.cc) 摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络,其中包括一个编码器和一个解码器。表现最好的模型还通过注意机制连接编码器和解码器。我们提出了一个新的简单的网络架构,Transformer&#xf…

js unicode编码相关

ASCII码 在计算机种中,1 字节对应 8 位二进制数,而每位二进制数有 0、1 两种状态,因此 1 字节可以组合出 256 种状态。如果这 256 中状态每一个都对应一个符号,就能通过 1 字节的数据表示 256 个字符。ASCII就是用于描述英语中的…