在WebFlux框架搭建的网关路由应用插件的方法、系统及其应用技术方案

技术编号:28773091 阅读:11 留言:0更新日期:2021-06-09 11:01
本发明专利技术提供一种在WebFlux框架搭建的网关路由应用插件的方法、系统及其应用,在WebFlux框架搭建的网关路由利用设计的插件链和规则选择器实现插件,具体应用方法包括:获取需要处理的http请求;基于插件链上的插件依次对所述http请求进行处理,其中所述插件通过封装所述网关路由的功能规则得到,所述插件依顺序配置得到所述插件链,在利用网关路由能以固定的线程来处理高并发的高性能的同时,实现动态配置路由,对其他业务系统接入表现良好的效果。对其他业务系统接入表现良好的效果。对其他业务系统接入表现良好的效果。

【技术实现步骤摘要】
在WebFlux框架搭建的网关路由应用插件的方法、系统及其应用


[0001]本专利技术涉及计算机网络通讯领域,特别涉及一种在WebFlux框架搭建的网关路由应用插件的方法、系统及其应用。

技术介绍

[0002]网关,又称网间连接器、协议转换器,简单地理解就是一个网络连接到另一个网络的“关口”,实质上是一个网络通向其他网络的IP地址,网关的IP地址是具有路由功能的设备的IP地址,对应的,网关的核心功能是根据路由规则将请求分发到相应的后端集群。路由发生在网络层,其是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程,其可根据请求的host,url等规则将数据包转换到相应的后端集群。
[0003]Spring WebFlux(以下简称WebFlux)是Spring Framework 5.0中引入的新的响应式web框架,其是一个异步非阻塞式的Web框架,能够充分利用多核CPU的硬件资源去处理大量的并发请求,且可填补Spring在响应式编程上的空白,其针对通用的通信框架(比如Netty,Redis)都提供了响应式访问的开发包。现有技术一些使用WebFlux的网关,比如Spring

Cloud

Gateway,其利用WebFlux中的reactor

netty响应式编程组件,底层使用了Netty通讯框架,进而搭建一个高性能网关的效果。
[0004]然而以WebFulx框架搭建的网关,比如Spring

>Cloud

Gateway,旨在为微服务架构提供一种简单有效的统一的API路由管理方式,存在无法进行动态路由配置、以及调用时依赖需要在Spring

Cloud的缺陷,导致Spring

Cloud

Gateway对其他业务系统的接入表现地十分不友好,很难利用Spring

Cloud

Gateway制作公共服务。

技术实现思路

