一种路由匹配方法、终端设备及存储介质与流程

未命名 09-23 阅读:56 评论:0


1.本技术涉及信息技术领域,尤其涉及一种路由匹配方法、终端设备及存储介质。


背景技术:

2.现有技术中,由于生成的字典树都是基于单个字符生成的,利用单个字符生成的字典树深度较大,在进行路由匹配时,通过对路由中的单个字符依次进行搜索匹配,导致路由匹配过程中所需的时间较长,时间复杂度较高,尤其是在应用程序接口(application programming interface,api)网关路由匹配的场景中,api网关路由的路径中存在许多通用的分隔符,如果使用单个字符生成字典树,api网关路由中的无信息熵字符会额外增加生成的字典树深度,导致匹配查询时间复杂度增加;同时,现有技术中无法匹配出路径优先级较高的路由,只能在利用单个字符生成的字典树按照最长路径进行匹配,导致路由匹配过程中匹配效率较低。


技术实现要素:

3.有鉴于此,本技术实施例期望提供一种路由匹配方法、终端设备和存储介质,能够降低路由搜索匹配过程中的时间复杂度,并能够根据路径优先级进行路由匹配,提高路由匹配过程中的匹配效率。
4.为达到上述目的,本技术的技术方案是这样实现的:
5.第一方面,本技术实施例提供一种路由匹配方法,所述方法包括:
6.在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系;
7.根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;预设搜索树是根据预设子路径和预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的;
8.从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;
9.将第一匹配目标地址确定为待匹配路由对应的目标路径。
10.第二方面,本技术实施例提供一种终端设备,所述终端设备包括:
11.划分单元,用于在触发对待匹配路由进行路由匹配的情况下,根据所述待匹配路由中的分隔字符,将所述待匹配路由划分为多个子路径;
12.确定单元,用于根据待匹配路由确定多个子路径之间的路由关系;
13.查找单元,用于根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和所述预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径
设置的;预设搜索树是根据预设子路径和所述预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的;
14.所述确定单元,还用于从路径优先级中确定出优先级最高的第一路径优先级;
15.所述查找单元,还用于从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;
16.所述确定单元,还用于将第一匹配目标地址确定为待匹配路由对应的目标路径。
17.第三方面,本技术实施例提供一种终端设备,所述终端设备包括:处理器、存储器及通信总线;处理器执行存储器存储的运行程序时实现上述路由匹配的方法。
18.第四方面,本技术实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述路由匹配的方法。
19.本技术实施例提供一种路由匹配方法、终端设备和存储介质,该方法包括在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系;根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;预设搜索树是根据预设子路径和预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的;从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;将第一匹配目标地址确定为待匹配路由对应的目标路径。采用上述实现方案,在进行路由匹配的过程中,通过分割字符对路由信息进行划分的方式,能够减少生成字典树的深度,减小对待匹配路由的多个子节点进行匹配时的匹配时间复杂度;同时,预设搜索树中的预设子节点中包含路径优先级和预设匹配目标地址,在进行待匹配路由匹配的过程中,能够在预设搜索树查找到多个子路径对应的多个路径优先级和多个预设匹配目标地址,从符合条件的多个路径优先级中确定出优先级最高的一个路径优先级,并根据优先级最高的一个路径优先级对应的一个预设匹配目标地址,实现待匹配路由的跳转,减少路由匹配时间,达到提高路由匹配效率的目的。
附图说明
20.图1为本技术实施例提供的一种路由匹配方法流程图一;
21.图2为本技术实施例提供的一种示例性地初始状态下的预设搜索树;
22.图3为本技术实施例提供的一种示例性地预设搜索树一;
23.图4为本技术实施例提供的一种示例性地预设搜索树二;
24.图5为本技术实施例提供一种路由匹配方法流程图二;
25.图6为本技术实施例提供的一种终端设备1的结构示意图一;
26.图7为本技术实施例提供的一种终端设备1的结构示意图二。
具体实施方式
27.为了能够更加详尽地了解本技术实施例的特点及技术内容,下面结合说明书附图及具体实施例对本技术的技术方案做进一步的详细阐述,所附附图仅供参考说明之用,并
非用来限定本技术实施例。
28.除非另有定义,本文所使用的所有技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
29.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。还需要指出,本技术实施例所涉及的术语“第一/第二/第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述以外的顺序实施例。
30.本技术实施例提供一种路由匹配方法,如图1所示,该方法可以包括:
31.s101、在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系。
32.在本技术实施例中,在进行应用程序编程接口(application programming interface,api)网关路由匹配的过程中,当api网关接收到用户发送的一个请求消息时,api网关需要根据接收到的请求消息,将请求消息在api网关内部进行转换,转换为一个可以进行跳转的路由,通过转换的路由信息实现请求消息的访问。
33.在本技术实施例中,api网关是一个服务器,是系统的唯一入口,api网关方式的核心要点是所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。api网关负责服务请求路由、组合及协议转换,所有的客户端请求都是先经过api网关,然后由api网关将请求路由到合适的微服务上,api网关通常会通过调用多个微服务并合并结果来处理一个请求;使用api网关的优点是,api网关封装了应用程序的内部结构,客户端只需要与网关进行交互,而不必再去调用其他的特定服务,api网关还为每一类客户端提供了特定的api,减少了客户端与应用程序间交互的次数,简化了客户端代码。
34.在本技术实施例中,当api网关接收到一个请求消息时,api网关根据接收到的请求消息获取到对应的待匹配路由,对待匹配的路由根据待匹配路由中的分割字符进行划分,得到待匹配路由对应的多个子路径。
35.示例性地,假设待匹配路由为/api/web/cbs,按照待匹配路由中的分割字符“/”将待匹配路由/api/web/cbs可以划分为对应的子路径api、web、cbs。
36.在本技术实施例中,在得到待匹配路由对应的多个子路径之后,需要根据待匹配路由确定出多个子路径之间的路由关系。
37.示例性地,以待匹配路由/api/web/cbs为例,在得到待匹配路由对应的子路径api、web、cbs之后,根据待匹配路由/api/web/cbs可以确定出多个子路径之间的先后跳转顺序,首先是api,其次是web,最后是cbs。
38.s102、根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;预设搜索树是根据预设子路径和预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的。
39.在本技术实施例中,根据待匹配路由确定出多个子路径之间的路由关系之后,可以根据多个子路由之间的路由关系在预设搜索树中依次查找多个子路径对应的多个子节点。
40.在本技术实施例中,预设搜索树的生成是在根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点之前,创建预设树结构;根据获取到的预设路由中的分割字符,将预设路由划分为多个预设子路径;并根据预设路由确定多个预设子路径之间的路由关系;利用预设路由,确定多个预设子路径对应的多个路径优先级和多个预设匹配目标地址;根据路由关系,依次将每个预设子路径、对应的一个路径优先级和一个预设匹配目标地址添加至预设树结构中对应的一个预设子节点上;生成预设搜索树。
41.在本技术实施例中,在进行预设搜索树的创建时,首先需要创建预设搜索树对应的预设树结构,预设树结构包括预设搜索树的根节点和预设搜索树的预设子节点。
42.需要说明的是,在初始状态下,预设搜索树中只包含一个根节点,且预设搜索树的根节点中不包含请求路径的路径信息。
43.示例性地,如图2所示,初始状态下的预设搜索树中只包含预设搜索树的一个根节点,预设搜索树的根节点可以用根节点root表示。
44.在本技术实施例中,为了满足能够按照前缀路径匹配,并且能够获取到优先级最高的跳转路由,在预设搜索树的预设子节点中包含预设子路径、预设匹配目标地址及路径优先级。
45.需要说明的是,预设子节点中包含的预设子路径、预设匹配目标地址及路径优先级是按照哈希表hashmap中的键值对key-value形式进行存储的;其中,将预设子路径作为key值,匹配目标路径和优先级作为value值,value值的可以用“优先级:匹配目标地址”的格式进行表示,根据key值可以对value的值进行查找。
46.需要说明的是,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的。
47.在本技术实施例中,在创建好预设树结构之后,将获取到的预设路由根据预设路由中的分割字符,将预设路由划分为预设路由对应的多个预设子路径。
48.在本技术实施例中,预设路由中的分割字符可以为“/”,在对获取到的预设路由进行划分时,可以利用“/”作为分隔符,将预设路由划分为多个预设子路径。
49.示例性,假设api网关接收到预设路由为/api/web/cbs,按照“/”分割字符进行切分后,预设路由为/api/web/cbs对应的多个预设子路径分别为api、web、cbs三个预设子路径,其对应关系可以表示为预设路由/api/web/cbs对应于预设子路径api、web、cbs。
50.需要说明的是,将接收到的预设路由进行划分的方式不限于本技术中根据“/”进行划分的方式,其他对预设路由进行划分的方式也属于本技术保护的范围。
51.在本技术实施例中,在对获取的预设路由根据分割字符进行划分之后,根据预设路由确定出预设路由对应的多个预设子路径之间的路由关系。
52.示例性地,假设获取到的预设路由为/api/web/cbs,确定预设路由/api/web/cbs对应的多个预设子路径之间的跳转顺序为api

