网关过滤器扩展方法、装置、计算机设备和可读存储介质与流程

未命名 10-09 阅读:142 评论:0


1.本技术涉及金融科技技术领域,特别涉及一种网关过滤器扩展方法、装置、计算机设备和可读存储介质。


背景技术:

2.随着经济的不断发展,科技的不断进步,微服务已经越来越多地应用到金融服务行业;其中,微服务网关针对接入的不同微服务,例如存款微服务和贷款微服务,在网关处对微服务的业务逻辑进行处理,在微服务网关服务中,需要通过自定义过滤器来实现。目前自定义过滤器都需要在项目中编码实现,每次实现后都需要重新编译发布到生产环境才能使得过滤器生效。于是网关开发人员需要了解和确认金融行业业务逻辑后,才能进行过滤器编写,并在网关代码中糅杂了本不属于网关的业务逻辑代码,经历了较长的项目迭代周期,这种针对金融行业业务场景开发定制化过滤器的方式耗时较长,开发效率低。


技术实现要素:

3.本技术的旨在至少一定程度解决现有技术的问题,提供一种网关过滤器扩展方法、装置、计算机设备和可读存储介质,能够实现业务逻辑和网关逻辑功能的相互隔离,实现解耦,提升金融行业网关过滤器对的开发效率。
4.本技术实施例的技术方案如下:
5.第一方面,本技术提供了一种网关过滤器扩展方法,应用于微服务网关,所述方法包括:
6.将所述微服务网关的业务过滤器转换成groovy脚本文件,并将所述groovy脚本文件保存至预设的脚本管理平台;
7.所述微服务网关从所述脚本管理平台加载所述groovy脚本文件,以进行所述业务过滤器的初始化;
8.在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本;
9.对所述更新的groovy脚本进行转换处理,得到可运行文件;
10.在所述微服务网关运行业务逻辑的情况下,所述可运行文件生效运行。
11.根据本技术的一些实施例,所述对所述更新的groovy脚本进行转换处理,得到可运行文件,包括:
12.获取所述更新的groovy脚本的代码,得到代码内容;
13.对所述代码内容进行解析,形成支持所述微服务网关的面向对象格式;
14.将所述面向对象格式添加至预设的容器中,得到所述可运行文件。
15.根据本技术的一些实施例,所述将所述微服务网关的业务过滤器转换成groovy脚本文件,包括:
16.将所述业务过滤器从所述微服务网关中分离,并获取所述业务过滤器的java代码
内容;
17.将所述java代码内容转换成所述groovy脚本文件。
18.根据本技术的一些实施例,所述更新操作包括更改所述groovy脚本文件;
19.所述在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本,包括:
20.所述脚本管理平台触发于对所述groovy脚本文件的编辑操作,保存已更改groovy脚本;
21.在监听到所述脚本管理平台执行编辑保存操作的情况下,从所述脚本管理平台加载所述已更改groovy脚本。
22.根据本技术的一些实施例,所述更新操作还包括上传新的groovy脚本;
23.所述在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本,包括:
24.在监听到所述脚本管理平台执行上传操作的情况下,从所述脚本管理平台加载所述新的groovy脚本。
25.根据本技术的一些实施例,所述对所述代码内容进行解析,形成支持所述微服务网关的面向对象格式,包括:利用预设的类装载器对所述代码内容进行解析,形成支持所述微服务网关的面向对象格式。
26.根据本技术的一些实施例,述微服务网关的功能包括:监控功能、权限控制功能、动态路由功能和/或负载均衡功能。
27.第二方面,本技术提供了一种网关过滤器扩展装置,包括:
28.脚本转换模块,用于将所述微服务网关的业务过滤器转换成groovy脚本文件,并将所述groovy脚本文件保存至预设的脚本管理平台;
29.初始化模块,用于所述微服务网关从所述脚本管理平台加载所述groovy脚本文件,以进行所述业务过滤器的初始化;
30.监听加载模块,用于在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本;
31.脚本处理模块,用于对所述更新的groovy脚本进行转换处理,得到可运行文件;
32.运行处理模块,用于在所述微服务网关运行业务逻辑的情况下,所述可运行文件生效运行。
33.第三方面,本技术提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如上第一方面描述的任一项所述方法的步骤。
34.第四方面,本技术还提供了一种计算机可读存储介质,所述存储介质可被处理器读写,所述存储介质存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上第一方面描述的任一项所述方法的步骤。
35.本技术实施例所提供的技术方案具有如下的有益效果:
36.本技术实施例提出一种网关过滤器扩展方法、装置、计算机设备和可读存储介质,该网关过滤器扩展方法首先将金融行业微服务网关的业务过滤器转换成groovy脚本文件,并将groovy脚本文件保存至预设的脚本管理平台,使得业务逻辑与网关功能能够相互隔
离,实现解耦;金融行业微服务网关从脚本管理平台加载groovy脚本文件,以进行业务过滤器的初始化;在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,通过对脚本管理平台进行监听,实现对业务过滤器的动态扩展;对更新的groovy脚本进行转换处理,得到可运行文件;在金融行业微服务网关运行业务逻辑的情况下,可运行文件生效运行,从而实现对金融行业微服务网关的业务处理。与现有技术中针对特定的业务场景开发定制化过滤器的耗时较长,开发效率低相比,本技术实施例通过将金融行业业务过滤器转换成groovy脚本文件实现业务与网关的解耦,监听脚本管理平台的操作实现在网关运行期间实时修改业务过滤器,提升金融行业微服务网关的可扩展性,提升了金融行业微服务网关的开发效率。
附图说明
37.图1是本技术的一个实施例提供的网关过滤器扩展方法的流程示意图;
38.图2是图1中步骤s140的一个子步骤流程示意图;
39.图3是图1中步骤s110的一个子步骤流程示意图;
40.图4是图1中步骤s130的一个子步骤流程示意图;
41.图5是是本技术的一个实施例提供的网关过滤器扩展方法的整体流程示意图;
42.图6是本技术的一个实施例提供的网关过滤器扩展装置的结构示意图;
43.图7是本技术实施例提供的计算机设备的结构示意图。
具体实施方式
44.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
45.需要说明的是,除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
46.首先,对本技术中涉及的若干名词进行解析:
47.java类:java是一门面向对象的编程语言,除了基本数据类型以外,java要求每一个数据类型必须都是一个类。面向对象的编程思想力图使在计算机语言中对事物的描述与现实世界中该事物的本来面目尽可能地一致,类(class)和对象(object)就是面向对象方法的核心概念。类是对某一类事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的个体,因而也称实例(instance)。类和对象就如同概念和实物之间的关系一样,类就好比是一个模板,而对象就是该模板下的一个实例。面向对象的主要思想是:将客观事物看作具有状态和行为的对象,通过抽象找出同一类对象的共同状态和行为,构成类。
48.bean类:javabean是描述java的软件组件模型,在java模型中,通过javabean可以无限扩充java程序的功能,通过javabean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是javabean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。例如一个购物车程序,要实现购物车中添加一件商品这样的功能,就可以写一个购物车操作的javabean,建立一个public的additem成员方法,前台jsp文件里
面直接调用这个方法来实现。如果后来又考虑添加商品的时候需要判断库存是否有货物,没有货物不得购买,在这个时候我们就可以直接修改javabean的additem方法,加入处理语句来实现,这样就完全不用修改前台jsp程序了。
49.spring容器:spring容器是spring的核心,一切spring bean都存储在spring容器内,spring容器也就是一个bean工厂(beanfactory),应用中bean的实例化,获取,销毁等都是由这个bean工厂管理的。当一个对象被频繁的使用时,对内存资源会有较大的消耗。如果使用spring管理bean类,由于spring默认管理bean是单例模式,所以会避免不断的创建新的实例从而导致并发量很大时垃圾回收效率低的问题。当一个对象被使用的次数极少,这个时候就没有必要让这个对象一直存在到内存中,可以将spring管理bean的作用域设置为prototype,在每次调用的时候创建一次,用完销毁。因此,使用spring管理bean对象可以实现对象对资源的有效使用。由于spring默认管理bean是单例模式,为了避免多线程导致的并发问题,一般用spring管理的类是各种service类。
50.groovy脚本:groovy与java集成的方式包括groovyclassloader、groovyshell和groovyscriptengine。groovyclassloader用groovy的groovyclassloader,它会动态地加载一个脚本并执行它,groovyclassloader是一个groovy定制的类装载器,负责解析加载java类中用到的groovy类。groovyshell允许在java类中(甚至groovy类)求任意groovy表达式的值,可使用binding对象输入参数给表达式,并最终通过groovyshell返回groovy表达式的计算结果。groovyshell多用于推求对立的脚本或表达式,如果换成相互关联的多个脚本,使用groovyscriptengine会更好些,groovyscriptengine从指定的位置(文件系统,url,数据库,等等)加载groovy脚本,并且随着脚本变化而重新加载它们。如同groovyshell一样,groovyscriptengine也允许传入参数值,并能返回脚本的值。groovy是用于java虚拟机的一种敏捷的动态语言,构建在强大的java语言之上,java程序员学习起来几乎零成本,无缝集成所有已经存在的java对象和类库,特别适合与spring的动态语言支持一起使用,与java代码的互操作很容易。
51.本技术实施例提出一种网关过滤器扩展方法、装置、计算机设备和可读存储介质,该网关过滤器扩展方法首先将金融行业微服务网关的业务过滤器转换成groovy脚本文件,并将groovy脚本文件保存至预设的脚本管理平台,使得业务逻辑与网关功能能够相互隔离,实现解耦;金融行业微服务网关从脚本管理平台加载groovy脚本文件,以进行金融行业业务过滤器的初始化;在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,通过对脚本管理平台进行监听,实现对金融行业业务过滤器的动态扩展;对更新的groovy脚本进行转换处理,得到可运行文件;在金融行业微服务网关运行业务逻辑的情况下,可运行文件生效运行,从而实现对金融行业微服务网关的业务处理。与现有技术中针对特定的业务场景开发定制化过滤器的耗时较长,开发效率低相比,本技术实施例通过将金融行业业务过滤器转换成groovy脚本文件实现业务与网关的解耦,监听脚本管理平台的操作实现在网关运行期间实时修改业务过滤器,提升金融行业网关的可扩展性,提升了开发效率。
52.需要说明的是,网关过滤器扩展方法应用于微服务网关,微服务网关能够用来管理授权、访问控制和流量限制等,对微服务起到保护的作用。网关过滤器扩展方法还能够应用于普通后端、中端服务。针对特定的业务场景开发业务过滤器耗时较长,微服务网关应当
关注的是网关自身的功能和全局的请求处理,不再针对特定场景,使得在网关运行器件修改业务过滤器,提升开发效率和网关的可扩展性。其中,在金融行业中,微服务网关可以包括银行系统微服务网关、保险系统微服务网关、交易系统微服务网关和订单系统微服务网关。
53.在一实施例中,网关过滤器扩展方法可以在终端或者服务器中运行,终端可以是平板电脑、笔记本电脑、台式计算机等,但并不局限于此。服务器可以为台式计算机,笔记本电脑等,此外,服务器还可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
54.需要说明的是,在本技术的各个具体实施方式中,当涉及到需要根据用户信息、用户行为数据,用户历史数据以及用户位置信息等与用户身份或特性相关的数据进行相关处理时,都会先获得用户的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关法律法规和标准。此外,当本技术实施例需要获取用户的敏感个人信息时,会通过弹窗或者跳转到确认页面等方式获得用户的单独许可或者单独同意,在明确获得用户的单独许可或者单独同意之后,再获取用于使本技术实施例能够正常运行的必要的用户相关数据。
55.本技术实施例可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
56.下面参照附图,对本技术实施例提供的网关过滤器扩展方法、装置、计算机设备和可读存储介质,进行说明。
57.参见图1,图1示出了本技术实施例提供的网关过滤器扩展方法的流程示意图。网关过滤器扩展方法应用于微服务网关,该网关过滤器扩展方法包括但不限于有步骤s110、步骤s120、步骤s130、步骤s140和步骤s150。
58.步骤s110,将微服务网关的业务过滤器转换成groovy脚本文件,并将groovy脚本文件保存至预设的脚本管理平台。
59.在一实施例中,微服务网关设置业务过滤器,用于保护网关。由于针对特定的业务场景开发定制化的业务过滤器耗时较长,对业务定制化的过滤器进行优化,将微服务网关的业务过滤器转化成groovy脚本文件,使得业务逻辑与网关功能两块代码和维护方式相互隔离,实现解耦。并将转换成的groovy脚本文件保存至预设的脚本管理平台。该预设的脚本管理平台是一个概念,只要可以做到保存groovy脚本并提供可监听脚本变更的方式,就可以是一个脚本管理平台,它可以是一个管理平台形式的系统,也可以是一个中间件或者数据库。其中,微服务网关可以为银行系统网关、保险系统网关、交易系统网关或者订单系统网关,其中,本技术实施例涉及的数据可以为交易数据、支付数据、业务数据或者购买数据。
60.如图3所示,将微服务网关的业务过滤器转换成groovy脚本文件,包括但不限于有以下步骤:
61.步骤s111,将业务过滤器从微服务网关中分离,并获取业务过滤器的java代码内容。
62.在一实施例中,首先将业务过滤器从微服务网关中分离,在开发微服务网关的过程中,通常采用java编程语言编写,将业务逻辑和网关业务过滤器分别进行代码模块化,从而能够较为容易地将业务过滤器从微服务网关中分离。分离后获取java编程语言编写的java代码,可以通过预设的本文读取接口从存储空间读取java文本,通过前端页面展示给开发者人员,有利于后续进行脚本转换。将业务过滤器可以从微服务网关中进行分离,示例性地,对于银行业务场景,可以将贷款业务过滤器从银行微服务网关中进行分离处理。
63.步骤s112,将java代码内容转换成groovy脚本文件。
64.在一实施例中,可以通过开发者人员手动将java代码内容逐行转换成对应groovy脚本,也可以通过java代码与groovy脚本的转换规则,通过预设的转换规则脚本一次性将java代码转换为groovy脚本。转换的groovy脚本是以groovy语言编写,groovy脚本能够保证将业务过滤器分离后,保证了分离出来的代码仍然可以继续在微服务网关运行,通过隔离和转换保证了微服务网关能够正常运行,还有利于后续进行动态扩展。
65.步骤s120,微服务网关从脚本管理平台加载groovy脚本文件,以进行业务过滤器的初始化。
66.在一实施例中,根据脚本管理平台保存的分离的groovy脚本,由于每一个groovy脚本都是通过原有java编程语言实现的业务过滤器转换得到,过滤器用于执行一个或多个网关服务功能,groovy脚本与业务过滤器一一对应,能够执行一个或多个网关服务功能。微服务网关从脚本管理平台加载保存的groovy脚本文件,对业务过滤器进行初始化,使得微服务网关能够启动运行。示例性地,对于银行业务,可以将银行微服务网关从脚本管理平台加载groovy脚本文件,以实现银行业务过滤的初始化处理。
67.步骤s130,在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本。
68.在一实施例中,根据上述步骤s110可得,业务过滤器从微服务网关中分离,于是设置监听机制,在微服务网关监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,使得微服务网关在运行时,也能够对业务过滤器进行扩展,提升了可扩展性。其中,脚本管理平台执行更新操作可以为开发人员上传新的groovy脚本文件,对网关的功能进行补充;也可以为对已存在的groovy脚本文件进行修改,完善微服务网关处理规则,使得系统更加安全;也可以为删除已存在的groovy脚本文件,使得网关具有较多的访问权限等,这里不作赘述。
69.在一实施例中,金融行业微服务网关的功能包括监控功能、权限控制功能、动态路由功能和/或负载均衡功能。网关的监控功能能够及时发现网关的异常,从而做出告警信息,保证微服务系统安全;网关的权限控制功能可以实现用户的验证登录、解决跨域、日志拦截、权限控制、限流、熔断、负载均衡、黑名单与白名单机制等,保证微服务系统使用的安全性;网关的动态路由和负载均衡功能能够保证信息传输,通过配置网关的功能规则保证微服务系统的安全性。
70.在一实施例中,更新操作包括更改groovy脚本文件,如图4所示,在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,包括但不限于有以下步骤:
71.步骤s131,脚本管理平台触发于对groovy脚本文件的编辑操作,保存已更改groovy脚本。
72.在一实施例中,在网关的数据处理过程中,对于网关的管理开发人员或者微服务系统的管理人员可以对groovy脚本文件进行更改,脚本管理平台触发于对groovy脚本文件的编辑操作,保存已更改groovy脚本,以便对微服务网关的业务过滤器进行扩展。
73.步骤s132,在监听到脚本管理平台执行编辑保存操作的情况下,从脚本管理平台加载已更改groovy脚本。
74.在一实施例中,按照预设的频率不断扫描脚本管理平台,在监听到脚本管理平台执行编辑保存操作的情况下,从脚本管理平台加载已更改groovy脚本,在不影响微服务网关业务处理的情况下,实现对扩展的业务过滤器的调用,完成业务处理。预设的频率可以为3分钟一次,也可以为5分钟一次,能够按照需求进行自定义,这里不作赘述。示例性地,在监听到金融行业脚本管理平台执行编辑保存操作的情况下,就可以从脚本管理平台加载已更改groovy脚本。
75.在另一个实施例中,判断脚本管理平台执行编辑保存操作的情况可以为判断保存的groovy脚本是否被更改,示例性地,可以统计存储的groovy脚本的字数,在到达预设的频率的情况下,比较之前存储的groovy脚本的字数与当前groovy脚本的字数是否存在差异,在字数不同的情况下,则判断为该groovy脚本被更改,即为脚本管理平台执行了编辑保存操作,于是微服务网关从脚本管理平台加载已更改groovy脚本,对业务过滤器进行扩展。若之前存储的groovy脚本的字数与当前groovy脚本的字数为相同的情况下,则判断为该groovy脚本未被更改,即为脚本管理平台未执行了编辑保存操作,微服务网关保持当前调用的groovy脚本。也可以为脚本管理平台每隔预设的时间进行保存一次,当微服务网关按照预设的频率不断扫描脚本管理平台时,加载与当前时间间隔最短相对应的groovy脚本,将该groovy脚本作为已更改文件。
76.在一实施例中,更新操作还包括上传新的groovy脚本;在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,包括开发人员或者管理人员上传或者创建新的groovy脚本,微服务网关按照预设的频率不断扫描脚本管理平台,在监听到脚本管理平台执行上传操作的情况下,从脚本管理平台加载新的groovy脚本。其中,上传或者创建的groovy脚本在原来的脚本管理平台中未出现,首先脚本管理平台统计该平台中所有groovy脚本的数量,当上传或者新创建groovy脚本时,脚本管理平台统计的数量会增加,在扫描脚本管理平,监听到脚本管理平台中脚本数量增加的情况下,即为脚本管理平台执行了上传操作,从脚本管理平台加载新的groovy脚本,实现业务过滤器的扩展。
77.在另一个实施例中,首先脚本管理平台统计该平台中所有groovy脚本的数量,当删除groovy脚本时,脚本管理平台统计的数量会减少,在扫描脚本管理平,监听到脚本管理平台中脚本数量减少的情况下,即为脚本管理平台执行了删除操作,微服务网关删除加载的脚本,从而实现更改了微服务网关的功能。
78.步骤s140,对更新的groovy脚本进行转换处理,得到可运行文件。
79.在一实施例中,由于在上述步骤s110至s130中将业务过滤器与微服务网关进行了分离,以方便地对业务过滤器进行扩展。在网关服务中,业务过滤器最终都是以bean的形式保存于spring容器的上下文中,由spring容器中的bean完成业务过滤器加载。对更新的groovy脚本先转换成bean支持的形式,并将其添加入spring容器中得到可运行文件,方便后续使用。对于银行业务,对银行业务更新的groovy脚本进行转换处理,就可以得到相应的可运行文件。
80.如图2所示,对更新的groovy脚本进行转换处理,得到可运行文件,包括但不限于有以下步骤:
81.步骤s141,获取更新的groovy脚本的代码,得到代码内容。
82.在一实施例中,对groovy脚本进行转换处理,首先获取更新的groovy脚本的代码,可以通过预设的文本读取接口,逐行读取更新的groovy脚本的代码,得到代码内容;也可以通过预设的文本读取接口按照字符读取更新的groovy脚本的代码,得到代码内容。通过得到代码内容有利于后续得到可运行文件。在银行业务中,获取更新的银行业务groovy脚本的代码,基于更新的银行业务groovy脚本的代码得到相应的代码内容。
83.步骤s142,对代码内容进行解析,形成支持微服务网关的面向对象格式。
84.在一实施例中,利用预设的类装载器对代码内容进行解析,形成支持微服务网关的面向对象格式,预设的类加载器可以为groovyclassloader,groovyclassloader将读取到的代码解析成一个java类,通过javabean可以无限扩充java程序的功能,形成即为面向对象格式,有利于后续将面向对象格式加入spring容器中得到可运行文件。对银行业务的代码内容进行解析处理,就可以形成支持微服务网关的面向对象格式。
85.步骤s143,将面向对象格式添加至预设的容器中,得到可运行文件。
86.在一实施例中,预设的容器可以表示为spring容器,将面向对象格式(bean格式)按照列表的形式添加至spring容器,通过采用栈的数据结构进行存储,或者采用队列的数据结构进行存储。spring容器的上下文为可运行文件,有利于网关服务在启动或者运行时进行groovy文件的加载。
87.步骤s150,在微服务网关运行业务逻辑的情况下,可运行文件生效运行。
88.在一实施例中,groovy脚本文件可在网关服务运行期间加载并生效,业务开发人员通过groovy脚本管理平台进行业务过滤器的groovy脚本上传、维护,网关服务从脚本管理平台加载脚本文件完成业务过滤器初始化,通过监听groovy脚本变更实现动态扩展业务过滤器,一旦有新的过滤器脚本上传,网关服务监听到之后加载新上传的过滤器脚本,在微服务网关运行业务逻辑的情况下,可运行文件生效运行,从而保证微服务的安全性。在银行业务微服务网关运行业务逻辑的情况下,还可以基于运行文件生效运行。
89.如图5所示,本技术实施例提供了网关过滤器扩展方法的整体流程示意图,微服务网关的业务过滤器动态扩展可以使得网关开发人员和业务开发人员相互分离,网关开发人员对微服务网关开发,针对网关自身的功能和全局的请求处理,不再耗时处理特定的业务场景开发定制化过滤器,业务开发人员针对实现业务设计相应的业务逻辑对应的脚本。微服务网关功能包括限流功能、鉴权功能和监控功能等,业务处理过滤器监听groovy脚本管理平台中groovy脚本变更,并加载groovy脚本,groovy脚本管理平台能够维护groovy脚本、创建groovy脚本、以及上传新的groovy脚本等。通过监听脚本管理平台的操作实现在网关
运行期间实时修改业务过滤器,提升金融行业网关的可扩展性,提升了金融行业网关过滤器的开发效率。
90.参见图6,本技术实施例提供了网关过滤器扩展装置100,该网关过滤器扩展装置100通过脚本转换模块110将微服务网关的业务过滤器转换成groovy脚本文件,并将groovy脚本文件保存至预设的脚本管理平台,使得业务逻辑与网关功能能够相互隔离,实现解耦;通过初始化模块120微服务网关从脚本管理平台加载groovy脚本文件,以进行业务过滤器的初始化;利用监听加载模块130在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,通过对脚本管理平台进行监听,实现对业务过滤器的动态扩展;采用脚本处理模块140对更新的groovy脚本进行转换处理,得到可运行文件;最后通过运行处理模块150在微服务网关运行业务逻辑的情况下,可运行文件生效运行,从而实现对微服务网关的业务处理。通过将业务过滤器转换成groovy脚本文件实现业务与网关的解耦,监听脚本管理平台的操作实现在网关运行期间实时修改业务过滤器,提升金融行业网关的可扩展性,提升了金融行业网关过滤器的开发效率。
91.需要说明的是,脚本转换模块110与初始化模块120连接,初始化模块120与监听加载模块130连接,监听加载模块130与脚本处理模块140连接,脚本处理模块140与运行处理模块150连接。上述网关过滤器扩展方法作用于网关过滤器扩展装置100,该网关过滤器扩展装置100通过将业务过滤器转换成groovy脚本文件实现业务与网关的解耦,监听脚本管理平台的操作实现在网关运行期间实时修改业务过滤器,提升网关的可扩展性,提升了开发效率。
92.在一实施例中,脚本转换模块110首先将业务过滤器从微服务网关中分离,在开发微服务网关的过程中,通常采用java编程语言编写,将业务逻辑和网关业务过滤器分别进行代码模块化,从而能够较为容易地将业务过滤器从微服务网关中分离。分离后获取java编程语言编写的java代码,可以通过预设的本文读取接口从存储空间读取java文本,通过前端页面展示给开发者人员,有利于后续进行脚本转换。可以通过开发者人员手动将java代码内容逐行转换成对应groovy脚本,也可以通过java代码与groovy脚本的转换规则,通过预设的转换规则脚本,一次性将java代码转换为groovy脚本。转换的groovy脚本是以groovy语言编写,groovy脚本能够保证将业务过滤器分离后,保证了分离出来的代码仍然可以继续在微服务网关运行,通过隔离和转换保证了微服务网关能够正常运行,还有利于后续进行动态扩展。
93.在一实施例中,初始化模块120根据脚本管理平台保存的分离的groovy脚本,由于每一个groovy脚本都是通过原有java编程语言实现的业务过滤器转换得到,过滤器用于执行一个或多个网关服务功能,groovy脚本与业务过滤器一一对应,能够执行一个或多个网关服务功能。微服务网关从脚本管理平台加载保存的groovy脚本文件,对业务过滤器进行初始化,使得微服务网关能够启动运行。
94.在一实施例中,业务过滤器从微服务网关中分离,于是设置监听机制,监听加载模块130在微服务网关监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,使得微服务网关在运行时,也能够对业务过滤器进行扩展,提升了可扩展性。其中,脚本管理平台执行更新操作可以为开发人员上传新的groovy脚本文件,对网关的功能进行补充;也可以为对已存在的groovy脚本文件进行修改,完善微服务网关处理规则,
使得系统更加安全;也可以为删除已存在的groovy脚本文件,使得网关具有较多的访问权限等,这里不作赘述。在网关的数据处理过程中,对于网关的管理开发人员或者微服务系统的管理人员可以对groovy脚本文件进行更改,脚本管理平台触发于对groovy脚本文件的编辑操作,保存已更改groovy脚本,以便对微服务网关的业务过滤器进行扩展。通过按照预设的频率不断扫描脚本管理平台,在监听到脚本管理平台执行编辑保存操作的情况下,从脚本管理平台加载已更改groovy脚本,在不影响微服务网关业务处理的情况下,实现对扩展的业务过滤器的调用,完成业务处理。预设的频率可以为3分钟一次,也可以为5分钟一次,能够按照需求进行自定义,这里不作赘述。
95.在另一个实施例中,监听加载模块130判断脚本管理平台执行编辑保存操作的情况可以为判断保存的groovy脚本是否被更改,示例性地,可以统计存储的groovy脚本的字数,在到达预设的频率的情况下,比较之前存储的groovy脚本的字数与当前groovy脚本的字数是否存在差异,在字数不同的情况下,则判断为该groovy脚本被更改,即为脚本管理平台执行了编辑保存操作,于是微服务网关从脚本管理平台加载已更改groovy脚本,对业务过滤器进行扩展。若之前存储的groovy脚本的字数与当前groovy脚本的字数为相同的情况下,则判断为该groovy脚本未被更改,即为脚本管理平台未执行了编辑保存操作,微服务网关保持当前调用的groovy脚本。也可以为脚本管理平台每隔预设的时间进行保存一次,当微服务网关按照预设的频率不断扫描脚本管理平台时,加载与当前时间间隔最短对应的groovy脚本,将该groovy脚本作为已更改文件。
96.在另一个实施例中,更新操作还包括上传新的groovy脚本,监听加载模块130在监听到脚本管理平台执行更新操作的情况下,从脚本管理平台加载更新的groovy脚本,包括开发人员或者管理人员上传或者创建新的groovy脚本,微服务网关按照预设的频率不断扫描脚本管理平台,在监听到脚本管理平台执行上传操作的情况下,从脚本管理平台加载新的groovy脚本。其中,上传或者创建的groovy脚本在原来的脚本管理平台中未出现,首先脚本管理平台统计该平台中所有groovy脚本的数量,当上传或者新创建groovy脚本时,脚本管理平台统计的数量会增加,在扫描脚本管理平,监听到脚本管理平台中脚本数量增加的情况下,即为脚本管理平台执行了上传操作,从脚本管理平台加载新的groovy脚本,实现业务过滤器的扩展。当删除groovy脚本时,脚本管理平台统计的数量会减少,在扫描脚本管理平,监听到脚本管理平台中脚本数量减少的情况下,即为脚本管理平台执行了删除操作,微服务网关删除加载的脚本,从而实现更改了微服务网关的功能。
97.在一实施例中,脚本处理模块140对更新的groovy脚本先转换成bean支持的形式,并将其添加入spring容器中得到可运行文件,方便后续使用。对groovy脚本进行转换处理,首先获取更新的groovy脚本的代码,可以通过预设的文本读取接口,逐行读取更新的groovy脚本的代码,得到代码内容;也可以通过预设的文本读取接口按照字符读取更新的groovy脚本的代码,得到代码内容。通过得到代码内容有利于后续得到可运行文件。利用预设的类装载器对代码内容进行解析,形成支持微服务网关的面向对象格式,预设的类加载器可以为groovyclassloader,groovyclassloader将读取到的代码解析成一个java类,通过javabean可以无限扩充java程序的功能,形成即为面向对象格式,有利于后续将面向对象格式加入spring容器中得到可运行文件。将面向对象格式(bean格式)按照列表的形式添加至spring容器,通过采用栈的数据结构进行存储,或者采用队列的数据结构进行存储。
spring容器的上下文为可运行文件,有利于网关服务在启动或者运行时进行groovy文件的加载。
98.在一实施例中,运行处理模块150中groovy脚本文件可在网关服务运行期间加载并生效,业务开发人员通过groovy脚本管理平台进行业务过滤器的groovy脚本上传、维护,网关服务从脚本管理平台加载脚本文件完成业务过滤器初始化,通过监听groovy脚本变更实现动态扩展业务过滤器,即一旦有新的过滤器脚本上传,网关服务监听到之后加载新上传的过滤器脚本,在微服务网关运行业务逻辑的情况下,可运行文件生效运行,从而保证微服务的安全性。
99.本技术实施例描述的实施例是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
100.图7示出了本技术实施例提供的计算机设备500。该计算机设备500可以是服务器或者终端,该计算机设备500的内部结构包括但不限于:
101.存储器510,用于存储程序;
102.处理器520,用于执行存储器510存储的程序,当处理器520执行存储器510存储的程序时,处理器520用于执行上述的网关过滤器扩展方法。
103.处理器520和存储器510可以通过总线或者其他方式连接。
104.存储器510作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序,如本技术任意实施例描述的网关过滤器扩展方法。处理器520通过运行存储在存储器510中的非暂态软件程序以及指令,从而实现上述的网关过滤器扩展方法。
105.存储器510可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储执行上述的网关过滤器扩展方法。此外,存储器510可以包括高速随机存取存储器,还可以包括非暂态存储器,比如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器510可选包括相对于处理器520远程设置的存储器,这些远程存储器可以通过网络连接至该处理器520。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
106.实现上述的网关过滤器扩展方法所需的非暂态软件程序以及指令存储在存储器510中,当被一个或者多个处理器520执行时,执行本技术任意实施例提供的网关过滤器扩展方法。
107.本技术实施例还提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令用于执行上述的网关过滤器扩展方法。
108.在一实施例中,该存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个控制处理器520执行,比如,被上述计算机设备500中的一个处理器520执行,可使得上述一个或多个处理器520执行本技术任意实施例提供的网关过滤器扩展方法。
109.以上所描述的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
110.本技术的说明书及上述附图中的术语“第一”、“第二”、“第三”等(如果存在)是用
于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
111.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
112.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包括计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
113.以上是对本技术的较佳实施进行了具体说明,但本技术并不局限于上述实施方式,熟悉本领域的技术人员在不违背本技术精神的。共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本技术权利要求所限定的范围内。

