网关Spring Cloud Gateway

网关Spring Cloud Gateway,第1张

网关Spring Cloud Gateway 诞生背景

一个大型的系统可以拆分为很多个微服务,客户端去访问微服务时会通过服务的URL地址进行访问,如果有很多个URL地址时,我们只能在客户端保存地址分别去访问,而且在调用微服务时还需要独立的认证以及跨域的请求,这样的话就提高了代码的复杂性。为了简化服务的调用逻辑和复杂度,就有了网关的概念。

概述

网关本质上要提供一个各种服务访问的入口,并提供服务接收并转发所有内外部的客户端调用,还有就是权限认证,限流控制等等。

Spring Cloud Gateway是Spring公司基于Spring 5.0,Spring Boot 2.0 和 等技术开发的一个网关组件,它旨在为微服务架构提供一种简单有效的统一的 API入口,负责服务请求路由、组合及协议转换,并且基于 Filter 链的方式提供了权限认证,监控、限流等功能。

Spring cloud Gateway优缺点分析

1.优点

性能强大,速度是Zuul的1.6倍

功能强大,内置了很多实用的功能,例如转发、监控、限流等

设计优雅,容易扩展

2.缺点

依赖Netty与WebFlux(Spring5.0),不是传统的Servlet编程模型(Spring MVC就是基于此模型实现),学习成本高。

需要Spring Boot 2.0及以上的版本,才支持

Spring cloud Gateway限流

从 1.6.0 版本开始,Sentinel 提供了 Spring Cloud Gateway 的适配模块,可以提供两种资源维度的限流:

route 维度:即在 Spring 配置文件中配置的路由条目,资源名为对应的 routeId

自定义 API 维度:用户可以利用 Sentinel 提供的 API 来自定义一些 API 分组

在使用时需要导入依赖:


    com.alibaba.csp
    sentinel-spring-cloud-gateway-adapter
    x.y.z

配置文件(yml)

server:
  port: 8090
spring:
  application:
    name: spring-cloud-gateway
  cloud:
    gateway:
      enabled: true
      discovery:
        locator:
          lower-case-service-id: true
      routes:
        # Add your routes here.
        - id: product_route
          uri: lb://product
          predicates:
            - Path=/product/**
        - id: httpbin_route
          uri: https://httpbin.org
          predicates:
            - Path=/httpbin/**
          filters:
            - RewritePath=/httpbin/(?.*), /${segment}

其中:路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息:

id,路由标识符,区别于其他 Route。
uri,路由指向的目的地 uri,即客户端请求最终被转发到的微服务。
predicate,断言(谓词)的作用是进行条件判断,只有断言都返回真,才会执行路由。
filter,过滤器用于修改请求和响应信息。

小结:

什么是网关?服务访问(流量)的一个入口,类似生活中的“海关“
为什么使用网关?(服务安全,统一服务入口管理,负载均衡,限流,鉴权)
Spring Cloud Gateway 应用的初始构建过程(添加依赖,配置)
Gateway 服务的启动底层是通过谁去实现的?(Netty网络编程框架-ServerSocket)
Gateway 服务做请求转发时一定要在注册中心进行注册吗?(不一定,可以直接通过远端url进行服务访问)

Gateway具体工作流程

 客户端向Spring Cloud Gateway发出请求。 如果Gateway Handler Mapping 通过谓词predicates(predicates)的集合确定请求与路由(Routers)匹配,则将其发送到Gateway Web Handler。 Gateway Web Handler 基于路由配置调用过滤链中的过滤器(也就是所谓的责任链模式)进一步的处理请求。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5685351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存