首页 > 其他分享 >GateWay网关

GateWay网关

时间:2024-05-24 20:57:01浏览次数:34  
标签:网关 exchange spring token 过滤器 GateWay cloud

目录

1.理论基础

网关实现流程

2.添加依赖

3.配置文件

4.效果

全局过滤器

依赖

自定义全局过滤器

测试

网关过滤器 参数为null 401

网关过滤器 参数为123456-common 403权限不够

网关过滤器 参数为123456-admin 成功


1.理论基础

客户端和服务端中间的一堵墙,可以起到的作用有:请求转发、负载均衡、权限控制等等

网关解决从客户端(如8080端口)进入服务端时调用哪个微服务的问题(请求转发功能),Feign解决各微服务之间的相互调用问题。

网关提供API全托管服务,丰富的API管理功能,辅助企业管理大规模的API,以降低管理成本和安全风险,包括协议适配、协议转发、安全策略、防刷、流量、监控日志等功能。

一般来说网关对外暴露的URL或者接口信息,我们统称为路由信息。

在高并发的系统中,往往需要在系统中做限流,一方面是为了防止大量的请求使服务器过载,导致服务不可用,另一方面是为了防止网络攻击。一般开发高并发系统常见的限流有:①限制总并发数(比如数据库连接池、线程池)。②限制瞬时并发数(如 nginx 的 limit_conn 模块,用来限制瞬时并发连接数)③限制时间窗口内的平均速率(如 Guava 的 RateLimiter、nginx 的 limit_req 模块,限制每秒的平均速率);④其他还有如限制远程接口调用速率、限制 MQ 的消费速率。另外还可以根据网络连接数、网络流量、CPU或内存负载等来限流

网关实现流程

  1. 客户端发送请求先到网关
  2. 将网关服务和其它要访问的服务在注册中心进行注册
  3. 通过网关访问到注册的其它服务

2.添加依赖

!!!不能和web依赖同时添加

常见的5中网关

  • Zuul: 构建于 Servlet 2.5,兼容3.x,使用的是阻塞式的API,不支持长连接,比如 websockets。
  • Gateway构建于 Spring 5+,基于 Spring Boot 2.x 响应式的、非阻塞式的 API。同时,它支持 websockets,和 Spring 框架紧密集成

网关依赖:spring-cloud-starter-gateway。

网关也需要注册到nacos中,需要nacos依赖。

网关的作用之一,可以做负载均衡,所以加入loadbalancer负载均衡依赖。

bootstrap依赖:该资源文件中的配置生效依赖。

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

3.配置文件

首先开启网关,其次设置routes网关路由配置,其中

id为路由id,不重复即可

uri为路由的目标地址: http就是固定地址, lb就是负载均衡。

