java springCloud gateway网关路由详细使用教程

java springCloud gateway网关路由详细使用教程


1、gateway网关路由是什么?

网关路由的配置方式有多种,常见的有基于配置文件、基于代码和基于注册中心的方式。

  • 基于配置文件:这种方式是通过在网关服务器上编写一个或多个配置文件,来定义路由规则和过滤器规则。这种方式的优点是简单易用,可以方便地修改和管理。缺点是需要重启网关服务器才能生效,以及可能存在配置文件不一致或冲突的问题。
  • 基于代码:这种方式是通过在网关服务器上编写代码,来动态地创建和注册路由规则和过滤器规则。这种方式的优点是灵活强大,可以实现复杂的逻辑和功能。缺点是需要编写更多的代码,以及可能存在代码错误或漏洞的问题。
  • 基于注册中心:这种方式是通过在网关服务器上连接一个或多个注册中心,来自动地发现和更新路由规则和过滤器规则。注册中心是一种专门用于管理服务信息的系统,它可以提供服务注册、发现、监控等功能。这种方式的优点是高效可靠,可以实现动态地调整和负载均衡。缺点是需要依赖外部的注册中心,以及可能存在网络延迟或不稳定的问题。

2、如何使用gateway

(1) 创建网关服务

在项目中创建一个名为gatway的模块用于网关路由服务
在这里插入图片描述

(2) 引入依赖

在gatway模块pom文件中引入依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>

(3) 编写启动类

gateway模块的com.yangzhuo.gateway包下新建一个启动类:
在这里插入图片描述
代码如下:

package com.yangzhuo.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

(4)配置路由

接下来,在gateway模块的resources目录下创建application.yaml文件,内容如下:

server:
  port: 8080
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: # 这里写nacos的地址
    gateway:
      routes:
        - id: book# 路由规则id,自定义,唯一
          uri: lb://book-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
          predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
            - Path=/book/**,/search/** # 这里是以请求路径作为判断规则
       

按照这个格式对所有微服务模块添加配置文件

gateway:
      routes:
        - id: book# 路由规则id,自定义,唯一
          uri: lb://book-service # 路由的目标服务,lb代表负载均衡,会从注册中心拉取服务列表
          predicates: # 路由断言,判断当前请求是否符合当前规则,符合则路由到目标服务
            - Path=/book/**,/search/** # 这里是以请求路径作为判断规则

(5)路由断言的类型(补充)

名称说明示例
After是某个时间点后的请求- After=2037-01-20T17:42:47.789-07:00[America/Denver]
Before是某个时间点之前的请求- Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
Between是某两个时间点之前的请求- Between=2037-01-20T17:42:47.789-07:00[America/Denver],
2037-01-21T17:42:47.789-07:00[America/Denver]
Cookie请求必须包含某些cookie- Cookie=chocolate, ch.p
Header请求必须包含某些header- Header=X-Request-Id, \d+
Host请求必须是访问某个host(域名)- Host=.somehost.org,.anotherhost.org
Method请求方式必须是指定方式- Method=GET,POST
Path请求路径必须符合指定规则- Path=/red/{segment},/blue/**
Query请求参数必须包含指定参数- Query=name, Jack或者- Query=name
RemoteAddr请求者的ip必须是指定范围- RemoteAddr=192.168.1.1/24
weight权重处理

3、总结

  • Spring Cloud Gateway是一个基于Spring Boot 2.x和Spring WebFlux的微服务网关,它提供了一种简单且灵活的方式来实现API路由和治理。通过Spring Cloud Gateway,开发人员能够构建具有高度可扩展性和可靠性的微服务应用程序。
  • Spring Cloud Gateway的核心功能包括路由、断路器、过滤器和限流等。路由是Spring Cloud Gateway最基本的特性之一,它允许开发人员将请求路由到不同的后端服务。路由可以基于URL、HTTP方法、请求头等多种因素进行配置。开发人员可以使用Spring Cloud Gateway提供的默认路由规则,也可以通过编程方式自定义路由规则。
  • 断路器是Spring Cloud Gateway提供的一种用于监控和熔断服务的工具。通过断路器,开发人员可以实时监控服务的健康状况,并在服务出现问题时快速熔断,以避免问题扩散到整个系统。
    过滤器是Spring Cloud Gateway中另一个非常有用的特性,它允许开发人员在请求到达后端服务之前或之后执行自定义逻辑。例如,可以通过过滤器实现请求的身份验证、日志记录或请求规范化等操作。
  • 限流是Spring Cloud Gateway提供的一种保护后端服务的机制。通过限流,开发人员可以限制系统的吞吐量和并发量,以避免因过多的请求而导致的系统崩溃。Spring Cloud Gateway提供了多种限流算法,如令牌桶、漏桶等,供开发人员选择。
  • 总之,Spring Cloud Gateway作为微服务架构中的网关组件,提供了强大的路由、断路器、过滤器和限流等功能,帮助开发人员构建可靠、可扩展的微服务应用程序。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于Nacos实现Spring Cloud Gateway的动态网关路由,可以按照以下步骤进行操作: 1. 添加依赖:在Spring Cloud Gateway项目的pom.xml文件中添加相应的依赖,包括spring-cloud-starter-gatewayspring-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的动态网关路由了。你可以根据实际需求和业务场景,添加更多的路由规则和配置。希望对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值