[0005]本专利技术的目的在于提供一种在WebFlux框架搭建的网关路由应用插件的方法、系统及其应用,其在在利用网关路由能以固定的线程来处理高并发的高性能的同时,实现动态配置路由,对其他业务系统接入表现良好的效果。
[0006]为实现以上目的,本技术方案提供一种在WebFlux框架搭建的网关路由应用插件的方法,其特征在于,包括以下步骤:
[0007]获取需要处理的http请求;
[0008]基于插件链上的插件依次对所述http请求进行处理,其中所述插件通过封装所述网关路由的功能规则得到,所述插件依顺序配置得到所述插件链。
[0009]第二方面,提供一种在WebFlux框架搭建的网关路由应用插件的系统,包括:
[0010]请求获取单元,用于获取需要处理的http请求;
[0011]请求处理单元:基于插件链上的插件依次对所述http请求进行处理,其中所述插件通过封装所述网关路由的功能规则得到,所述插件依顺序配置得到所述插件链。
[0012]第三方面,提供一种WebFlux框架搭建的网关路由,使用Spring Boot搭建的微服务并引入WebFlux框架,应用其上在WebFlux框架搭建的网关路由应用插件的方法。
[0013]一种电子设备,处理器;以及存储器,在所述存储器中存储有计算机存储器,在所述存储器中存储有计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行在WebFlux框架搭建的网关路由应用插件的方法。
[0014]相较现有技术,本技术方案具有以下特点和有益效果:通过引入Webflux、Netty等技术实现了网关的核心功能,在保证了网关的高性能的同时将网关的核心功能设计成插件式,开发人员只需要实现一个接口或者抽象类,再基于规则选择器的设计,即可实现非常细粒度的路由控制,且路由控制方式非常灵活易扩展,在一定程度上降低了开发人员的研发成本和维护成本。
附图说明
[0015]图1是根据本专利技术的基于WebFlux框架搭建的网关建模的类图。
[0016]图2是规则选择器和插件对应执行的流程示意图。
[0017]图3是在WebFlux框架搭建的网关路由应用插件的方法的方法的示例。
[0018]图4是在WebFlux框架搭建的网关路由应用插件的方法的方法流程示意图。
具体实施方式
[0019]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。
[0020]本方案涉及的部分技术术语:
[0021]WebFlux,是Spring Framework 5.0中引入的新的响应式web框架,其与Spring MVC不同之处在于:它不需要Servlet API,是完全异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范,相对于传统的web框架来说,它可以运行在诸如Netty,Undertow及支持Servlet3.1的容器上,因此它的运行环境的可选择行要比传统web框架多的多。
[0022]Netty,是由JBOSS提供的一个java开源框架,Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty是一个基于NIO的客户、服务器端的编程框架,使用Netty可以确保快速和简单的开发出一个网络应用。
[0023]网关核心功能,根据路由规则将请求分发到相应的后端集群。
[0024]路由,根据请求的host,url等规则转发到相应的后端集群。
[0025]路由策略插件化,路由中会有身份认证、限流限速、安全防护(如IP黑名单,refer异常,UA异常,需第一时间拒绝)等功能规则,这些功能规则以插件的形式互相组合起来以便只对某一类的请求生效,对应的插件可动态配置、动态生效。
[0026]http请求,是指从客户端到服务器端的请求消息,请求信息的内容包括(1)请求方法URI协议/版本(2)请求头(Request Header)(3)请求正文。
[0027],请求的第一行是“方法URI协议/版本”,请求头包含许多有关的客户端环境和请求正文的有用信息,请求头和请求正文之间是一个空行,请求正文中可以包含客户提交的查询字符串信息。
[0028]插件,将对http请求进行处理的各个功能的功能规则封装,通过统一方法调用各个功能,提供调用统一方法的对象称之为“插件”。
[0029]插件链,依据配置参数有顺序排列的插件组合。
[0030]本方案提供一种基于WebFlux框架搭建的网关,所述网关不同于
技术介绍
中所述的“Spr本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种在WebFlux框架搭建的网关路由应用插件的方法,其特征在于,包括以下步骤:获取需要处理的http请求;基于插件链上的插件依次对所述http请求进行处理,其中所述插件通过封装所述网关路由的功能规则得到,所述插件依顺序配置得到所述插件链。2.根据权利要求1所述的在WebFlux框架搭建的网关路由应用插件的方法,其特征在于,每个所述插件被配置包括至少一规则选择器的选择器列表,所述规则选择器被配置至少一路由规则。3.根据权利要求2所述的在WebFlux框架搭建的网关路由应用插件的方法,其特征在于,所述“基于插件链上的插件依次对所述http请求进行处理”包括:调用所述插件的execute()方法,判断所述插件是否已经启用,若启用则判断对应所述插件的规则选择器是否匹配所述http请求,若匹配则执行所述插件的业务,若不匹配则将所述http请求传递给所述插件链的其他插件。4.根据权利要求3所述的在WebFlux框架搭建的网关路由应用插件的方法,其特征在于,所述“判断对应所述插件的规则选择器是否匹配所述http请求”包括:所述插件从对应的选择器列表中选择一个规则选择器,根据所述规则选择器中配置的路由规则从所述http请求中获取相应参数进行匹配,若匹配不成功则选择所述选择器列表中其外的规则选择器进行匹配,直到某一个规则选择器匹配成功为止。5.根据权利要求2所述的在WebFlux框架搭建的网关路由应用插件的方法,其特征在于,所述规则选择器内的所述路由规则为:获取http请求的url进行等于逻辑判断或正则匹配,或,获...

【专利技术属性】
技术研发人员:郁强毛云青梁贤欧阳刚程立勇
申请(专利权)人:城云科技中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1