Spring Gateway的入门概述简介

1. 为什么要有网关

在微服务中,一般都会把相对独立的业务或者功能划分成一个独立的服务,做到业务或者功能之间的隔离,分开部署。但是在请求到这些正式的服务的时候一般会有一些预前的处理,比如:权限校验,流量控制,灰度发布等。如果这些都在各自的服务中去做,势必会增加这些基础功能的维护成本。总之就是需要有一种前置的组件去做公共的功能逻辑。

2. Spring Gateway

Spring Gateway 是 Spring Cloud 微服务生态下的网关组件,网络层使用了基于非阻塞的 Netty使用异步IO增加了系统的性能。Gateway 是基于 Spring 5 和 Spring Boot 2 搭建的,本质上是一个 Spring Boot 应用。

主要的功能
  • 请求路由-最主要的功能
    根据请求本身的属性把请求转发到不同的微服务,使网关能够根据请求的 header、路径、参数、协议等属性将其转发到对应的服务。
  • 服务发现-基础功能
    网关是微服务环境的请求入口。支持服务发现能使网关在转发请求到目标服务时充分利用服务注册中心动态管理服务实例的优势,在配置路由转发的目标地址时也会更加方便
  • 修改请求响应
    网关在收到外部请求,将其转发到目标服务之前,可以根据需求对请求进行修改,比如果更改请求 header、参数等。类似地,也可以在获取到业务服务响应之后,返回给用户前对响应进行修改。
  • 前置业务处理-权限校验
    某些业务场景在处理用户请求时需要先对用户进行权限校验,这部分逻辑也可以由网关来负责。请求在到达网关时,由网关根据请求要访问的业务接口先对用户鉴权,只有校验通过的请求才会转发到对应的服务,而校验不通过的请求会被网关直接拒绝。这样做能够把拒绝无效请求这一步提前到网关这一层,减少无效的流量进入到业务服务。
  • 限流熔断
    网关可以通过添加限流、熔断等机制来对业务服务起保护作用,提升系统整体的可用性。根据业务服务的吞吐量,网关可以限制转发到该服务的请求数量,超出限制的请求直接拒绝或降级,这样可以避免因为过多的请求导致业务服务负载过高的情况。当业务服务异常时,还可以通过熔断的方式到达快速失败的效果。
  • 请求重试
    对于一些幂等的请求,当网关转发目标服务失败时,可以在网关层做自动重试。对于一些多实例部署服务,重试时还可以考虑把请求转发到不同的实例,以提高请求成功的概率。
  • 响应缓存
    当用户请求获取的是一些静态的或更新不频繁的数据时,一段时间内多次请求获取到的数据很可能是一样的。对于这种情况可以将响应缓存起来。这样用户请求可以直接在网关层得到响应数据,无需再去访问业务服务,减轻业务服务的负担。
  • 响应聚合
    某些情况下用户请求要获取的响应内容可能会来自于多

你可能感兴趣的:(spring,gateway,java)