SpringCloud微服务中gateway网关的使用(二)——动态配置路由

一。动态路由配置是什么?

动态配置路由是通过服务注册名来实现的,路由的配置不再是配置固定的访问端口,可以动态来实现。默认情况下Gateway会根据注册中心注册的服务列表,以注册中心上微服务名为路劲创建动态路由进行转发,从而实现动态路由的功能。

二。实现过程

1.在gateway网关子模块的application.yml配置文件中添加以下配置:


eureka:
  client:
    serviceUrl:
      #服务注册地址
      defaultZone: http://localhost:8088/eureka/
  instance:
    #服务实例名称
    instance-id: getway-9527
    #是否暴露服务ip地址
    prefer-ip-address: true
server:
  #运行端口
  port: 9527
spring:
  application:
    #服务注册名称
    name: service-getway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # 开启从注册中心动态创建路由的功能,利用微服务名称进行路由
      routes:
        - id: service-provider-getNumber # 路由的id,没有规定规则但要求唯一,建议配合服务名
          #匹配后提供服务的路由地址
#          uri: http://localhost:8001
          uri: lb://service-provider #匹配后提供服务的路由地址
          predicates:
            - Path=/provider/getNumber/** # 断言,路径相匹配的进行路由(注意**为通配符)
        - id: service-provider-getInfo
#          uri: http://localhost:8001
          uri: lb://service-provider #匹配后提供服务的路由地址
          predicates:
            - Path=/provider/getInfo  #断言,路径相匹配的进行路由

2.其中,修改细节如下图所示:

在这里插入图片描述
3.建立两个服务提供端,服务端口分别为8001,8002,注册服务名为:service-provider ,如下图所示:
在这里插入图片描述
在这里插入图片描述
4.8001与8002服务控制器代码一致,代码如下:

@RestController
@RequestMapping("provider")
public class ProviderController {

    //读取application.yml配置文件属性
    @Value("${server.port}")
    private String port;

    @GetMapping("getNumber/{number}")
    public String getNumber(@PathVariable int number){
        if(number>=0){
            return "输入的数字为正数";
        }else{
            return "输入的数字为负数";
        }
    }

    @GetMapping("getInfo")
    public String getInfo(){
        return "这是"+port+"端口在提供服务";
    }
}

5.启动各个服务,访问http://localhost:9527/provider/getInfo,不断刷新,出现以下效果:

在这里插入图片描述
在这里插入图片描述

发现8001与8002服务提供端口轮询

6.访问结构图:

在这里插入图片描述

注:

gateway网关的详细实现可以参照我的另外一篇博客:
SpringCloud微服务中gateway网关的使用(一)——(介绍+gateway与zuul的区别+gateway实现的两种方式)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keson Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值