技术特征:
1.一种网关过滤器扩展方法,其特征在于,应用于微服务网关,所述方法包括:将所述微服务网关的业务过滤器转换成groovy脚本文件,并将所述groovy脚本文件保存至预设的脚本管理平台;所述微服务网关从所述脚本管理平台加载所述groovy脚本文件,以进行所述业务过滤器的初始化;在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本;对所述更新的groovy脚本进行转换处理,得到可运行文件;在所述微服务网关运行业务逻辑的情况下,所述可运行文件生效运行。2.根据权利要求1所述的方法,其特征在于,所述对所述更新的groovy脚本进行转换处理,得到可运行文件,包括:获取所述更新的groovy脚本的代码,得到代码内容;对所述代码内容进行解析,形成支持所述微服务网关的面向对象格式;将所述面向对象格式添加至预设的容器中,得到所述可运行文件。3.根据权利要求1所述的方法,其特征在于,所述将所述微服务网关的业务过滤器转换成groovy脚本文件,包括:将所述业务过滤器从所述微服务网关中分离,并获取所述业务过滤器的java代码内容;将所述java代码内容转换成所述groovy脚本文件。4.根据权利要求1所述的方法,其特征在于,所述更新操作包括更改所述groovy脚本文件;所述在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本,包括:所述脚本管理平台触发于对所述groovy脚本文件的编辑操作,保存已更改groovy脚本;在监听到所述脚本管理平台执行编辑保存操作的情况下,从所述脚本管理平台加载所述已更改groovy脚本。5.根据权利要求1所述的方法,其特征在于,所述更新操作还包括上传新的groovy脚本;所述在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本,包括:在监听到所述脚本管理平台执行上传操作的情况下,从所述脚本管理平台加载所述新的groovy脚本。6.根据权利要求2所述的方法,其特征在于,所述对所述代码内容进行解析,形成支持所述微服务网关的面向对象格式,包括:利用预设的类装载器对所述代码内容进行解析,形成支持所述微服务网关的面向对象格式。7.根据权利要求1所述的方法,其特征在于,所述微服务网关的功能包括:监控功能、权限控制功能、动态路由功能和/或负载均衡功能。8.一种网关过滤器扩展装置,其特征在于,包括:
脚本转换模块,用于将微服务网关的业务过滤器转换成groovy脚本文件,并将所述groovy脚本文件保存至预设的脚本管理平台;初始化模块,用于所述微服务网关从所述脚本管理平台加载所述groovy脚本文件,以进行所述业务过滤器的初始化;监听加载模块,用于在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的groovy脚本;脚本处理模块,用于对所述更新的groovy脚本进行转换处理,得到可运行文件;运行处理模块,用于在所述微服务网关运行业务逻辑的情况下,所述可运行文件生效运行。9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如权利要求1至7中任一项所述方法的步骤。10.一种计算机可读存储介质,其特征在于,所述存储介质可被处理器读写,所述存储介质存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述方法的步骤。

技术总结
本申请涉及金融科技技术领域,提供一种网关过滤器扩展方法、装置、计算机设备和可读存储介质,该方法首先将所述微服务网关的业务过滤器转换成Groovy脚本文件,并将所述Groovy脚本文件保存至预设的脚本管理平台;所述微服务网关从所述脚本管理平台加载所述Groovy脚本文件,以进行所述业务过滤器的初始化;在监听到所述脚本管理平台执行更新操作的情况下,从所述脚本管理平台加载更新的Groovy脚本;对所述更新的Groovy脚本进行转换处理,得到可运行文件;在所述微服务网关运行业务逻辑的情况下,所述可运行文件生效运行。本申请实施例能够实现业务逻辑和网关逻辑功能的相互隔离,实现解耦,提升金融行业网关过滤器的开发效率。提升金融行业网关过滤器的开发效率。提升金融行业网关过滤器的开发效率。


技术研发人员:陈浩
受保护的技术使用者:中国平安人寿保险股份有限公司
技术研发日:2023.07.07
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