SpringCloud Hoxton——Gateway服务网关

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: SpringCloud Hoxton——Gateway服务网关

1.开篇


Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5Spring Boot 2 Project Reactor等技术。Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能,例如:熔断、限流、重试等


SpringCloud Gateway Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。

SpringCloud Gateway
作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 1.xReactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty

Spring Cloud Gateway
的目标提供统一的路由方式且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。

Gateway能干嘛?(反向代理、鉴权、流量控制、熔断、日志监控等)


Gateway三大核心概念:(路由转发+ 执行过滤链)

·       Route(路由):路由是构建网关的基本模块,它由ID、目标URI、一系列的断言和过滤器组成,如果断言为true则匹配该路由。

·       Predicate(断言):参考Java8java.util.function.Predicate,开发人员可以匹配HTTP请求中的所有内容,如果请求与断言相匹配则进行路由。

·       Filter(过滤):指的是SpringGatewayFilter的实例,使用过滤器,可以在请求被路由前或者之后,对请求进行修改。

2.项目源码


github源码地址:https://github.com/2656307671/SpringCloud-Hoxton-Gateway

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Hoxton-Gateway


启动7001800180029527

在没有添加网关的时候,我们访问url是:http://localhost:8001/payment/get/1;添加网关之后,url是:http://localhost:9527/payment/get/1?uname=szh

因为我们后来添加了相关断言和过滤器,所以测试在浏览器中输入 http://localhost:9527/payment/lb?uname=szh

eureka7001这个注册中心中,可以看到我们的两个微服务已经注册进来了。


添加网关之后,再输入http://localhost:9527/payment/get/1则无法访问,此时会被过滤器给过滤拦截,需要根据我们自定义的业务逻辑,在后面加上uname参数。即urlhttp://localhost:9527/payment/get/1?uname=szh 才可以正常访问。

刷新页面,可以在serverPort中看到80018002交替访问,这是因为配置文件中的 uri协议lb表示启用Gateway的负载均衡功能,同时实现动态路由功能。

下面的 http://localhost:9527/payment/lb?uname=szh 也是同样的道理。9527就是套在80018002外的一层保护罩,如果断言、过滤器等相关配置信息不符合要求,则访问出错;想要成功访问,则必须请求url必须与断言、过滤器相匹配,才可进行路由)

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
打赏
0
0
0
0
86
分享
相关文章
|
4月前
|
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
281 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
205 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
212 8
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
74 6
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
630 1
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + MySQL应用程序部署到Pivotal Cloud Foundry (PCF)
109 5
|
4月前
|
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot应用程序部署到Pivotal Cloud Foundry (PCF)
89 5
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
142 3