web

cbs。
53.在本技术实施例中,在获取到预设路由对应的多个预设子路径并确定所述多个预
设子路径之间的跳转顺序之后,还可以根据预设路由,将预设路由对应的预设子路径作为key值,确定出预设子路径的key值对应的路径优先级和预设匹配目标地址。
54.在本技术实施例中,得到预设路由对应的多个预设子路径,以及预设路由的多个子路径对应的路径优先级以及预设匹配目标地址之后,根据多个预设子路径之间的路由跳转顺序,将划分的每个预设子路径、以及预设路由的每个子路径对应的路径优先级以及预设匹配目标地址添加到预设树结构中对应的一个预设子节点上,将多个预设子节点组合成为一个具有共同父节点的一个预设搜索树。
55.示例性地,如图3所示,假设预设路由为/a/b/c,其中,预设路由中a可以为api,b可以为web,c可以为cbs,对预设路由/api/web/cbs进行划分,将预设路由/api/web/cbs进行划分后,可以得到对应的三个预设子路径api、web、cbs,根据预设路由确定出三个预设子路径api、web、cbs之前的跳转顺序为api

web

cbs,根据跳转顺序将三个预设子路径api、web、cbs依次添加到预设树结构中对应的预设子节点上,形成具有一条匹配路由的预设搜索树。
56.需要说明的是,预设搜索树上的预设子节点中包含预设子路径、预设匹配目标地址以及路径优先级。
57.在本技术实施例中,在完成一条预设路由的划分,并将一条预设路由划分后对应的多个预设子路径、预设匹配目标地址和路径优先级添加至预设树结构对应的预设子节点上之后,以此类推,将获取到的其他的预设路由也按照相同的方式进行处理,并依次添加至预设树结构中对应的预设子节点上,生成具有多条匹配路由的预设搜索树。
58.需要说明的是,在对其他的预设路由进行处理并添加到预设树结构中的过程可以参照步骤s102中的实现的方式,在这里不再赘述。
59.示例性地,如图4所示,假设另外一条预设路由为/a/d/e/,其中,预设路由中a可以为api,d可以为query,e可以为wes,按照预设路由/api/web/cbs的拆分方式,将另外一条预设路由/api/query/wes划分为对应的三个预设子路径,分别为api、query、wes,将划分后得到的三个子路径根据预设路由确定出跳转顺序api

