Gateway路由

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月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/**


相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
存储 人工智能 Kubernetes
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
10月前
|
负载均衡 Java Spring
Spring cloud gateway 如何在路由时进行负载均衡
Spring cloud gateway 如何在路由时进行负载均衡
1047 15
|
11月前
|
Java Nacos 网络架构
Spring Cloud gateway 网关四 动态路由
Spring Cloud gateway 网关四 动态路由
|
11月前
|
微服务
springCloud之路由网关gateway
springCloud之路由网关gateway
|
12月前
|
Java Nacos 网络架构
SpringCloud Gateway的使用 + Nacos动态路由
SpringCloud Gateway的使用 + Nacos动态路由
|
12月前
|
JSON Java Nacos
spring-gateway 基于 nacos 配置文件的动态路由
spring-gateway 基于 nacos 配置文件的动态路由
232 0
|
12月前
|
Java 数据库 Nacos
spring-gateway基于数据库 + nacos 的动态路由
spring-gateway基于数据库 + nacos 的动态路由
242 0
|
前端开发 应用服务中间件 API
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析
|
负载均衡 Java Nacos
Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find
Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find
|
安全 Java API
SpringCloud Gateway路由转发规则
`Spring`在因`Netflix`开源流产事件后,在不断的更换`Netflix`相关的组件,比如:`Eureka`、`Zuul`、`Feign`、`Ribbon`等,`Zuul`的替代产品就是`SpringCloud Gateway`,这是`Spring`团队研发的网关组件,可以实现限流、安全认证、支持长连接等新特性。
SpringCloud Gateway路由转发规则