网关系统及其自定义插件的加载方法与流程

未命名 07-19 阅读:103 评论:0


1.本技术涉及计算机技术领域,特别是涉及网关系统及其自定义插件的加载方法。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。不应以此处的描述包括在本部分中就承认是现有技术。
3.相关技术的网关通常支持内置插件,即网关开发者开发出插件,并将插件元信息存储在网关中。用户如果想要使用插件,根据其使用说明,填写插件的配置信息以及作用范围,将其实例化,加载进网关即可生效。其中作用范围是指插件作用在网关的哪个处理过程,例如:请求处理过程、请求转发过程、请求过滤过程、日志处理过程等等。
4.然而,内置插件由网关开发者进行开发,其数量及功能有限,无法满足用户的定制化需求。


技术实现要素:

5.本发明实施例提供的网关系统及其自定义插件的加载方法,至少解决相关技术中的网关的插件功能匮乏的问题。
6.一种网关系统,包括:网关控制模块、多个网关和网关配置模块;
7.所述网关控制模块,用于向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将所述打包文件存储至文件系统;
8.所述网关配置模块,用于响应于所述网关控制模块的控制消息,获取所述打包文件的下载地址和所述元信息,根据所述下载地址和所述元信息生成网关的配置信息,并将所述配置信息发送给所述网关;
9.所述网关,用于响应于所述配置信息,根据所述下载地址从所述文件系统获取所述打包文件,基于所述打包文件加载所述插件,以及基于所述元信息配置所述插件。
10.在其中的一些实施例中,
11.所述网关控制模块,还用于将所述下载地址和所述元信息持久化到数据库系统;
12.所述网关配置模块,用于响应于所述网关控制模块的控制消息,从所述数据库系统获取所述下载地址和所述元信息。
13.在其中的一些实施例中,所述网关配置模块用于:获取配置模版,并获取所述配置模版的各配置项的属性和类型;解析所述下载地址和所述元信息的属性和类型;将所述下载地址和所述元信息填充至所述配置模版的对应配置项,得到所述配置信息。
14.在其中的一些实施例中,所述元信息包括:所述插件的名称、所述插件的描述信息,以及使用所述插件所需配置的信息。
15.在其中的一些实施例中,所述网关控制模块的控制消息携带有网关标识或网关地址范围的网关描述信息;
16.所述网关配置模块,用于将所述配置信息发送给所述多个网关中由所述网关描述
信息确定的网关。
17.在其中的一些实施例中,所述网关包括至少一个java虚拟机;
18.所述java虚拟机用于:利用classloader类加载器加载所述打包文件中的全部类文件;从所述全部类文件中筛选插件类;利用classloader类加载器提供的defineclass方法将所述插件类转换为class对象,以及将所述class对象存入所述java虚拟机的内存供所述网关调用。
19.一种自定义插件的加载方法,应用于网关系统,所述网关系统包括网关控制模块、多个网关和网关配置模块;所述自定义插件的加载方法包括:
20.所述网关控制模块向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将所述打包文件存储至文件系统;
21.所述网关配置模块响应于所述网关控制模块的控制消息,获取所述打包文件的下载地址和所述元信息,根据所述下载地址和所述元信息生成网关的配置信息,并将所述配置信息发送给所述网关;
22.所述网关响应于所述配置信息,根据所述下载地址从所述文件系统获取所述打包文件,基于所述打包文件加载所述插件,以及基于所述元信息配置所述插件。
23.在其中的一些实施例中,
24.所述自定义插件的加载方法还包括:所述网关控制模块将所述下载地址和所述元信息持久化到数据库系统;
25.所述网关配置模块响应于所述网关控制模块的控制消息,获取所述打包文件的下载地址和所述元信息包括:所述网关配置模块响应于所述网关控制模块的控制消息,从所述数据库系统获取所述下载地址和所述元信息。
26.在其中的一些实施例中,所述网关配置模块根据所述下载地址和所述元信息生成网关的配置信息包括:
27.所述网关配置模块获取配置模版,并获取所述配置模版的各配置项的属性和类型;解析所述下载地址和所述元信息的属性和类型;将所述下载地址和所述元信息填充至所述配置模版的对应配置项,得到所述配置信息。
28.在其中的一些实施例中,所述元信息包括:所述插件的名称、所述插件的描述信息,以及使用所述插件所需配置的信息。
29.在其中的一些实施例中,所述网关控制模块的控制消息携带有网关标识或网关地址范围的网关描述信息;
30.所述网关配置模块将所述配置信息发送给所述网关包括:所述网关配置模块将所述配置信息发送给所述多个网关中由所述网关描述信息确定的网关。
31.在其中的一些实施例中,所述网关包括至少一个java虚拟机;
32.所述网关基于所述打包文件加载所述插件包括:所述网关运行所述java虚拟机,所述java虚拟机利用classloader类加载器加载所述打包文件中的全部类文件;从所述全部类文件中筛选插件类;利用classloader类加载器提供的defineclass方法将所述插件类转换为class对象,以及将所述class对象存入所述java虚拟机的内存供所述网关调用。
33.本发明实施例提供的网关系统及其自定义插件的加载方法,通过网关控制模块向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将打包文件存储
至文件系统;网关配置模块响应于网关控制模块的控制消息,获取打包文件的下载地址和元信息,根据下载地址和元信息生成网关的配置信息,并将配置信息发送给网关;网关响应于配置信息,根据下载地址从文件系统获取打包文件,基于打包文件加载插件,以及基于元信息配置插件的方式,实现了网关系统加载自定义插件的能力,使得用户可以根据自身的服务需要定制化开发和加载各类功能丰富的自定义插件。
34.本发明的一个或多个实施例的细节在以下附图和描述中提出,以使本发明的其他特征、目的和优点更加简明易懂。
附图说明
35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
36.图1是本发明实施例的一种网关系统的结构示意图。
37.图2是本发明实施例的另一种网关系统的结构示意图。
38.图3是本发明实施例的类加载器动态加载插件的示意图。
39.图4是本发明实施例的自定义插件的加载方法的流程图。
40.图5是本发明实施例的加载自定义插件的示意图。
具体实施方式
41.下面将参照附图更详细地描述本实施例的实施例。虽然附图中显示了本实施例的某些实施例,然而应当理解的是,本实施例可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本实施例。应当理解的是,本实施例的附图及实施例仅用于示例性作用,并非用于限制本实施例的保护范围。
42.网关(gateway)是一种网络设备或软件,它可以连接两个或多个不同的网络,将它们转换为统一的协议和数据格式,从而实现网络之间的通信和数据交换。网关通常位于网络的边缘,可以作为网络的入口和出口,为网络提供安全性、可靠性和可扩展性等功能。网关的主要功能有:协议转换:网关可以将不同的协议转换为统一的协议,从而实现不同网络之间的通信和数据交换。数据格式转换:网关可以将不同的数据格式转换为统一的数据格式,从而实现不同网络之间的数据交换和共享。安全性保障:网关可以实现网络的安全性保障,例如防火墙、入侵检测、认证授权等功能。负载均衡:网关可以实现负载均衡,从而提高网络的性能和可靠性。缓存加速:网关可以实现缓存加速,从而提高网络的响应速度和用户体验。
43.为了实现更丰富的功能,例如,在网关处理用户请求的过程中,对请求以及响应进行干预,这种干预的方式是网关本身不具备的功能,此时就可以使用插件来对网关的功能进行扩展,以实现原本网关不能实现的功能。例如,通过插件在网关的请求处理过程中插入自定义的认证、限流、转发等逻辑。通过插件在请求转发过程中插入自定义的负载均衡、路由选择等逻辑。通过插件在请求过滤过程中插入自定义的请求头过滤、请求参数过滤等逻
辑。通过插件在请求日志记录的过程中插入自定义的请求日志格式化、请求日志存储等逻辑。对于一些常用的网关插件功能,网关的开发者可以将相应的功能作为内置插件设置在网关中,由用户选择性地开启和使用相关的内置插件实现插件功能。但是对于用户定制化要求比较多的网关功能往往难以通过内置插件来实现。例如,用户使用自研的物联网协议,用户需要通过网关实现自研物联网设备的连接和管理功能,此时就需要由用户根据自身服务需求自定义插件以在网关实现其定制化功能。
44.针对相关技术中网关的插件功能匮乏的问题。本发明实施例提供了一种网关系统。图1是本发明实施例的一种网关系统的结构示意图,如图1所示,该网关系统100包括:网关控制模块11、多个网关12和网关配置模块13。
45.网关控制模块11,用于向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,以及将打包文件存储至文件系统21。
46.网关配置模块13,用于响应于网关控制模块11的控制消息,获取打包文件的下载地址和元信息,根据下载地址和元信息生成网关的配置信息,并将配置信息发送给网关12。
47.网关12,用于响应于配置信息,根据下载地址从文件系统获取打包文件,基于打包文件加载插件,以及基于元信息配置插件。
48.其中,网关控制模块11又称为网关控制台,可以运行于一个服务器。该网关控制模块11提供管理界面,用于管理和监测网关的运行状态、配置信息和日志等信息。在本实施例中主要使用了网关控制模块11的网关配置功能。其中,网关配置功能是指通过网关控制模块11对网关配置模块中一个或者多个网关的配置信息进行设置,以使得网关配置模块将设置后的配置信息下发给网关并应用配置信息。
49.其中,网关配置模块13用于管理和分发网关的配置信息,除了配置分发功能以外,本实施例的网关配置模块13还可以提供的功能包括但不限于:配置管理、配置同步、配置备份以及配置审核等。网关配置模块13可以确保网关节点的配置信息保持一致和同步。
50.其中,上述的元信息包括但不限于插件的名称信息、插件的描述信息以及使用插件所需配置的信息。其中,使用插件所需配置的信息例如插件的作用范围等。
51.其中,插件的下载地址包括:文件系统21的地址,以及网关控制模块11将插件的打包文件上传到文件系统21后由文件系统21返回给网关控制模块11的文件访问路径。下载地址通常采用url表示。其他设备可以通过下载地址从文件系统21下载对应的文件。
52.其中,上述的打包文件是指对插件代码进行编译打包后得到的文件。打包文件的格式例如可以是.jar格式,即jar包。jar(java archive)是java平台中常用的一种打包格式,它可以将多个java类、资源文件和配置文件打包成一个文件,方便程序的发布和部署。并且在jar包中还可以打包运行插件所需要的第三方依赖,例如包括但不限于java库、框架等,以便于程序的分发和使用。jar包可以通过java虚拟机(jvm)执行,也可以通过java web容器来部署和运行。
53.在网关12中可以运行诸如linux、unix等操作系统,并且在操作系统中可以运行虚拟机,例如jvm虚拟机,以通过在该操作系统中运行网关程序来实现网关12的各项功能,以及实现java程序的调用及运行。
54.通过上述的网关系统100,借助于具有网关控制模块、网关配置模块以及文件系统等的网关系统100,用户只需要在开发编译得到自定义插件的打包文件后,通过网关控制模
块提供的图形化交互界面将打包文件和插件的元信息上传到网关系统100,网关系统100即可以将插件部署和加载到网关,从而实现了在网关中加载用户自定义插件的功能,满足用户定制化的网关插件需求。
55.图2是本发明实施例的另一种网关系统100的结构示意图,相较于图1提供的网关系统100,图2的网关系统100还可以包括文件系统21和数据库系统22,以通过文件系统21和数据库系统15来持久化用户的自定义插件的相关数据和信息,例如文件系统21用于存储插件的打包文件、数据库系统22用于存储插件的下载地址和插件的元信息。
56.在其中的一些实施例中,网关控制模块11在获得插件的下载地址和元信息之后,可以选择直接将下载地址和元信息发送给网关配置模块13,网关配置模块13基于下载地址和元信息生成配置信息。
57.在另一些实施例中,网关控制模块11在获得插件的下载地址和元信息之后,并不直接发送给网关配置模块13,而是将下载地址和元信息持久化到数据库系统22,并将下载地址和元信息在数据库系统22中存储的位置信息通过控制消息提供给网关配置模块13。网关配置模块13响应于网关控制模块的控制消息,从数据库系统22获取下载地址和元信息。
58.在本实施例中通过将下载地址和元信息持久化到数据库系统22中,使得用户上传和加载自定义插件的过程可以分别进行。例如,用户在需要加载多个插件时,可以先将多个插件的打包文件上传获得下载地址,以及将多个插件的下载地址和元信息先持久化到数据库系统22中而不直接进行插件的加载。当网关系统100的工作负荷较小(例如夜间)的时间段,或者用户自行指定的时间段内,再由网关控制模块11指示网关配置模块13从数据库系统22中获取插件的下载地址和元信息,以继续执行插件的加载过程。通过上述方式降低了插件加载失败对网关系统100造成的可能的损失,也能够避免在网关服务负荷大时加载插件导致的服务异常。
59.在其中的一些实施例中,网关配置模块13用于获取配置模版,并获取配置模版的各配置项的属性和类型;解析下载地址和元信息的属性和类型;将下载地址和元信息填充至配置模版的对应配置项,得到配置信息。其中,配置模版的各项配置项的类型与提供给网关配置模块13的元信息以及下载地址的类型是相互对应的,以供网关配置模块13能够基于下载地址和元信息抽象得到网关的配置信息。
60.在其中的一些实施例中,网关控制模块11的控制消息携带有网关标识或网关地址范围的网关描述信息;网关配置模块13用于将配置信息发送给多个网关中由网关描述信息确定的网关。如果在控制消息中未携带网关标识或者网关地址范围的网关描述信息,则默认该配置信息发送给网关系统100内所有的网关。通过上述方式可以指定对特定标识或者特定地址范围内的网关进行用户自定义插件的加载。
61.本实施例中的自定义插件的加载可以采用常规的加载方式,例如在网关上配置好自定义插件后,当网关空闲时重启网关,实现自定义插件的加载。
62.例如,在相关技术中kong是一个基于openresty框架和lua语言的网关,在kong网关内加载部分内置插件以及全部的自定义插件时,用户若想使插件生效,必须重启网关,导致网关服务暂时中断。
63.为了保障网关服务不中断,本实施例优选采用动态加载的方式加载自定义插件。本实施例提供的动态加载方式利用java虚拟机的类加载器实现。在其中的一些实施例中,
网关包括至少一个java虚拟机;java虚拟机用于:利用classloader类加载器加载打包文件中的全部类文件;从全部类文件中筛选插件类;利用classloader类加载器提供的defineclass方法将插件类转换为class对象,以及将class对象存入java虚拟机的内存供网关调用。
64.图3是本发明实施例的类加载器动态加载插件的示意图,如图3所示,java虚拟机可以用file类或path类来读取打包文件,然后使用classloader类加载器(如图3中的自定义类加载器customfilterclassloader)加载打包文件中所有的类。在打包文件中,除了插件类,还可能包含其他的类,例如第三方依赖。为此,在本实施例中可以通过java的反射机制来获取类的信息,从而筛选出插件类。例如,使用class类的getdeclaredclasses方法获取所有内部类,然后筛选出插件类;也可以在打包文件中使用特定的命名规则来标识插件类,例如在类名中添加特定的前缀或后缀,从而使得类加载器可以根据类名筛选得到插件类。在得到插件类后,将插件类实例化得到class对象,例如使用class类的newinstance方法或constructor类的newinstance方法来创建class对象,最后将实例化得到的class对象存入java虚拟机的内存中,供网关调用执行。
65.另外,仍然以kong网关为例,kong使用的插件开发框架是openresty。kong基于openresty使用lua语言编写插件,通过openresty提供的api和工具来实现插件的功能。因此,用户在kong网关内自定义插件时,也使用openresty框架,以及必须使用kong提供的函数,对用户的自定义插件开发进行了限制。而采用本发明上述实施例,支持用户采用任意的开发框架和函数实现自定义插件的逻辑,自定义的框架和库可以作为第三方依赖打包在打包文件中,在使用java虚拟机动态加载插件时,通过系统类加载器加载第三方依赖使得插件能够正常加载。因此,采用本发明实施例的网关系统100,用户可以基于任意框架和函数实现丰富的插件逻辑,而不限于特定的框架或者函数,降低了用户自定义插件的使用限制和学习成本。
66.例如,用户可以用eclipse插件开发框架、osgi框架、spring插件开发框架、netbeans插件开发框架、gradle插件开发框架等插件开发框架实现自定义插件的开发,然后编译打包为打包文件提供给本实施例的网关系统100,实现自定义插件的加载。
67.需要说明的是,在上述实施例中,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器或服务器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器或服务器中。例如,网关控制模块11和网关配置模块13可以运行于同一个服务器上,或者运行于不同的服务器上。
68.本发明实施例还提供了一种自定义插件的加载方法。该方法可以应用于上述实施例的网关系统。图4是本发明实施例的自定义插件的加载方法的流程图,如图4所示,该流程包括如下步骤:
69.步骤s401,网关控制模块向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将打包文件存储至文件系统。
70.步骤s402,网关配置模块响应于网关控制模块的控制消息,获取打包文件的下载地址和元信息,根据下载地址和元信息生成网关的配置信息,并将配置信息发送给网关。
71.步骤s403,网关响应于配置信息,根据下载地址从文件系统获取打包文件,基于打
包文件加载插件,以及基于元信息配置插件。
72.通过上述的步骤,借助于具有网关控制模块、网关配置模块以及文件系统等的网关系统,用户只需要在开发编译得到自定义插件的打包文件后,通过网关控制模块提供的图形化交互界面将打包文件和插件的元信息上传到网关系统,网关系统即可以将插件部署和加载到网关,从而实现了在网关中加载用户自定义插件的功能,满足用户定制化的网关插件需求。
73.在其中的一些实施例中,网关控制模块在获得插件的下载地址和元信息之后,并不直接发送给网关配置模块,而是将下载地址和元信息持久化到数据库系统,并将下载地址和元信息在数据库系统中存储的位置信息通过控制消息提供给网关配置模块。网关配置模块响应于网关控制模块的控制消息,从数据库系统获取下载地址和元信息。在本实施例中通过将下载地址和元信息持久化到数据库系统中,使得用户上传和加载自定义插件的过程可以分别进行。例如,用户在需要加载多个插件时,可以先将多个插件的打包文件上传获得下载地址,以及将多个插件的下载地址和元信息先持久化到数据库系统中而不直接进行插件的加载。当网关系统的工作负荷较小(例如夜间)的时间段,或者用户自行指定的时间段内,再由网关控制模块指示网关配置模块从数据库系统中获取插件的下载地址和元信息,以继续执行插件的加载过程。通过上述方式降低了插件加载失败对网关系统造成的可能的损失,也能够避免在网关服务负荷大时加载插件导致的服务异常。
74.在其中的一些实施例中,网关配置模块根据下载地址和元信息生成网关的配置信息包括:网关配置模块获取配置模版,并获取配置模版的各配置项的属性和类型;解析下载地址和元信息的属性和类型;将下载地址和元信息填充至配置模版的对应配置项,得到配置信息。其中,配置模版的各项配置项的类型与提供给网关配置模块的元信息以及下载地址的类型是相互对应的,以供网关配置模块能够基于下载地址和元信息抽象得到网关的配置信息。
75.在其中的一些实施例中,元信息包括但不限于:插件的名称、插件的描述信息,以及使用插件所需配置的信息。
76.在其中的一些实施例中,网关控制模块的控制消息携带有网关标识或网关地址范围的网关描述信息;网关配置模块将配置信息发送给网关包括:网关配置模块将配置信息发送给多个网关中由网关描述信息确定的网关。通过上述方式可以指定对特定标识或者特定地址范围内的网关进行用户自定义插件的加载。
77.在其中的一些实施例中,网关包括至少一个java虚拟机;网关基于打包文件加载插件包括:网关运行java虚拟机,java虚拟机利用classloader类加载器加载打包文件中的全部类文件;从全部类文件中筛选插件类;利用classloader类加载器提供的defineclass方法将插件类转换为class对象,以及将class对象存入java虚拟机的内存供网关调用。通过动态加载的方式加载自定义插件,可以保障网关服务不中断,增强了自定义插件的可用性。
78.图5是本发明实施例的加载自定义插件的示意图。如图5所示,用户按照预先制定的规范,编写自定义插件代码,并将其按照格式进行编译打包;用户在网关的控制台(相当于上述的网关控制模块)执行创建自定义插件的操作,填写插件的元信息(插件名称、插件描述、使用插件所需填写的配置信息等),并上传插件打包文件;控制台将插件元信息存储
进数据库,并将插件打包文件上传至文件系统,全部完成后,自定义插件即创建完毕;控制台将插件部分元信息以及插件在文件系统中的下载地址抽象为配置,发布至配置中心(相当于上述的网关配置模块);配置中心将配置下发给相应的网关;网关接收到配置后,从文件系统下载插件打包文件,并将其动态加载至内存中,使得该插件可以被用户使用。
79.除另作定义外,本发明实施例所涉及的技术术语或者科学术语应具有本发明实施例所属技术领域具备一般技能的人所理解的一般含义。
80.在本发明实施例中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。
81.在本发明实施例中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。
82.在本发明实施例中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。
83.在本发明实施例中所涉及的“多个”是指两个或两个以上。“基于”是“至少部分地基于”。“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。
[0084]“实施例”一词在本说明书中指的是结合实施例描述的具体特征、结构或特性可以包括在本发明的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见。
[0085]
本发明实施例所提供的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的保护范围在此方面不受限制。
[0086]
本发明实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0087]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