query

wes,并根据预设路由/api/query/wes获取到3个预设子路径api、query、wes分别对应的预设匹配目标地址以及路径优先级,将划分的3个预设子路径api、query、wes以及预设匹配目标地址、路径优先级三个子路径按照跳转顺序依次添加至预设搜索树结构中,完成将第二条预设路由划分后添加至预设搜索树结构中。
60.在本技术实施例中,预设搜索树中位于相同深度上的多个预设子路径在存储的过程中是按照哈希表结构hashmap的方式进行存储的。其中,哈希表结构的下标可以是利用哈希函数对预设路由对应的预设子路径进行处理,得到预设子路径对应的哈希值,将得到的预设子路径对应的哈希值作为哈希表结构的下标。
61.需要说明的是,对每一个预设子路径利用设置的哈希函数进行处理,生成对应的哈希值hashcode,每一个预设子路径对应一个hashcode,将每一个预设子路径对应的hashcode可以作为每一个预设子路径在hashmap表中存储位置处的下标。
62.需要说明的是,哈希函数的选择可以根据实际情况进行选择,本技术中不做具体的限定。
63.需要说明的是,哈希表结构的下标可以是除本技术中以外的其他的确定方式,具
体地,可以根据实际情况进行选择,本技术中不做具体的限定。
64.需要说明的是,将预设搜索树上同一深度预设子节点信息中存储的预设子路径对应的哈希值不同,并且同一深度上对应的子路径的数量有限,因而发生碰撞的概率基本不存在,因而hashmap中的数组下标值是各不相同的。
65.在本技术实施例中,生成预设搜索树的方式,剔除了预设路由中无效信息,减少预设搜索树的深度。
66.在本技术实施例中,在生成预设搜索树之后,根据待匹配路由对应的多个子路径之间的路由关系,依次在预设搜索树中查找待匹配路由对应的预设子节点。
67.在本技术实施例中,在预设搜索树中依次查找多个子路径对应的多个子节点,可以是利用预设哈希函数对多个子路径进行处理,生成多个子路径对应的多个哈希值;获取预设搜索树中预设子节点对应的预设哈希值集合;预设哈希值集合中的每个预设哈希值是利用预设哈希函数对每个预设子节点进行处理得到的;通过从预设哈希值集合中依次查找与多个哈希值匹配的多个预设哈希值,来实现在搜索树中依次查找所述多个子节点。
68.在本技术实施例中,在对待匹配路由进行划分得到待匹配路由对应的多个子路径之后,利用哈希函数对得到的每一个子路径进行处理,生成每一个子路径对应的哈希值,可以根据生成的哈希值在预设搜索树中预设子节点对应的预设哈希值集合中查找与之相等的哈希值。
69.在本技术实施例中,预设哈希值集合是在生成预设搜索树的过程中,将预设路由根据分割字符划分之后得到多个预设子路径,利用哈希函数对得到的多个预设子路径进行处理,生成多个预设子路径对应的多个预设哈希值,将多个预设子路径对应的多个预设哈希值组成一个预设哈希值集合。
70.需要说明的是,在利用哈希函数对预设子路径进行处理得到预设子路径对应的哈希值,以及利用哈希函数对待匹配路由对应的多个子路径进行处理得到多个子路径对应的多个哈希值,所利用的哈希函数是相同的。
71.在本技术实施例中,预设搜索树的预设子节点在存储的过程中是按照hashmap结构进行存储的,利用哈希函数对预设子路径进行处理,生成预设子路径对应的预设哈希值,可以将生成的预设哈希值作为每一个预设子节点的下标值。
72.在本技术实施例中,对多个子路径对应的多个子节点进行查找时,根据待匹配路由确定出多个子路径进行查找的先后顺序,从第一个子路径开始,依次利用第一个子路径对应的哈希值在预设哈希值集合中进行查找,当第一个子路径对应的哈希值在预设哈希值集合中查找到与之相等的预设哈希值时,将查找到的预设哈希值对应的预设子节点确定为查找到的一个预设子节点,以此类推,对其余的多个子路径对应的多个哈希值按照同样的方式,依次在预设哈希值集合中查找与多个哈希值匹配的多个预设哈希值,将多个预设哈希值对应的预设搜索树上的多个预设子节点确定为查找到的多个子节点。
73.需要说明的是,利用哈希值查询的方式,其时间复杂度为o(1)。
74.可选地,根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点,并从多个子节点中查找路径优先级和预设匹配目标地址;可以包括以下步骤:
75.步骤一:基于路由关系,从多个子路径中确定第一个待匹配子路径;并在预设搜索
树中的预设子节点中查找与第一个待匹配子路径匹配的第一子节点;
76.步骤二:若从第一子节点中查找到第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则将一个路径优先级和一个预设匹配目标地址记录在匹配集合中;并执行步骤四;
77.步骤三,若从第一子节点中未查找到第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则执行步骤四;
78.步骤四:基于路由关系,从多个子路径中查找第一个待匹配子路径跳转的第二个待匹配子路径;从预设搜索树中确定第一子节点的孩子节点,并从孩子节点中查找与第二个待匹配子路径匹配的第二子节点;以执行从第二个子节点中查找对应的路径优先级和预设匹配目标地址的过程;直至遍历完多个子路径,得到匹配集合,匹配集合中存储多个子路径对应的路径优先级和预设匹配目标地址。
79.在本技术实施例中,预设搜索树可以由多条预设路由构建的,在预设搜索树中查找多个子路径对应的多个子节点时,依次在预设搜索树中对多个子路径进行匹配,首先根据待匹配路由确定出多个子路径之间的跳转顺序,将位于跳转顺序中的第一个位置对应的一个子路径确定为第一个待匹配子路径,对第一个待匹配路径,按照广度遍历的顺序依次在预设搜索树中的预设子节点中查找与第一个待匹配子路径匹配的第一子节点。
80.需要说明的是,对每一个待匹配路由进行查找时,都是从预设搜索树的根节点开始查找的。
81.需要说明的是,在预设搜索树中的预设子节点中查找与第一个待匹配子路径匹配的第一子节点可以利用广度遍历的方式进行查找,也可以利用其他的查找方式,具体地,可以根据实际情况进行选择,本技术中不做具体的限定。
82.需要说明的是,在预设搜索树中的预设子节点中查找与第一个待匹配子路径匹配的第一子节点时,可以是利用哈希函数对第一个待匹配子路径进行处理得到对应的哈希值,再在预设搜索树中的预设子节点对应的预设哈希值集合中查找第一个待匹配子路径对应的哈希值,在查找到相同的哈希值时,表明查找到了第一个待匹配子路径,也可以利用其他的查找方式,具体地,可以根据实际情况进行选择,本技术中不做具体地限定。
83.在本技术实施例中,预设搜索树中的预设子节点中存储有路径优先级和预设匹配目标地址,当在预设搜索树中的预设子节点中查找到第一个待匹配子路径匹配的第一子节点时,对查找到的第一子节点中存储的数值进行判断,在第一子节点中存储的数值不为空时,获取到第一子节点对应的路径优先级和预设匹配目标地址,并将获取到的第一子节点对应的路径优先级和预设匹配目标地址输出到匹配集合中。
84.在本技术实施例中,在预设搜索树中的预设子节点上查找到第一个待匹配子路径对应的第一个子节点,并从第一子节点中获取到第一个待匹配自路径对应的路径优先级和预设匹配目标地址之后,根据待匹配路由确定出的多个子路径之间的跳转顺序,确定出第一个待匹配子路径跳转的第二个待匹配子路径,并在预设搜索树中确定出第一子节点对应的孩子节点,按照查找第一个子节点的方式,在第一子节点对应的孩子节点中查找第二个待匹配路由对应的第二子节点,当在第一子节点的孩子节点中查找到第二待匹配路径对应的第二子节点时,对查找到的第二子节点中存储的数值进行判断,在第二子节点中存储的数值不为空时,获取到第二子节点对应的路径优先级和预设匹配目标地址,并将获取到的
第二子节点对应的路径优先级和预设匹配目标地址输出到匹配集合中。
85.在本技术实施例中,当在预设搜索树中的预设子节点中查找到第一个待匹配子路径匹配的第一子节点时,对查找到的第一子节点中存储的数值进行判断,在第一子节点中存储的数值为空时,根据待匹配路由确定出的多个子路径之间的跳转顺序,确定出第一个待匹配子路径跳转的第二个待匹配子路径,并在预设搜索树中确定出第一子节点对应的孩子节点,按照查找第一子节点的方式,在第一子节点对应的孩子节点中查找第二个待匹配子路径对应的第二子节点,当在第一子节点的孩子节点中查找到第二待匹配路径对应的第二子节点时,对查找到的第二子节点中存储的数值进行判断,在第二子节点中存储的数值不为空时,获取到第二子节点对应的路径优先级和预设匹配目标地址,并将获取到的第二子节点对应的路径优先级和预设匹配目标地址输出到匹配集合中。
86.以此类推,直至遍历完待匹配路由对应的多个子路径,获取到匹配集合。
87.需要说明的是,匹配集合中存储多个子路径对应的路径优先级和预设匹配目标地址。
88.需要说明的是,在预设搜索树中查找到多个子路径对应的多个预设子节点之后,不再对该预设子节点相同深度上的其他节点做广度遍历,开始搜索该预设子节点的孩子节点,继续按照相同的查找方式进行查找,直到查找到预设搜索树的叶子节点为空。
89.示例性地,第一个子节点对应的孩子节点可以有多个,比如有孩子节点1、孩子节点2、孩子节点3,若在孩子节点1、孩子节点2、孩子节点3中查找与第二个待匹配子路径匹配的第二子节点时,如果孩子节点1是与第二个待匹配子路径对应的第二个子节点,那么,就不再对孩子节点2和孩子节点3再进行遍历。
90.示例性地,假设,预设搜索树的结构如图4所示,当获取到的待匹配路由是/a/b/c,其中,a可以为api,b可以为web,c可以为cbs,则获取的待匹配路由为/api/web/cbs,根据待匹配路由/api/web/cbs确定出路由跳转顺序依次为api、web、cbs,可以确定出第一个待匹配子路径是api,按照广度遍历的方式,从预设搜索树的root节点开始进行遍历,因预设搜索树的root节点没有兄弟节点,开始遍历预设搜索树root的子节点api,当在预设搜索树中找到第一个待匹配子路径api在预设搜索树中对应的第一子节点,判断第一子节点中的数值是否为空,在不空时,获取第一子节点上预设子路径对应的匹配目标地址和路径优先级,并将第一子节点上预设子路径对应的匹配目标地址和路径优先级输出至匹配集合中;利用同样的方式继续遍历第二待匹配子路径web,在预设搜索树中找到第二个待匹配子路径web在预设搜索树中对应的第二子节点,判断第二子节点中的数值是否为空,在第二子节点中的数值不空时,获取第二子节点上预设子路径对应的匹配目标地址和路径优先级,输出到匹配集合中;若第二子节点中的数值为空,则继续遍历第二个待匹配子路径web的下一个第三待匹配子路径cbs,以此类推,直至遍历完待匹配路由对应的所有的子路径,并获取到匹配集合。
91.需要说明的是,在对多个子路径查找的过程中,若在预设搜索树中查找了到第一个待匹配子路径api时,便在预设搜索树中的预设子节点中不再对预设子路径api对应的兄弟节点进行查找,直接对预设子路径api的孩子节点进行查找。
92.需要说明的是,若在预设搜索树中查找到第一个待匹配子路径api对应的第一子节点,若第一子节点中对应的数值不为空时,表征第一子节点是一个可以正常跳转的节点,
并对第一子节点进行标记;若第一子节点中对应的数值为空时,表征第一子节点是一个非正常跳转的节点。
93.s103、从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址。
94.在本技术实施例中,在得到记录有路径优先级和预设匹配目标地址的匹配集合之后,从匹配集合中选择出数值最小的优先级对应的一个路径优先级,将数值最小的优先级对应的一个路径优先级确定为最高路径优先级,并从预设匹配地址中获取到最高路径优先级对应的匹配目标地址。
95.需要说明的是,最高优先级可以是值最小的优先级,也可以是值最大的优先级,具体地,可以根据实际情况进行选择,本技术中不做具体的限定。
96.s104、将第一匹配目标地址确定为待匹配路由对应的目标路径。
97.在本技术实施例中,根据最高路径优先级确定出对应的匹配目标地址之后,将确定出的最高路径优先级对应的匹配目标地址作为待匹配路由对应的目标路径。
98.在本技术实施例中,将第一匹配目标地址确定为待匹配路由对应的目标路径之后,还可以根据所述目标路径实现待匹配路由的跳转。
99.在本技术实施例中,通过路径优先级进行目标路由确定的过程,解决了传统的字典树中只能通过最长路径进行路由匹配的缺点。
100.可以理解的是,在本技术实施例提供的一种路由匹配方法中,在进行路由匹配的过程中,通过分割字符对路由信息进行划分的方式,能够减少生成字典树的深度,减小对待匹配路由的多个子节点进行匹配时的匹配时间复杂度;同时,预设搜索树中的预设子节点中包含路径优先级和预设匹配目标地址,在进行待匹配路由匹配的过程中,能够在预设搜索树查找到多个子路径对应的多个路径优先级和多个预设匹配目标地址,从符合条件的多个路径优先级中确定出优先级最高的一个路径优先级,并根据优先级最高的一个路径优先级对应的一个预设匹配目标地址,实现待匹配路由的跳转,减少路由匹配时间,达到提高路由匹配效率的目的。
101.基于上述实施例,本技术实施例中提供一种路由匹配方法,如图5所示,具体包括如下步骤:
102.步骤1、创建预设树结构;根据获取到的预设路由中的分割字符,将预设路由划分为多个预设子路径;并根据预设路由确定多个预设子路径之间的路由关系;并确定多个预设子路径对应的多个路径优先级和多个预设匹配目标地址;
103.步骤2、根据多个预设子路径之间的路由关系,依次将每个预设子路径、对应的一个路径优先级和一个预设匹配目标地址添加至预设树结构中对应的一个预设子节点上;生成预设搜索树;
104.步骤3、根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系;
105.步骤4、根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;
106.步骤5、从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;
107.步骤6、将第一匹配目标地址确定为待匹配路由对应的目标路径。
108.基于上述实施例,在本技术的另一实施例中提供一种终端设备1,如图6所示,该终端设备1包括:
109.划分单元10,在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;
110.确定单元11,用于根据待匹配路由确定多个子路径之间的路由关系;
111.查找单元12,用于根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,所述路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;预设搜索树是根据预设子路径和预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的;
112.所述确定单元11,还用于从路径优先级中确定出优先级最高的第一路径优先级;
113.所述查找单元12,还用于从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;
114.所述确定单元11,还用于将第一匹配目标地址确定为待匹配路由对应的目标路径。
115.可选地,终端设备1还可以包括:创建单元,
116.创建单元,用于创建预设树结构;
117.所述划分单元10,还用于根据获取到的预设路由中的分割字符,将预设路由划分为多个预设子路径;
118.所述确定单元11,还用于根据预设路由确定多个预设子路径之间的路由关系;利用预设路由,确定多个预设子路径对应的多个路径优先级和多个预设匹配目标地址;
119.添加单元,用于根据所述路由关系,依次将每个预设子路径、对应的一个路径优先级和一个预设匹配目标地址添加至预设树结构中对应的一个预设子节点上;生成预设搜索树。
120.可选地,终端设备1还可以包括:处理单元,
121.处理单元,用于利用预设哈希函数对多个子路径进行处理,生成多个子路径对应的多个哈希值;
122.获取单元,用于获取预设搜索树中预设子节点对应的预设哈希值集合;预设哈希值集合中的每个预设哈希值是利用预设哈希函数对每个预设子节点进行处理得到的;
123.所述查找单元12,还用于通过从预设哈希值集合中依次查找与多个哈希值匹配的多个预设哈希值,来实现在搜索树中依次查找所述多个子节点。
124.可选地,所述确定单元11,还用于基于路由关系,从多个子路径中确定第一个待匹配子路径;
125.所述查找单元12,还用于在预设搜索树中的预设子节点中查找与第一个待匹配子路径匹配的第一子节点;
126.记录单元,用于若从第一子节点中查找到第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则将一个路径优先级和一个预设匹配目标地址记录在匹配集合中;并执行步骤四;
127.执行单元,用于若从第一子节点中未查找到第一待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则执行步骤四;
128.所述查找单元12,还用于基于路由关系,从多个子路径中查找第一个待匹配子路径跳转的第二个待匹配子路径;
129.所述确定单元11,还用于从所述预设搜索树中确定第一子节点的孩子节点;
130.所述查找单元12,还用于从孩子节点中查找与第二个待匹配子路径匹配的第二子节点;以执行从第二个子节点中查找对应的路径优先级和预设匹配目标地址的过程;直至遍历完多个子路径,得到所述匹配集合,所述匹配集合中存储所述多个子路径对应的路径优先级和预设匹配目标地址。
131.可选地,所述终端设备1还可以包括:跳转单元,
132.跳转单元,用于根据所述目标路径实现待匹配路由的跳转。
133.本技术实施例中提供的一种终端设备,在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系;根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;预设搜索树是根据预设子路径和预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的;从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;将第一匹配目标地址确定为待匹配路由对应的目标路径。由此可见,本技术实施例提供的一种终端设备,在进行路由匹配的过程中,通过分割字符对路由信息进行划分的方式,能够减少生成字典树的深度,减小对待匹配路由的多个子节点进行匹配时的匹配时间复杂度;同时,预设搜索树中的预设子节点中包含路径优先级和预设匹配目标地址,在进行待匹配路由匹配的过程中,能够在预设搜索树查找到多个子路径对应的多个路径优先级和多个预设匹配目标地址,从符合条件的多个路径优先级中确定出优先级最高的一个路径优先级,并根据优先级最高的一个路径优先级对应的一个预设匹配目标地址,实现待匹配路由的跳转,减少路由匹配时间,达到提高路由匹配效率的目的。
134.图7为本技术实施例提供一种终端设备1的组成结构示意图,在实际应用中,基于上述实施例的同一公开构思下,如图7所示,本实施例的终端设备1包括处理器13、存储器14和通信总线15。
135.在具体的实施例过程中,上述划分单元10、确定单元11、查找单元12、创建单元、添加单元、处理单元、获取单元、记录单元、执行单元、跳转单元可由位于终端设备1上的处理器13实现,上述处理器13可以为特定用途集成电路(asic,application specific integrated circuit)、数字信号处理器(dsp,digital signal processor)、数字信号处理图像处理装置(dspd,digital signal processing device)、可编程逻辑图像处理装置(pld,programmable logic device)、现场可编程门阵列(fpga,field programmable gate array)、cpu、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本实施例不作具体限定。
136.在本技术实施例中,上述通信总线15用于实现处理器13和存储器14之间的连接通
信;上述处理器13执行存储器14中存储的运行程序时实现如下的路由匹配方法:
137.在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系;根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;预设搜索树是根据预设子路径和预设子路径之间的路由关系,将预设子路径添加至预设树结构中对应的预设子节点上生成的;从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;将第一匹配目标地址确定为待匹配路由对应的目标路径。
138.进一步地,上述处理器13,还用于创建预设树结构;根据获取到的预设路由中的分割字符,将预设路由划分为多个预设子路径;并根据预设路由确定多个预设子路径之间的路由关系;利用预设路由,确定多个预设子路径对应的多个路径优先级和多个预设匹配目标地址;根据路由关系,依次将每个预设子路径、对应的一个路径优先级和一个预设匹配目标地址添加至预设树结构中对应的一个预设子节点上;生成预设搜索树。
139.进一步地,上述处理器13,还用于利用预设哈希函数对多个子路径进行处理,生成多个子路径对应的多个哈希值;获取预设搜索树中预设子节点对应的预设哈希值集合;预设哈希值集合中的每个预设哈希值是利用预设哈希函数对每个预设子节点进行处理得到的;通过从预设哈希值集合中依次查找与所述多个哈希值匹配的多个预设哈希值,来实现在搜索树中依次查找所述多个子节点。
140.进一步地,上述处理器13,还用于实现步骤一:基于路由关系,从多个子路径中确定第一个待匹配子路径;并在预设搜索树中的预设子节点中查找与第一个待匹配子路径匹配的第一子节点;步骤二:若从第一子节点中查找到第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则将一个路径优先级和一个预设匹配目标地址记录在匹配集合中;并执行步骤四;步骤三,若从第一子节点中未查找到第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则执行步骤四;步骤四:基于路由关系,从多个子路径中查找第一个待匹配子路径跳转的第二个待匹配子路径;从预设搜索树中确定第一子节点的孩子节点,并从孩子节点中查找与第二个待匹配子路径匹配的第二子节点;以执行从第二个子节点中查找对应的路径优先级和预设匹配目标地址的过程;直至遍历完多个子路径,得到所述匹配集合,匹配集合中存储多个子路径对应的路径优先级和预设匹配目标地址。
141.进一步地,上述处理器13,还用于根据所述目标路径实现待匹配路由的跳转。
142.基于上述实施例,本技术实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个处理器执行,应用于终端设备中,该计算机程序实现如上述的路由匹配方法。
143.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该
要素的过程、方法、物品或者装置中还存在另外的相同要素。
144.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台图像显示设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。
145.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种路由匹配方法,其特征在于,所述方法包括:在触发对待匹配路由进行路由匹配的情况下,根据所述待匹配路由中的分隔字符,将所述待匹配路由划分为多个子路径;并根据所述待匹配路由确定所述多个子路径之间的路由关系;根据多个子路径之间的路由关系,在预设搜索树中依次查找所述多个子路径对应的多个子节点;并从所述多个子节点中查找路径优先级和预设匹配目标地址;其中,所述路径优先级和所述预设匹配目标地址是根据所述待匹配路由对应的业务需求为对应的子路径设置的;所述预设搜索树是根据预设子路径和所述预设子路径之间的路由关系,将所述预设子路径添加至预设树结构中对应的预设子节点上生成的;从所述路径优先级中确定出优先级最高的第一路径优先级,并从所述预设匹配地址中查找所述第一路径优先级对应的第一匹配目标地址;将所述第一匹配目标地址确定为所述待匹配路由对应的目标路径。2.根据权利要求1所述的方法,其特征在于,所述根据多个子路径之间的路由关系,在预设搜索树中依次查找所述多个子路径对应的多个子节点之前,所述方法还包括:创建预设树结构;根据获取到的预设路由中的分割字符,将所述预设路由划分为多个预设子路径;并根据所述预设路由确定所述多个预设子路径之间的路由关系;利用所述预设路由,确定所述多个预设子路径对应的多个路径优先级和多个预设匹配目标地址;根据所述路由关系,依次将每个预设子路径、对应的一个路径优先级和一个预设匹配目标地址添加至所述预设树结构中对应的一个预设子节点上;生成所述预设搜索树。3.根据权利要求1所述的方法,其特征在于,所述在预设搜索树中依次查找所述多个子路径对应的多个子节点,包括:利用预设哈希函数对所述多个子路径进行处理,生成所述多个子路径对应的多个哈希值;获取所述预设搜索树中预设子节点对应的预设哈希值集合;所述预设哈希值集合中的每个预设哈希值是利用所述预设哈希函数对每个预设子节点进行处理得到的;通过从所述预设哈希值集合中依次查找与所述多个哈希值匹配的多个预设哈希值,来实现在所述搜索树中依次查找所述多个子节点。4.根据权利要求1所述的方法,其特征在于,所述根据多个子路径之间的路由关系,在预设搜索树中依次查找所述多个子路径对应的多个子节点,并从所述多个子节点中查找路径优先级和预设匹配目标地址;包括:步骤一:基于所述路由关系,从所述多个子路径中确定第一个待匹配子路径;并在预设搜索树中的预设子节点中查找与所述第一个待匹配子路径匹配的第一子节点;步骤二:若从所述第一子节点中查找到所述第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则将所述一个路径优先级和所述一个预设匹配目标地址记录在匹配集合中;并执行步骤四;步骤三,若从所述第一子节点中未查找到所述第一个待匹配子路径对应的一个路径优先级和一个预设匹配目标地址,则执行步骤四;
步骤四:基于所述路由关系,从所述多个子路径中查找所述第一个待匹配子路径跳转的第二个待匹配子路径;从所述预设搜索树中确定第一子节点的孩子节点,并从所述孩子节点中查找与所述第二个待匹配子路径匹配的第二子节点;以执行从所述第二个子节点中查找对应的路径优先级和预设匹配目标地址的过程;直至遍历完所述多个子路径,得到所述匹配集合,所述匹配集合中存储所述多个子路径对应的路径优先级和预设匹配目标地址。5.根据权利要求1所述的方法,其特征在于,所述将所述第一匹配目标地址确定为所述待匹配路由对应的目标路径之后,所述方法还包括:根据所述目标路径实现待匹配路由的跳转。6.一种终端设备,其特征在于,所述终端设备包括:划分单元,用于在触发对待匹配路由进行路由匹配的情况下,根据所述待匹配路由中的分隔字符,将所述待匹配路由划分为多个子路径;确定单元,用于根据所述待匹配路由确定所述多个子路径之间的路由关系;查找单元,用于根据多个子路径之间的路由关系,在预设搜索树中依次查找所述多个子路径对应的多个子节点;并从所述多个子节点中查找路径优先级和预设匹配目标地址;其中,所述路径优先级和所述预设匹配目标地址是根据所述待匹配路由对应的业务需求为对应的子路径设置的;所述预设搜索树是根据预设子路径和所述预设子路径之间的路由关系,将所述预设子路径添加至预设树结构中对应的预设子节点上生成的;所述确定单元,还用于从所述路径优先级中确定出优先级最高的第一路径优先级;所述查找单元,还用于从所述预设匹配地址中查找所述第一路径优先级对应的第一匹配目标地址;所述确定单元,还用于将所述第一匹配目标地址确定为所述待匹配路由对应的目标路径。7.根据权利要求6所述的终端设备,其特征在于,创建单元,用于创建预设树结构;所述划分单元,还用于根据获取到的预设路由中的分割字符,将所述预设路由划分为多个预设子路径;所述确定单元,还用于根据所述预设路由确定所述多个预设子路径之间的路由关系;利用所述预设路由,确定所述多个预设子路径对应的多个路径优先级和多个预设匹配目标地址;添加单元,用于根据所述路由关系,依次将每个预设子路径、对应的一个路径优先级和一个预设匹配目标地址添加至所述预设树结构中对应的一个预设子节点上;生成所述预设搜索树。8.根据权利要求6所述的终端设备,其特征在于,处理单元,用于利用预设哈希函数对所述多个子路径进行处理,生成所述多个子路径对应的多个哈希值;获取单元,用于获取所述预设搜索树中预设子节点对应的预设哈希值集合;所述预设哈希值集合中的每个预设哈希值是利用所述预设哈希函数对每个预设子节点进行处理得到的;
所述查找单元,还用于通过从所述预设哈希值集合中依次查找与所述多个哈希值匹配的多个预设哈希值,来实现在所述搜索树中依次查找所述多个子节点。9.一种终端设备,其特征在于,所述终端设备包括:处理器、存储器及通信总线;所述处理器执行存储器存储的运行程序时实现如权利要求1-5任一项所述的方法。10.一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5任一项所述的方法。

技术总结
本申请实施例公开了一种路由匹配方法、终端设备及存储介质,路由匹配方法包括:在触发对待匹配路由进行路由匹配的情况下,根据待匹配路由中的分隔字符,将待匹配路由划分为多个子路径;并根据待匹配路由确定多个子路径之间的路由关系;根据多个子路径之间的路由关系,在预设搜索树中依次查找多个子路径对应的多个子节点;并从多个子节点中查找路径优先级和预设匹配目标地址;其中,路径优先级和预设匹配目标地址是根据待匹配路由对应的业务需求为对应的子路径设置的;从路径优先级中确定出优先级最高的第一路径优先级,并从预设匹配地址中查找第一路径优先级对应的第一匹配目标地址;将第一匹配目标地址确定为待匹配路由对应的目标路径。应的目标路径。应的目标路径。


技术研发人员:江严明
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.08.08
技术公布日:2023/9/22
版权声明

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

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

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

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

分享:

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

评论

相关推荐