getway

Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监控/埋点、限流等。在这里插入图片描述
客户端向Spring Cloud Gateway发出请求。如果Gateway Handler Mapping确定请求与路由匹配,则将其发送到Gateway Web Handler。此handler通过特定于该请求的过滤器链处理请求。图中filters被虚线划分的原因是filters可以在发送代理请求之前或之后执行逻辑。先执行所有“pre filter”逻辑,然后进行请求代理。在请求代理执行完后,执行“post filter”逻辑。

特征
Spring Cloud Gateway功能:

建立在Spring Framework 5,Project Reactor和Spring Boot 2.0之上

能够匹配任何请求属性上的路由。

谓词和过滤器特定于路由。

Hystrix断路器集成。

Spring Cloud DiscoveryClient集成

易于编写的谓词和过滤器

请求速率限制

路径改写
在这里插入图片描述在这里插入图片描述在这里插入图片描述

### Getway与Nacos的关系 Spring Cloud Gateway 是一款基于 Spring 生态系统的 API 网关工具,支持路由、限流等功能。而 Nacos 则是一款用于动态服务发现、配置管理和服务管理的平台。两者可以很好地协同工作来构建微服务体系。 通过集成 Nacos 作为服务注册中心,Gateway 可以自动感知并调用后端的服务实例。这使得网关层能够根据实际运行情况灵活调整请求转发目标[^1]。 ### 集成方式 #### 使用SDK模式进行集成 为了使 Spring Cloud Gateway 能够利用 Nacos 进行服务发现,在项目中引入 `spring-cloud-starter-alibaba-nacos-discovery` 依赖项: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` 接着在应用配置文件 application.yml 中指定 Nacos Server 地址以及当前应用程序名称: ```yaml spring: cloud: nacos: discovery: server-addr: localhost:8848 # Nacos服务器地址 service-url: user-service: ${spring.application.name}-user-service # 微服务名 ``` 此时当启动该网关程序时会向 Nacos 注册自己,并可以从 Nacos 获取其他已注册服务的信息。 对于定义路由规则,则可以在 configuration 类上使用 @LoadBalanced 和 RestTemplate 或 WebClient 来实现负载均衡功能;也可以直接编写 YAML 文件中的 routes 字段完成静态/动态路由设置。 #### 动态路由示例 下面是一个简单的例子展示了如何创建一条指向名为 "userservice" 的下游服务路径 `/api/user/**` 映射到上游 URI `${service-url.user-service}` 上去: ```yaml spring: cloud: gateway: routes: - id: user_service_route uri: lb://${service-url.user-service} predicates: - Path=/api/user/** ``` 这里的关键在于uri字段前缀lb://表示启用Ribbon客户端负载均衡器,它将会从Eureka/Nacos等服务列表里随机选取一个可用节点发起HTTP请求。 ### 使用场景 这种组合非常适合于大型分布式系统架构下多个子模块间的通信需求。比如在一个电商网站里面可能存在商品查询、订单处理等多个独立部署的应用单元,借助上述技术方案可以让前端统一入口更加简洁高效地访问后台资源而不必关心具体物理位置分布状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值