Gateway路由

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: Gateway路由

Gateway路由配置分为基于配置的静态路由设置和基于代码动态路由配置,

静态路由是指在application.yml中把路由信息配置好了,而动态路由则支持在代码中动态加载路由信息,更加灵活,我们接下来把这2种路由操作都实现一次。

2.2.1 业务说明

如上图:

  1. 用户所有请求以/order开始的请求,都路由到 hailtaxi-order服务
  2. 用户所有请求以/driver开始的请求,都路由到 hailtaxi-driver服务
  3. 用户所有请求以/pay开始的请求,都路由到 hailtaxi-pay服务
    基于配置路由设置

  4. 用户所有请求以/order开始的请求,都路由到 hailtaxi-order服务
  5. 用户所有请求以/driver开始的请求,都路由到 hailtaxi-driver服务
  6. 用户所有请求以/pay开始的请求,都路由到 hailtaxi-pay服务 配置参数说明:
routes:路由配置
  • id:唯一标识符

uri:路由地址,可以是 lb://IP:端口     也可以是   lb://${spring.application.name}

predicates:断言,是指路由条件

  • Path=/driver/**:路由条件。Predicate 接受一个输入参数,返回一个布尔值结果。这里表示匹配所有以driver开始的请求。

filters:过滤器

  • StripPrefix=1:真实路由的时候,去掉第1个路径,路径个数以/分割区分
####  基于代码路由配置
我们同样实现上面的功能,但这里基于代码方式实现。所有路由规则我们可以从数据库中读取并加载到程序中。基于代码的路由配置我们只需要创建`RouteLocator`并添加路由配置即可,代码如下:
```java
/***
* 路由配置
* @param builder
* @return
*/
@Bean
public RouteLocator routeLocator(RouteLocatorBuilder builder) {
   return builder.routes()
      .route("hailtaxi-driver", r -> r.path("/driver/**").uri("lb://hailtaxi-driver"))
      .route("hailtaxi-order", r -> r.path("/order/**").uri("lb://hailtaxi-order"))
      .route("hailtaxi-pay", r -> r.path("/pay/**").uri("lb://hailtaxi-pay"))
      .build();
}
在真实场景中,基于配置文件的方式更直观、简介,但代码的路由配置是更强大,可以实现很丰富的功能,可以把路由规则存在数据库中,每次直接从数据库中加载规则,这样的好处是可以动态刷新路由规则,通常应用于权限系统动态配置。
```yaml
spring: 
    cloud: 
        gateway:
          #路由配置
          routes:
            #唯一标识符
            - id: hailtaxi-driver
              uri: lb://hailtaxi-driver
              #路由断言
              predicates:
                - Path=/driver/**
            #唯一标识符
            - id: hailtaxi-order
              uri: lb://hailtaxi-order
              #路由断言
              predicates:
                - Path=/order/**
            #唯一标识符
            - id: hailtaxi-pay
              uri: lb://hailtaxi-pay
              #路由断言
              predicates:
                - Path=/pay/**


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
488 15
|
5月前
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由
|
5月前
|
微服务
springCloud之路由网关gateway
springCloud之路由网关gateway
|
6月前
|
Java Nacos 网络架构
SpringCloud Gateway的使用 + Nacos动态路由
SpringCloud Gateway的使用 + Nacos动态路由
|
6月前
|
JSON Java Nacos
spring-gateway 基于 nacos 配置文件的动态路由
spring-gateway 基于 nacos 配置文件的动态路由
172 0
|
6月前
|
Java 数据库 Nacos
spring-gateway基于数据库 + nacos 的动态路由
spring-gateway基于数据库 + nacos 的动态路由
181 0
|
前端开发 应用服务中间件 API
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
338 0
|
负载均衡 Java Nacos
Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find
Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find
385 0
|
负载均衡 Java API
三分钟了解Spring Cloud Gateway路由转发之自动路由
一、前言 今天有个新同学,问我为什么我们的网关服务Spring Cloud Gateway,没有配置路由就可以将请求到路由服务,说他们之前的项目的网关是将路由配置在配置文件中。指定路由类似以下写法。而在现在的项目的配置文件中未发现任何路由配置。觉得很奇怪,Spring-Cloud-Gateway 是如何将请求路由到指定的服务的呢。我让他比对一下配置文件有什么不同,他说就是只有一个spring.cloud.gateway.discovery.locator.enabled=true
3387 0
|
负载均衡 前端开发 Java
统一网关Gateway、路由断言工厂、路由过滤器及跨域问题处理
统一网关Gateway、路由断言工厂、路由过滤器及跨域问题处理
262 0