怎么做好网站,如何给网站做第三方流量监测,手机建站平台,wordpress 安全加固文章目录 一、网关简介1.1 网关提出的背景1.2 网关在微服务中的位置1.3 网关的技术选型1.4 补充 二、Spring Cloud Gateway的简介2.1 核心概念#xff1a;路由#xff08;Route#xff09;2.2 核心概念#xff1a;断言#xff08;Predicate#xff09;2.3 核心概念#… 文章目录 一、网关简介1.1 网关提出的背景1.2 网关在微服务中的位置1.3 网关的技术选型1.4 补充 二、Spring Cloud Gateway的简介2.1 核心概念路由Route2.2 核心概念断言Predicate2.3 核心概念过滤器Filter2.4 功能特性 三、自定义断言和过滤器3.1 自定义路由断言工厂3.2 自定义过滤器工厂3.3 自定义全局过滤器 参考链接 一、网关简介
1.1 网关提出的背景
在微服务架构中一个系统会被拆分为多个微服务这样就带来了一些问题
前端需要维护大量微服务的地址。随着项目的迭代后端可能需要重新划分微服务此时前端需要进行相应的调整。每个微服务都需要进行一些重复的工作如认证、鉴权、处理跨域问题。
为了解决上述问题微服务引入了网关的概念。网关作为客户端的统一入口负责将请求路由到具体的微服务。网关还可以实现一些业务无关的公用逻辑如认证、鉴权、处理跨域、路由转发、安全策略SQL注入Web攻击黑白名单、流量控制、日志监控证书/加密解密等处理等。
1.2 网关在微服务中的位置
请求链客户端-负载均衡-网关-微服务。
1.3 网关的技术选型 1.4 补充
对于一般的系统只涉及一个微服务应用此时网关和微服务应用在一起。
对于复杂的系统会涉及多个微服务应用此时在每个微服务应用中都使用一个单独的网关是不合理的正确的做法是单独使用一个应用作为这些微服务应用的共同网关。
二、Spring Cloud Gateway的简介
2.1 核心概念路由Route
使用了网关后所有客户端的请求都会先达到网关再由网关将请求转发到特定的微服务。Spring Cloud Gateway中定义了路由的概念使用路由来配置请求的转发逻辑每个路由包含如下几个关键元素
ID路由的唯一标识符。URI目标服务的地址。Order路由优先级数字越小优先级越高。Predicates一系列判断条件用于决定请求是否应该由当前路由处理。Filters请求在被转发前后可执行的一系列操作用以修改请求或响应。
路由本质是一种配置每种路由对应一条配置可以通过配置文件或代码来配置。其中使用的Predicate和Filter可以是内置的也可以是自定义的。
2.2 核心概念断言Predicate
断言用于判断收到的请求是否应该由当前路由处理。断言基于请求的各种属性如请求头、路径、方法等进行匹配。Spring Cloud Gateway 提供了多种内置的断言工厂如基于路径(Path)、请求方法(Method)、主机名(Host)、查询参数(Query)等的断言同时也支持自定义断言。断言之间可以进行逻辑组合AND、OR等以实现复杂的匹配逻辑。
内置断言见官方文档中的5. Route Predicate Factories。
2.3 核心概念过滤器Filter
过滤器用于对请求和响应进行处理。过滤器可以修改请求、响应或执行路由逻辑。过滤器可以用来实现诸如身份验证、日志记录、请求改写、响应处理等多种功能。Spring Cloud Gateway同样提供了丰富的内置过滤器工厂并且支持自定义过滤器。
从作用范围看过滤器分为两种类型网关路由器Gateway Filters应用于特定路由全局路由器Global Filters应用于所有路由。
内置过滤器见官方文档中的6. GatewayFilter Factories和7. Global Filters。
2.4 功能特性
基于Spring 5Project ReactorSprngBoot 2 构建。动态路由能匹配任何请求属性。支持路径重写。集成 Spring Cloud 服务发现功能NacosEruka。可集成流控降级功能SentinelHystrix。可以对路由指定易于编写的 Predicates 和 Filters。
三、自定义断言和过滤器
3.1 自定义路由断言工厂
自定义路由断言工厂的要点可以模仿内置路由断言工厂来写
必须是Spring的组件使用Component标记。类名必须以RoutePredicateFactory为后缀底层用到反射约定了类名规范。必须继承AbstractRoutePredicateFactory。必须在内部定义一个静态内部类Config用于接收配置信息写法固定定义需要的属性和对应的get方法即可。需要结合shortcutFieldOrder()进行绑定配置信息绑定到静态内部类属性。在apply()中定义断言逻辑。
3.2 自定义过滤器工厂
自定义过滤器工厂的要点类似于自定义路由断言工厂的要点
必须是Spring的组件使用Component标记。类名必须以GatewayFilterFactory为后缀。必须继承AbstractGatewayFilterFactory。必须在内部定义一个静态内部类Config用于接收配置信息写法固定定义需要的属性和对应的get/set方法即可。需要结合shortcutFieldOrder()进行绑定。在apply()中定义过滤逻辑。
3.3 自定义全局过滤器
写一个类实现GlobalFilter然后将该类交给Spring管理即可不需要单独配置。
参考链接
Spring Cloud Gateway 服务网关的部署与使用详细介绍 SpringCloud GateWay 万字详解 SpringCloud gateway 史上最全 b站视频图灵Java面试教程-SpringCloud Gateway微服务网关全套 官方文档Spring Cloud Gateway