pigx动态路由及修改至静态路由

本文详细描述了Pigx框架如何通过数据库动态获取路由配置,强调了upms服务启动后对路由信息的初始化过程,以及如何在SpringCloudGateway中使用Redis存储和加载动态路由。同时提到了静态路由与动态路由的切换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

pigx中作者采用了动态获取路由配置信息,即路由信息是通过数据库进行配置而不是之前固定写在yml或properties文件中。

pigx框架中有几个基础微服务分别是:register(一般是nacos的注册中心和配置中心),auth(认证服务)、upms(登录和项目初始化数据加载)、gateway(网关服务)。

详情

DynamicRouteInitRunner类下的initRoute方法是在upms服务启动后对路由信息初始化并将路由信息保存到redis中。可以利用Another Redis Desktop Manager工具连接redis查看具体的路由信息。

会在redis中创建一个gl的文件夹,key为gl:gateway_route_key的键值对结构中,值为各微服务的路由配置信息。

gateway服务需在upms服务启动成功后启动,否则会打印warning日志:redis 中路由定义条数: 0, []。表示gateway无法从redis中获取路由配置信息。

gateway服务中,DynamicRouteAutoConfiguration类下分别创建了两个Bean对象。

  1. 第一个是类型为PropertiesRouteDefinitionLocator的名为propertiesRouteDefinitionLocator的方法创建的Bean对象。返回的是一个新创建的GatewayProperties对象。该方法表示不加载静态路由配置信息,加载redis中的动态路由(因为新创建的GatewayProperties对象内容为空)。 GatewayProperties对象具体信息可参考GatewayProperties详解

  1. 第二个是类型为RedisMessageListenerContainer的名为redisContainer方法创建的Bean对象。该方法是用于监听Redis事件。事件主题为CacheConstants类中定义的ROUTE_KEY。监听器的功能是当监听到该主题时打印warning日志:加载路由ID,{},{}。调用removeList方法,发布refreshRoutesEvent事件,该事件是spring cloud gateway的内部事件,用于通知应用重新加载路由信息。

修改

当需要将动态路由修改为静态路由时,需注释以上三个方法。并在gateway服务下的yml文件中添加配置信息如下:

spring:
  cloud:
gateway:
      discovery:
        locator:
          lower-case-service-id: true  #服务名称转小写
     #路由配置信息
      routes:
        # id唯一,表示请求路由到哪个服务
        - id: 微服务名称
    #注册中心中的名称,lb表示负载均衡,loadbanlance
          uri: lb://微服务名称
     #谓词/断言配置
          predicates:
    #表示路径断言,表示/admin开头的
            - Path=/admin/**
    #过滤器配置,name唯一,args参数数据结构为键值对。
          filters:
            - name: RequestRateLimiter
              args:
                key-resolver: "#{@remoteAddrKeyResolver}"
                redis-rate-limiter.burstCapacity: "1000"
                redis-rate-limiter.replenishRate: "1000"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值