Spring Cloud Netflix 项目进入维护模式,Spring Cloud Netflix 将不再开发新的组件,我们知道 Spring Cloud 版本迭代算是比较快的,因而出现了很多中岛的 ISSUE 都来不及 Fix 就又推另一个 Release 了 。进入维护模式意思就是目前已知以后一段时间 Spring Cloud Netflix 提供的服务和功能就这么多了, 不再开发性的组件和功能了。 以后将以维护和 Merge 分支 Full Requset 为主。换句话说:就是 SpringCloud 的技术栈不再完整了!此时,我们就有必要寻找一个新的完整的技术栈。
服务限流降级:默认支持 Servlet、Feign\
RestTemplate、Dubbo、和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级骨子额,还支持查看限流降级 Metrics 控制。
服务注册于发现:适配 Spring Cloud 服务注册于发现标准,默认集成 Ribbon 支持
分布式配置管理:支持分布式系统中的外部话配置,配置更改时自动刷新。
消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用,任何时间、任何低调存储和访问任意类型的数据。
分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务,网格任务支持海量任务均匀分配到所有 Worker (schedulerx-client) 执行。
在微服务架构中,通常一个系统会被拆分为多个微服务,面对这么多微服务客户端应该如何去调用呢?如果没有其他更优方法,我们只能记录每个微服务对应的地址,分别去调用,但是这样会有很多的问题和潜在因素。
-
客户端多次请求不同的微服务,会增加客户端代码和配置的复杂性,维护成本比价高。
-
认证复杂,每个微服务可能存在不同的认证方式,客户端去调用,要去适配不同的认证,
-
存在跨域的请求,调用链有一定的相对复杂性(防火墙 / 浏览器不友好的协议)。
-
难以重构,随着项目的迭代,可能需要重新划分微服务
为了解决上面的问题,微服务引入了 网关 的概念,网关为微服务架构的系统提供简单、有效且统一的API路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公用逻辑,主要功能包含认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。
-
GateWay : 是Spring Cloud的一个全新的API网关项目,替换Zuul开发的网关服务,基于Spring5.0 + SpringBoot2.0 + WebFlux(基于性能的Reactor模式响应式通信框架Netty,异步阻塞模型)等技术开发,性能高于Zuul
- 核心流程 :
核心概念:
-
Gateway Client
向Spring Cloud Gateway
发送请求 -
请求首先会被
HttpWebHandlerAdapter
进行提取组装成网关上下文 -
然后网关的上下文会传递到
DispatcherHandler
,它负责将请求分发给RoutePredicateHandlerMapping
-
RoutePredicateHandlerMapping
负责路由查找,并根据路由断言判断路由是否可用 -
如果过断言成功,由
FilteringWebHandler
创建过滤器链并调用 -
通过特定于请求的
Fliter
链运行请求,Filter
被虚线分隔的原因是Filter可以在发送代理请求之前(pre)和之后(post)运行逻辑 -
执行所有pre过滤器逻辑。然后进行代理请求。发出代理请求后,将运行“post”过滤器逻辑。
-
处理完毕之后将
Response
返回到Gateway
客户端
Filter过滤器:
-
Filter在pre类型的过滤器可以做参数效验、权限效验、流量监控、日志输出、协议转换等。
-
Filter在post类型的过滤器可以做响应内容、响应头的修改、日志输出、流量监控等
核心思想
当用户发出请求达到 GateWay
之后,会通过一些匹配条件,定位到真正的服务节点,并且在这个转发过程前后,进行一些细粒度的控制,其中 Predicate(断言) 是我们的匹配条件,Filter 是一个拦截器,有了这两点,再加上URL,就可以实现一个具体的路由,核心思想:路由转发+执行过滤器链
这个过程就好比考试,我们考试首先要找到对应的考场,我们需要知道考场的地址和名称(id和url),然后我们进入考场之前会有考官查看我们的准考证是否匹配(断言),如果匹配才会进入考场,我们进入考场之后,(路由之前)会进行身份的登记和考试的科目,填写考试信息,当我们考试完成之后(路由之后)会进行签字交卷,走出考场,这个就类似我们的过滤器
Route(路由) :构建网关的基础模块,由ID、目标URL、过滤器等组成
Predicate(断言) :开发人员可以匹配HTTP请求中的内容(请求头和请求参数),如果请求断言匹配贼进行路由
Filter(过滤) :GateWayFilter的实例,使用过滤器,可以在请求被路由之前或者之后对请求进行修改
标签:服务,请求,Spring,博学,Alibaba,Cloud,过滤器,GateWay,路由 From: https://www.cnblogs.com/LiuLance/p/17428285.html