SpringCloud Hoxton——Gateway服务网关

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
网络型负载均衡 NLB,每月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必须与断言、过滤器相匹配,才可进行路由)

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
存储 数据可视化 Java
基于MicrometerTracing门面和Zipkin实现集成springcloud2023的服务追踪
Sleuth将会停止维护,Sleuth最新版本也只支持springboot2。作为替代可以使用MicrometerTracing在微服务中作为服务追踪的工具。
101 1
|
1月前
|
安全 5G 网络性能优化
|
2月前
|
监控 负载均衡 安全
微服务(五)-服务网关zuul(一)
微服务(五)-服务网关zuul(一)
|
13天前
|
负载均衡 Java 应用服务中间件
Gateway服务网关
Gateway服务网关
29 1
Gateway服务网关
|
9天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
38 3
|
1月前
|
前端开发 Java API
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
本文是Vert.x学习系列的第五部分,讨论了回调函数的限制、Future和Promise在异步操作中的应用、响应式扩展以及Kotlin协程,并通过示例代码展示了如何在Vert.x中使用这些异步编程模式。
47 5
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
|
2月前
|
消息中间件 存储 Java
SpringCloud基础9——服务异步通信-高级篇
消息可靠性、死信交换机、惰性队列、MQ集群
SpringCloud基础9——服务异步通信-高级篇
|
2月前
|
负载均衡 Java Nacos
SpringCloud基础2——Nacos配置、Feign、Gateway
nacos配置管理、Feign远程调用、Gateway服务网关
SpringCloud基础2——Nacos配置、Feign、Gateway
|
2月前
|
Java 开发者 Spring
Spring Cloud Gateway 中,过滤器的分类有哪些?
Spring Cloud Gateway 中,过滤器的分类有哪些?
48 3
|
2月前
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
102 5