使用nacos与gateway实现动态路由

  什么是网关,网关可以做什么?

        首先我们得了解微服务网关这个概念,平时我们的微服务项目,不同的服务可能是不同的网络地址,然而客户端完成一个业务需求可能要调用多个服务的接口才能完成一个业务需求,所以让客户端直接与各个服务之间进行通信就会出现很多问题。这些问题我们使用网关就可以很好的去解决。

        通俗一点来讲,网关就是在客户端和服务端之间的一个东西,所有的外部请求都需要经过网关 然后分配请求的各个服务中去。微服务网关就是一个系统,通过暴露该微服务网关系统,方便我们去

 

如何去实现

步骤

1、引入依赖

2、配置网关

3、测试

实现 

这是咱们网关模块的一个基本架构

 

1、引入依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--客户端负载均衡loadbalancer-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
        <!--gateway-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

2、配置网关

编写application.yml文件,去配置网关的动态路由规则

spring:
  application:
    name: sysgateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      discovery:
        locator:
          enabled: true
          lowerCaseServiceId: true # 请求服务是小写的时候改成true(默认为false轻微服务必须是大写)
      routes:
        - id: base-service
          uri: lb://base-service  # 服务端 service_id
          # 网关断言匹配
          predicates:
            - Path=/favorites/**
            - Path=/favoritesType/**
            - Path=/user/**
          filters:
            - StripPrefix=2

这里刚好对应的是咱们的控制层(controller)的路由

 测试

访问:localhost:8181/base-service/favoritesType/getAll,看是否可以访问到咱们的方法

 这就很nice,就很棒

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要基于Nacos实现Spring Cloud Gateway的动态网关路由,可以按照以下步骤进行操作: 1. 添加依赖:在Spring Cloud Gateway项目的pom.xml文件中添加相应的依赖,包括spring-cloud-starter-gateway和spring-cloud-starter-alibaba-nacos-discovery等。 2. 配置Nacos注册中心:在application.properties或application.yml配置文件中添加Nacos注册中心的相关配置,包括Nacos服务器地址、命名空间、分组等信息。 3. 配置动态路由:创建一个RouteLocator Bean,并在其中使用Nacos服务发现来定义动态路由规则。可以通过Nacos的配置中心来管理路由规则的动态更新。 ```java @Configuration public class GatewayConfig { @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("service_route", r -> r.path("/api/v1/**") .uri("lb://service-provider")) .build(); } } ``` 上述示例中,定义了一个名为service_route的路由规则,将请求路径以/api/v1/开头的请求转发到名为service-provider的微服务上。 4. 启动Gateway应用:启动Spring Cloud Gateway应用,它会自动Nacos注册中心获取动态路由规则并进行路由转发。 5. 管理动态路由使用Nacos的配置中心来管理动态路由规则。可以通过Nacos的控制台或API来添加、修改或删除路由规则,Gateway应用会自动更新并生效。 通过以上步骤,就可以基于Nacos实现Spring Cloud Gateway的动态网关路由了。你可以根据实际需求和业务场景,添加更多的路由规则和配置。希望对你有所帮助!如果还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值