在微服务中,一般都会把相对独立的业务或者功能划分成一个独立的服务,做到业务或者功能之间的隔离,分开部署。但是在请求到这些正式的服务的时候一般会有一些预前的处理,比如:权限校验,流量控制,灰度发布等。如果这些都在各自的服务中去做,势必会增加这些基础功能的维护成本。总之就是需要有一种前置的组件去做公共的功能逻辑。
Spring Gateway 是 Spring Cloud 微服务生态下的网关组件,网络层使用了基于非阻塞的 Netty使用异步IO增加了系统的性能。Gateway 是基于 Spring 5 和 Spring Boot 2 搭建的,本质上是一个 Spring Boot 应用。
主要功能
- 请求路由-最主要的功能
根据请求本身的属性把请求转发到不同的微服务,使网关能够根据请求的 header、路径、参数、协议等属性将其转发到对应的服务。
- 服务发现-基础功能
网关是微服务环境的请求入口。支持服务发现能使网关在转发请求到目标服务时充分利用服务注册中心动态管理服务实例的优势,在配置路由转发的目标地址时也会更加方便
- 修改请求响应
网关在收到外部请求,将其转发到目标服务之前,可以根据需求对请求进行修改,比如果更改请求 header、参数等。类似地,也可以在获取到业务服务响应之后,返回给用户前对响应进行修改。
- 前置业务处理-权限校验
某些业务场景在处理用户请求时需要先对用户进行权限校验,这部分逻辑也可以由网关来负责。请求在到达网关时,由网关根据请求要访问的业务接口先对用户鉴权,只有校验通过的请求才会转发到对应的服务,而校验不通过的请求会被网关直接拒绝。这样做能够把拒绝无效请求这一步提前到网关这一层,减少无效的流量进入到业务服务。
- 限流熔断
网关可以通过添加限流、熔断等机制来对业务服务起保护作用,提升系统整体的可用性。根据业务服务的吞吐量,网关可以限制转发到该服务的请求数量,超出限制的请求直接拒绝或降级,这样可以避免因为过多的请求导致业务服务负载过高的情况。当业务服务异常时,还可以通过熔断的方式到达快速失败的效果。
- 请求重试
对于一些幂等的请求,当网关转发目标服务失败时,可以在网关层做自动重试。对于一些多实例部署服务,重试时还可以考虑把请求转发到不同的实例,以提高请求成功的概率。
- 响应缓存
当用户请求获取的是一些静态的或更新不频繁的数据时,一段时间内多次请求获取到的数据很可能是一样的。对于这种情况可以将响应缓存起来。这样用户请求可以直接在网关层得到响应数据,无需再去访问业务服务,减轻业务服务的负担。
- 响应聚合
某些情况下用户请求要获取的响应内容可能会来自于多个业务服务。网关作为业务服务的调用方,可以把多个服务的响应整合起来,再一并返回给用户。
- 监控统计
因为网关是请求入口,所以在网关这一层可以方便地对外部的访问请求做监控和统计,同时还可以对业务服务的响应做监控,方便发现异常情况。
- 灰度发布
网关可以用来做服务流量的灰度切换。比如某个业务服务上线了新版本,那可以在网关这一层按照灰度策略,把一部分请求流量切换到新版本服务上,以达到验证新版本业务服务的功能和性能的效果。
- 异常响应处理
对于业务服务返回的异常响应,可以在网关层在返回给用户之前做转换处理。这样可以把一些业务侧返回的异常细节隐藏,转换成用户友好的错误提示返回。
路由是 Gateway 的核心构件,不同的路由根据匹配条件可以处理不同类型的请求,并转发到对应的目标服务。一个路由由以下几个属性组成
Id: 路由 ID。
Uri: 转发请求的目标地址。
Order: 顺序(优先级)。
Predicate: 匹配条件。
Metadata: 额外的元数据。
多个 Predicates 会合并成一个聚合的条件。Filters: 路由过滤器。这些过滤器最终会和全局过滤器一起排序处理匹配成功的请求。
代码配置:
配置文件配置
注意: Gateway默认转发是全路径的,设置StripPrefix=1表示从二级url路径转发,即http://localhost:port/activity/test将会转发到http://{activity}/test
Spring Cloud Gateway 是 Spring Cloud 微服务生态中的 Gateway 组件。作为 Spring Cloud Zuul 的替代,Gateway 采用了性能的更高的 Netty 作为网络层服务器。Gateway 本身提供了很多常用的 Predicates 和 Filters 实现,能满足大部分常见需求。同时 Gateway 也支持 Spring Cloud 生态下其他组件如 Eureka 等的交互,使用起来非常方便。
参考资料:
https://blog.csdn.net/Extraordinarylife/article/details/
到此这篇关于Spring Gateway的入门概述简介的文章就介绍到这了,更多相关Spring Gateway入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
到此这篇spring wang(spring 网关的作用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/62362.html