动态路由控制方法、动态网关系统、电子设备及存储介质与流程

未命名 10-21 阅读:54 评论:0


1.本技术涉及网关技术领域,具体而言,涉及一种动态路由控制方法、动态网关系统、电子设备及存储介质。


背景技术:

2.在微服务架构下,常见的网关,如采用原生的nginx,开启lua-jit编译模块通过编写lua脚本,对request请求进行拦截解析,并进行各种定制化功能的开发,如kong/openresty等方案,通过硬编码大量的配置和lua代码实现动态网关。
3.该方法一则无严格的规则检查,出现错误不易发现和排查,二则容易被运维人员误操作,历史记录无法回溯,三则对代码的调试,均需要在脚本里面执行,不够直观,出现有歧义的配置也很难定位发现。
4.另外其他的网关,如云原生网关apisix,本身基于openresty实现,虽然实现了动态网关的功能,但其包含配置功能的管理系统依然处于测试版本,不够稳定,动态网关的配置依然需要rest接口去实现,比较麻烦和复杂。


技术实现要素:

5.本技术实施例的目的在于提供一种动态路由控制方法、动态网关系统、电子设备及存储介质,利用配置中心对动态网关进行配置和管理,简化了网关配置功能,解决了现有网关易出错且操作复杂的问题。
6.本技术实施例提供了一种动态路由控制方法,应用于动态网关,所述方法包括:
7.接收用户请求;
8.从所述配置中心动态获得路由列表配置信息并加载至本地内存中;
9.根据所述路由列表配置信息获得所述用户请求的路由;
10.根据所述路由将所述用户请求发送至所述配置中心;
11.接收所述配置中心转发的所述服务模块发送的请求结果报文。
12.在上述实现过程中,利用配置中心对动态网关进行配置和管理,简化了网关配置功能,使得后端服务能够及时、准确响应用户请求,解决了现有网关易出错且操作复杂的问题。
13.进一步地,所述根据所述路由列表配置信息获得所述用户请求的路由,包括:
14.提取所述用户请求中的uri信息;
15.若所述uri信息中存在于所述路由列表中,则将所述uri信息中的parameter请求参数和所述路由列表中的断言进行比对;
16.若满足断言,则将所述uri信息和过滤器列表进行比对;
17.若比对通过,则根据所述路由列表配置信息匹配所述用户请求的路由。
18.在上述实现过程中,只有通过断言和过滤器比对的用户请求才能发送至服务模块,可实现限流目的。
19.进一步地,所述根据所述路由将所述用户请求发送至所述配置中心,包括:
20.根据uri配置查找注册到所述配置中心的服务列表信息,以获得元数据信息并将所述元数据信息发送至所述配置中心,以使所述配置中心解析所述元数据信息并根据负载均衡策略将所述用户请求发送至命中的服务模块。
21.在上述实现过程中,利用元数据信息匹配到对应的服务模块,可将用户请求准确发送至对应的服务器。
22.进一步地,所述方法还包括:
23.若监听到所述路由列表配置信息发生变更,则刷新本地内存并重新加载所述路由列表配置信息。
24.在上述实现过程中,通过监听路由列表配置信息的变更,可及时对本地内存中的路由列表配置信息进行更新。
25.本技术实施例还提供一种动态路由控制方法,应用于配置中心,所述方法包括:
26.接收动态网关发送的元数据信息;
27.基于所述元数据信息,并根据负载均衡策略从服务列表信息中选取服务模块;
28.将所述用户请求发送至命中的服务模块。
29.在上述实现过程中,利用配置中心对动态网关进行配置和管理,简化了网关配置功能,使得后端服务能够及时、准确响应用户请求,解决了现有网关易出错且操作复杂的问题。
30.进一步地,所述方法还包括:
31.接收用户对配置文件的修改操作,所述修改操作包括删除路由、增加路由和更新路由;
32.基于所述修改操作修改路由列表配置信息;
33.接受动态网关的监听,并将修改后的路由列表配置信息发送至所述动态网关。
34.在上述实现过程中,运维人员可通过对配置文件的修改操作实现对路由列表配置信息的管理,简单、不易出错。
35.本技术实施例还提供一种动态网关系统,所述系统包括:
36.动态网关,用于从所述配置中心动态获得路由列表配置信息并加载至本地内存中;根据所述路由列表配置信息获得所述用户请求的路由;根据所述路由将所述用户请求发送至所述配置中心;接收所述配置中心转发的所述服务模块发送的请求结果报文;
37.配置中心,用于将所述用户请求发送至选中的服务模块,并接收用户对路由列表配置信息的修改操作。
38.在上述实现过程中,利用配置中心对动态网关进行配置和管理,简化了网关配置功能,使得后端服务能够及时、准确响应用户请求,解决了现有网关易出错且操作复杂的问题。
39.所述动态网关包括:
40.监听模块,用于对所述配置中心的配置文件进行监听,若监听到所述路由列表配置信息发生变更,则刷新本地内存并重新加载所述路由列表配置信息。
41.在上述实现过程中,通过监听路由列表配置信息的变更,可及时对本地内存中的路由列表配置信息进行更新。
42.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行上述中任一项所述的动态路由控制方法。
43.本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的动态路由控制方法。
附图说明
44.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
45.图1为本技术实施例提供的一种动态路由控制方法的流程图;
46.图2为本技术实施例提供的动态网关具体实现的时序图;
47.图3为本技术实施例提供的用户请求的路由获取流程图;
48.图4为本技术实施例提供的另一种动态路由控制方法的流程图;
49.图5为本技术实施例提供的路由列表配置信息的更新流程图;
50.图6为本技术实施例提供的一种动态网关系统的结构框图。
51.图标:
52.100-动态网关;101-监听模块;200-配置中心;300-服务模块。
具体实施方式
53.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
54.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
55.实施例1
56.请参看图1,图1为本技术实施例提供的一种动态路由控制方法的流程图。该方法采用开源版本springcloud-gateway+nacos配置中心200实现动态网关100。
57.在动态网关100端,该方法具体包括以下步骤:
58.步骤s100:接收用户请求;
59.步骤s200:从所述配置中心200动态获得路由列表配置信息并加载至本地内存中;
60.用户请求到自定义动态网关gateway100,自定义动态网关gateway100从配置中心nacos200上拉取路由列表配置信息,并加载到本地内存,且注册监听器监听配置中心nacos200上的配置文件。
61.步骤s300:根据所述路由列表配置信息获得所述用户请求的路由;
62.步骤s400:根据所述路由将所述用户请求发送至所述配置中心200;
63.具体地,根据uri配置查找注册到所述配置中心200的服务列表信息,以获得元数据信息并将所述元数据信息发送至所述配置中心200,以使所述配置中心200解析所述元数
据信息并根据负载均衡策略将所述用户请求发送至命中的服务模块300。
64.解析元数据信息,并根据元数据信息的uri信息,获取注册中心nacos上的服务模块列表信息,并根据负载均衡策略,命中其中一个服务模块,把请求发送给该服务模块(服务模块300)。
65.具体流程为:
66.用户请求到达动态网关100gateway后,从配置中心200nacos上拉取路由配置信息;再过滤用户请求(经过断言、过滤器);解析路由routers列表中的uri配置的lb信息(lb:代指服务模块300的注册名称,比如a-service);根据lb信息,查找注册到配置中心200nacos上的服务模块列表信息;找到服务模块列表信息中的元数据信息,从服务模块列表信息中随机(默认随机算法,可以指定其他算法,如负载均衡策略)选出一个服务模块元数据;发送请求到后端服务(服务模块300),具体地,选出一个服务模块元数据,然后解析元数据里面的地址端口,然后发出http请求(或其他的rpc请求)到后端服务。
67.元数据信息指的是服务模块300中的服务器ip地址、端口、服务器名称以及权重之类的信息。
68.根据uri信息去查找元数据信息,就是根据uri信息里面的ip地址,去匹配元数据信息中的ip地址,如果相同,则确定该元数据信息就是要找的服务器信息。
69.步骤s500:接收所述配置中心200转发的所述服务模块发送的请求结果报文。
70.服务模块接受到用户请求,将请求结果封装成报文,并沿原路将报文回传给用户或界面。
71.如图2所示,为动态网关100具体实现的时序图。其中,如图3所示,为用户请求的路由获取流程图,步骤s300具体包括以下步骤:
72.步骤s301:提取所述用户请求中的uri信息;
73.步骤s302:若所述uri信息中存在于所述路由列表中,则将所述uri信息中的parameter请求参数和所述路由列表中的断言进行比对;
74.步骤s303:若满足断言,则将所述uri信息和过滤器列表进行比对;
75.步骤s304:若比对通过,则根据所述路由列表配置信息匹配所述用户请求的路由。
76.判断用户请求uri是否存在于路由列表,是否满足过滤器,断言的条件,不满足则直接拒绝请求,具体地:
77.用于请求到达动态网关gateway100这一层,动态网关gateway100中存储有路由routers列表,然后从用户请求request里面取出uri信息,uri的路径path如果不在路由routers列表中,则该用户请求将直接被拒绝;
78.如果uri的路径path存在于路由routers列表中,则要将uri信息里面附带的parameter请求参数和路由routers列表里面的predict断言进行比对,若不匹配,则拒绝用户请求;
79.如果满足了断言,则要和过滤器列表中的过滤器进行比对,比如,客户端的ip地址,被过滤器列为黑名单了,此时用户请求也是直接被拒绝。
80.若均满足上述比对,则根据加载到内存中的路由列表信息,获取匹配用户请求的路由。
81.该方法还包括:
82.若监听到所述路由列表配置信息发生变更,则刷新本地内存并重新加载所述路由列表配置信息。
83.如图4所示,为另一种动态路由控制方法的流程图,在配置中心200端,所述方法包括以下步骤:
84.步骤s600:接收动态网关100发送的元数据信息;
85.步骤s700:基于所述元数据信息,并根据负载均衡策略从服务列表信息中选取服务模块300;
86.步骤s800:将所述用户请求发送至命中的服务模块300。
87.如图5所示,为路由列表配置信息的更新流程图,所述方法还包括:
88.步骤s901:接收用户对配置文件的修改操作,所述修改操作包括删除路由、增加路由和更新路由;
89.步骤s902:基于所述修改操作修改路由列表配置信息;
90.步骤s903:接受动态网关100的监听,并将修改后的路由列表配置信息发送至所述动态网关100。
91.在配置中心nacos200的管理控制台上,运维管理人员可以修改路由列表配置信息,在自定义网关上定义的监听器一旦监听到路由列表配置信息发生变更,则会刷新本地内存,重新加载内存中的路由列表,从而实现动态控制路由。
92.该方法将动态网关100的配置内容托管到配置中心nacos200上进行管理,借助于配置中心nacos200的持久化、版本可回溯功能实现网关的高可用存储、变更步骤的易追踪、出现异常时可快速规避等功能(在配置中心nacos200上存储配置信息以及变更信息,从而做到版本可回溯)。
93.利用动态gateway监听配置中心nacos200的配置文件的变化,来及时刷新内存中的路由列表信息,从而达到动态控制入口请求目的。
94.该方法也可应用于金融科技领域,便于利用配置中心200对动态网关100进行配置和管理,简化了网关配置功能,操作简单且不易出错,解决了现有网关易出错且操作复杂的问题,便于后端服务及时、快速响应用户请求,提升金融机构对用户的服务体验。
95.实施例2
96.本技术实施例提供一种动态网关100系统,如图6所示,为一种动态网关100系统的结构框图,所述系统包括但不限于:
97.动态网关100,用于从所述配置中心200动态获得路由列表配置信息并加载至本地内存中;根据所述路由列表配置信息获得所述用户请求的路由;根据所述路由将所述用户请求发送至所述配置中心200;接收所述配置中心200转发的所述服务模块300发送的请求结果报文;
98.配置中心200,用于将所述用户请求发送至选中的服务模块300,并接收用户对路由列表配置信息的修改操作。
99.其中,所述动态网关100包括:
100.监听模块101,用于对所述配置中心200的配置文件进行监听,若监听到所述路由列表配置信息发生变更,则刷新本地内存并重新加载所述路由列表配置信息。
101.该系统基于spring5+springboot2.0+webflux等技术开发,性能高于zuul,大约是
zuul的1.6倍;传统nginx+lua可实现api服务的负载均衡和高可用,但是只能编写一些简单的逻辑,无法嵌入到微服务架构中,而springcloud-gateway动态网关100可以无缝集成,与微服务架构比较契合;可对该系统做定制化开发,扩展目前springcloud gateway的动态功能,设计比较合理,容易扩展,为微服务提供简单便捷的api路由管理;可以与spring cloud discovery client(如eureka)、ribbion、hystrix、sentinel等组件配合使用,实现路由转发、负载均衡、熔断、鉴权、路径重写、日志监控、限流等;spring cloud gateway本身也内置了限流过滤器,实现限流功能,功能比较丰富,用户也可以基于该系统,采用内置限流过滤器,实现定制化限流功能;借助于配置中心200nacos,将路由信息托管到配置中心200,节约了维护成本,对于变更较频繁的操作。
102.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行实施例1所述的动态路由控制方法。
103.本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行实施例1所述的动态路由控制方法。
104.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
105.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
106.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
107.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
108.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
109.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术特征:
1.一种动态路由控制方法,其特征在于,应用于动态网关,所述方法包括:接收用户请求;从配置中心动态获得路由列表配置信息并加载至本地内存中;根据所述路由列表配置信息获得所述用户请求的路由;根据所述路由将所述用户请求发送至所述配置中心;接收所述配置中心转发的服务模块发送的请求结果报文。2.根据权利要求1所述的动态路由控制方法,其特征在于,所述根据所述路由列表配置信息获得所述用户请求的路由,包括:提取所述用户请求中的uri信息;若所述uri信息中存在于所述路由列表中,则将所述uri信息中的parameter请求参数和所述路由列表中的断言进行比对;若满足断言,则将所述uri信息和过滤器列表进行比对;若比对通过,则根据所述路由列表配置信息匹配所述用户请求的路由。3.根据权利要求1所述的动态路由控制方法,其特征在于,所述根据所述路由将所述用户请求发送至所述配置中心,包括:根据uri配置查找注册到所述配置中心的服务列表信息,以获得元数据信息并将所述元数据信息发送至所述配置中心,以使所述配置中心解析所述元数据信息并根据负载均衡策略将所述用户请求发送至命中的服务模块。4.根据权利要求1所述的动态路由控制方法,其特征在于,所述方法还包括:若监听到所述路由列表配置信息发生变更,则刷新本地内存并重新加载所述路由列表配置信息。5.一种动态路由控制方法,其特征在于,应用于配置中心,所述方法包括:接收动态网关发送的元数据信息;基于所述元数据信息,并根据负载均衡策略从服务列表信息中选取服务模块;将用户请求发送至命中的服务模块。6.根据权利要求5所述的动态路由控制方法,其特征在于,所述方法还包括:接收用户对配置文件的修改操作,所述修改操作包括删除路由、增加路由和更新路由;基于所述修改操作修改路由列表配置信息;接受动态网关的监听,并将修改后的路由列表配置信息发送至所述动态网关。7.一种动态网关系统,其特征在于,所述系统包括:动态网关,用于从配置中心动态获得路由列表配置信息并加载至本地内存中;根据所述路由列表配置信息获得用户请求的路由;根据所述路由将所述用户请求发送至所述配置中心;接收所述配置中心转发的服务模块发送的请求结果报文;配置中心,用于将所述用户请求发送至选中的服务模块,并接收用户对路由列表配置信息的修改操作。8.根据权利要求7所述的动态网关系统,其特征在于,所述动态网关包括:监听模块,用于对所述配置中心的配置文件进行监听,若监听到所述路由列表配置信息发生变更,则刷新本地内存并重新加载所述路由列表配置信息。9.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于
存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行根据权利要求1至6中任一项所述的动态路由控制方法。10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至6任一项所述的动态路由控制方法。

技术总结
本申请实施例提供一种动态路由控制方法、动态网关系统、电子设备及存储介质,涉及网关技术领域。该方法包括接收用户请求;从所述配置中心动态获得路由列表配置信息并加载至本地内存中;根据所述路由列表配置信息获得所述用户请求的路由;根据所述路由将所述用户请求发送至所述配置中心;接收所述配置中心转发的所述服务模块发送的请求结果报文。该方法利用配置中心对动态网关进行配置和管理,简化了网关配置功能,解决了现有网关易出错且操作复杂的问题。的问题。的问题。


技术研发人员:黄芳
受保护的技术使用者:平安银行股份有限公司
技术研发日:2023.08.09
技术公布日:2023/10/15
版权声明

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

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

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

评论

相关推荐