predicates: - Path=/shopping/** 为访问路径

filters: - StripPrefix=1 把网关地址截取第一个字段 其实访问的是 uri的地址

server:
  port: 8081
spring:
  main:
    web-application-type: reactive
  application:
    name: GateWay
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #注册进入nacos服务器
    gateway:
      discovery:
        locator:
          enabled: true #开启网关
      routes:
        - id: CommodityCustomer
          uri: http://localhost:9010  #访问消费者
          predicates:
            - Path=/Commodity/** 
          filters:
            - StripPrefix=1 
        - id: UserProvider
          uri: lb://UserProvider  #直接访问生产者
          predicates:
            - Path=/User/** 
          filters:
            - StripPrefix=1 

4.效果

有用户模块和商品模块,用户模块由网关连接消费者,消费者做负载均衡。用户模块网关直接连接生产者,网关做负载均衡。

全局过滤器

  1. 当客户端第一次请求服务时,服务端对用户进行信息认证(登录)
  2. 认证通过,将用户信息进行加密形成token,返回给客户端aaaa,作为登录凭证
  3. 以后每次请求,客户端都携带认证的token
  4. 服务端对token进行解密,判断是否有效

依赖

<dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
        </dependency>

自定义全局过滤器

@Component
public class gatewayConfig implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        // 定义一个令牌字符串
        String TOKEN_="123456-admin";
        // 从请求中获取令牌
        String token=exchange.getRequest().getQueryParams().getFirst("token");
        if(token.isEmpty()){
            // 如果令牌为空,则返回一个未授权的状态码(401)并拦截请求
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();//拦截
        }else if (token.contains("123456-")) {
            // 如果令牌包含预期的前缀,则进行权限检查
            if(token.contains("admin")){
                // 如果令牌具有预期的权限,则将请求发送到后续过滤器或路由处理程序
                return chain.filter(exchange);
            }else {
                // 如果令牌没有预期的权限,则返回一个禁止访问的状态码(403)并拦截请求
                exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);
                return exchange.getResponse().setComplete();//拦截
            }
        }
        // 如果令牌不包含预期的前缀,则将请求发送到后续过滤器或路由处理程序
        return chain.filter(exchange);
    }
    @Override
    public int getOrder() {
         // 返回一个负整数,表示该 BeanPostProcessor 实现类应该被优先级较低的 BeanPostProcessor 实现类排除
        return -1;
    }
}

测试

网关过滤器 参数为null 401

网关过滤器 参数为123456-common 403权限不够

网关过滤器 参数为123456-admin 成功

标签:网关,exchange,spring,token,过滤器,GateWay,cloud
From: https://blog.csdn.net/fyr6103032003/article/details/139183954

相关文章

  • Modbus转Profinet网关不限制plc插槽modbus指令轮询
    通过Modbus转Profinet(XD-MDPN100)网关的应用,不仅可以实现Modbus设备与Profinet网络的平滑对接,还能有效解决PLC插槽限制和Modbus指令轮询等问题,Modbus转Profinet网关(XD-MDPN100)在解决PLC插槽限制以及Modbus指令轮询问题方面,具有显著的优势。以下是对其如何不限制PLC插槽Modbus指令......
  • 传感器通过Profinet转Modbus网关与PLC通讯在生产线的应用
     Profinet转Modbus(XD-MDPN100/300)网关可视作一座桥梁,能够实现Profinet协议与Modbus协议相互转换,支持ModbusRTU主站/从站,并且Profinet转Modbus网关设备自带网口和串口,既可以实现协议的转换,也可以实现接口的转换,它从而实现了PLC与传感器之间的顺畅通讯。传感器通过Profinet转Mo......
  • 变频器通过Modbus转Profinet网关连接电机与PLC通讯
    Modbus转Profinet网关(XD-MDPN100)是一种能够实现Modbus协议和Profinet协议之间转换的设备。Modbus转Profinet网关可提供单个或多个RS485接口,PLC作为控制中枢,变频器作为控制电机转速,通过Modbus转Profinet网关,实现对电机的远程监控和调节,使得生产过程更加智能化和精准化。变频器通......
  • 智能网关和交换机在智慧路灯杆上的用途差别
    智慧路灯杆是智能城市建设中的一个重要组成部分,它整合了智能照明、视频监控、交通管理、环境监测、网络覆盖、信息发布、一键告警等多种功能。针对智慧路灯杆的使用场景,智能网关和交换机各自发挥着不同的作用,并且拥有各自的优缺点: 交换机在智慧路灯杆中的作用 1、用途:提供......
  • 支持IPV6的工业智能网关有哪些优势?
    IPv6作为下一代互联网协议,提供了几乎无尽的地址空间,解决了IPv4地址耗尽的问题,这对于不断增长的工业物联网设备尤为重要。IPv6有着诸多优势,包括更加高效的路由和数据包处理机制,提高了数据传输的效率;支持IPsec,为网络通信提供了更强的安全性等。这些特性使得IPv6成为促进工业物联网可......
  • Modbus转PROFINET网关TS-180为钢铁厂生产保驾护航
    背景:在钢铁厂的生产过程中,电机作为驱动各种生产机械和辅助设备的关键设备,其正常运行对于生产效率和质量至关重要。为了确保电机的正常运行和使用寿命,通常会使用软启动器和马达保护器等设备,因此监控软启和马达保护器的工作参数成为重点。福建某钢铁厂,中控室使用S7-1515PLC,实时监......
  • 上海泗博HART转ModbusTCP网关HME-635应用案例之组态王和超声波液位计通信
    如今工业现场的应用也逐渐把现场的不同应用协议转换成以太网,以此来提升现场的通信速度和质量。ModbusTCP是工业以太网协议的一种,也是现场应用中最常使用的。本应用案例是基于ModbusTCP的组态王和基于HART的超声波液位计之间数据通讯的具体应用。应用图如下:  上海泗博HART......
  • 家庭路由/网关 网络配置折腾日记
    2024年5月19日近期在家里每天用着用着网络就开始断开,明明连着网的,但是wifi会出现无网络原因我大概也知道因为光猫的网段是192.168.1.1我的主路由也是前一段时间我尝试把主路由ip改为1.254短暂的解决问题了几天这几天又疯了我直接不能忍家里十几个终端全部改了......
  • Cisco Secure Email Virtual Gateway 15.5.1 GD - 电子邮件安全
    CiscoSecureEmailVirtualGateway15.5.1GD-电子邮件安全AsyncOSforESA15GeneralDeployment(GD)请访问原文链接:CiscoSecureEmailVirtualGateway15.5.1GD-电子邮件安全,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoSecureEmail提供高级......
  • 视频智能检测AI智能分析网关V4告警消息推送:公众号消息推送的配置步骤介绍
    TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备,目前拥有3种型号(8路/16路/32路),支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型,算力高达17.6/32Tops的INT8峰值算力,2.2T的FB32高精度算......