技术特征:
1.一种网关系统,包括:网关控制模块、多个网关和网关配置模块;所述网关控制模块,用于向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将所述打包文件存储至文件系统;所述网关配置模块,用于响应于所述网关控制模块的控制消息,获取所述打包文件的下载地址和所述元信息,根据所述下载地址和所述元信息生成网关的配置信息,并将所述配置信息发送给所述网关;所述网关,用于响应于所述配置信息,根据所述下载地址从所述文件系统获取所述打包文件,基于所述打包文件加载所述插件,以及基于所述元信息配置所述插件。2.根据权利要求1所述的网关系统,其中,所述网关控制模块,还用于将所述下载地址和所述元信息持久化到数据库系统;所述网关配置模块,用于响应于所述网关控制模块的控制消息,从所述数据库系统获取所述下载地址和所述元信息。3.根据权利要求1所述的网关系统,其中,所述网关配置模块用于:获取配置模版,并获取所述配置模版的各配置项的属性和类型;解析所述下载地址和所述元信息的属性和类型;将所述下载地址和所述元信息填充至所述配置模版的对应配置项,得到所述配置信息。4.根据权利要求1所述的网关系统,其中,所述元信息包括:所述插件的名称、所述插件的描述信息,以及使用所述插件所需配置的信息。5.根据权利要求1所述的网关系统,其中,所述网关控制模块的控制消息携带有网关标识或网关地址范围的网关描述信息;所述网关配置模块,用于将所述配置信息发送给所述多个网关中由所述网关描述信息确定的网关。6.根据权利要求1至5中任一项所述的网关系统,其中,所述网关包括至少一个java虚拟机;所述java虚拟机用于:利用classloader类加载器加载所述打包文件中的全部类文件;从所述全部类文件中筛选插件类;利用classloader类加载器提供的defineclass方法将所述插件类转换为class对象,以及将所述class对象存入所述java虚拟机的内存供所述网关调用。7.一种自定义插件的加载方法,应用于网关系统,所述网关系统包括网关控制模块、多个网关和网关配置模块;所述自定义插件的加载方法包括:所述网关控制模块向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将所述打包文件存储至文件系统;所述网关配置模块响应于所述网关控制模块的控制消息,获取所述打包文件的下载地址和所述元信息,根据所述下载地址和所述元信息生成网关的配置信息,并将所述配置信息发送给所述网关;所述网关响应于所述配置信息,根据所述下载地址从所述文件系统获取所述打包文件,基于所述打包文件加载所述插件,以及基于所述元信息配置所述插件。8.根据权利要求7所述的自定义插件的加载方法,其中,所述自定义插件的加载方法还包括:所述网关控制模块将所述下载地址和所述元信息持久化到数据库系统;
所述网关配置模块响应于所述网关控制模块的控制消息,获取所述打包文件的下载地址和所述元信息包括:所述网关配置模块响应于所述网关控制模块的控制消息,从所述数据库系统获取所述下载地址和所述元信息。9.根据权利要求7所述的自定义插件的加载方法,其中,所述网关配置模块根据所述下载地址和所述元信息生成网关的配置信息包括:所述网关配置模块获取配置模版,并获取所述配置模版的各配置项的属性和类型;解析所述下载地址和所述元信息的属性和类型;将所述下载地址和所述元信息填充至所述配置模版的对应配置项,得到所述配置信息。10.根据权利要求7所述的自定义插件的加载方法,其中,所述元信息包括:所述插件的名称、所述插件的描述信息,以及使用所述插件所需配置的信息。11.根据权利要求7所述的自定义插件的加载方法,其中,所述网关控制模块的控制消息携带有网关标识或网关地址范围的网关描述信息;所述网关配置模块将所述配置信息发送给所述网关包括:所述网关配置模块将所述配置信息发送给所述多个网关中由所述网关描述信息确定的网关。12.根据权利要求7至11中任一项所述的自定义插件的加载方法,其中,所述网关包括至少一个java虚拟机;所述网关基于所述打包文件加载所述插件包括:所述网关运行所述java虚拟机,所述java虚拟机利用classloader类加载器加载所述打包文件中的全部类文件;从所述全部类文件中筛选插件类;利用classloader类加载器提供的defineclass方法将所述插件类转换为class对象,以及将所述class对象存入所述java虚拟机的内存供所述网关调用。

技术总结
本申请涉及一种网关系统及其自定义插件的加载方法。其中,该方法包括:网关控制模块向用户提供图形化交互界面,以获取用户上传的插件的打包文件和元信息,将打包文件存储至文件系统;网关配置模块响应于网关控制模块的控制消息,获取打包文件的下载地址和元信息,根据下载地址和元信息生成网关的配置信息,并将配置信息发送给网关;网关响应于配置信息,根据下载地址从文件系统获取打包文件,基于打包文件加载插件,以及基于元信息配置插件。通过本发明,实现了网关系统加载自定义插件的能力,使得用户可以根据自身的服务需要定制化开发和加载各类功能丰富的自定义插件。和加载各类功能丰富的自定义插件。和加载各类功能丰富的自定义插件。


技术研发人员:李博文 张乎兴
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2023.03.29
技术公布日:2023/7/18
版权声明

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

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

分享:

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

相关推荐