一种基于动态优先级解决Vpc-agent网络配置生效慢的方法及系统与流程
未命名
08-15
阅读:92
评论:0

一种基于动态优先级解决vpc-agent网络配置生效慢的方法及系统
技术领域
1.本发明涉及虚拟网络实现的技术领域,尤其涉及一种基于动态优先级解决vpc-agent网络配置生效慢的方法及系统。
背景技术:
2.vpc(virtual private cloud)虚拟网络的实现,主要包括数据面和控制面两部分,其中,数据面主要是对网络报文的操作,比如报文的解析、转发、地址转换、匹配路由规则、安全规则、丢弃等;控制面主要是为网络管理员提供数据面报文操作规则的管理能力,比如路由规则、安全规则等的配置,并且为管理员提供统一的管理入口,屏蔽具体数据面实现的复杂性,将数据流抽象为逻辑流,语义更易于管理员理解。
3.如图1所示,vpc虚拟网络服务架构具体包括:
4.(1)vpc-controller
5.vpc-controller是云计算提供商用于管理虚拟私有云(vpc)网络架构的软件组件。vpc controller主要负责vpc中网络架构的创建、配置和管理,例如用户配置的包括vpc的路由表、子网、安全组在内元数据等,并将处理后的数据存储到etcd中。
6.其中,etcd是一种开源的分布式键值存储系统,常用于在分布式系统中存储共享配置、服务发现信息和状态数据等。在云计算中,etcd可以被用于实现虚拟私有云(vpc)网络的配置和管理。在vpc中,etcd可以用于存储和同步vpc网络的配置信息,如路由表、安全组规则、子网信息等。当vpc网络中的配置信息发生变化时,etcd会自动同步这些变化到vpc中的各个节点,从而保持整个vpc网络的一致性和可靠性。同时,etcd还可以与其他云计算服务进行集成,如kubernetes等,以实现更加复杂的分布式系统管理和部署。
7.(2)vpc-agent
8.vpc-agent是用于管理虚拟私有云(vpc)网络的软件组件,在vpc中的每个虚拟机实例上运行。vpc agent的主要功能是处理虚拟机实例和vpc网络之间的网络通信,包括虚拟网络接口的配置和管理、安全组规则的应用、vpc路由表的更新等。通过vpc agent,虚拟机实例可以与vpc网络进行安全、可靠的通信,同时也可以方便地管理和配置vpc网络的各种网络服务。
9.监听etcd中网络数据的变化,并将其翻译成ovs的配置,下发到ovs中;监听ovs-bridge变更,并完成网络配置。
10.其中,ovs(open vswitch)是一个开源的虚拟交换机软件,用于在虚拟化环境中连接、管理和安全地隔离虚拟机和物理网络之间的数据通信。
11.(3)ovs-bridge
12.ovs bridge是open vswitch(ovs)中的一个概念,表示ovs中的虚拟交换机,用于在虚拟化环境中连接和管理虚拟机和物理网络之间的数据通信。ovs bridge可以看作是一种虚拟交换机,它有自己的mac地址和端口,可以接收和转发数据包。通过ovs bridge,可以
将虚拟机连接到物理网络上,并支持多种网络协议和高级网络功能,如qos、vlan和隧道等。在ovs中,可以创建多个ovs bridge,每个ovs bridge可以包含多个端口,每个端口对应一个虚拟机接口。这些端口可以隔离不同的虚拟机之间的通信,同时也可以控制虚拟机的网络访问权限和带宽限制。实现vpc具体的数据流处理,从而实现网络功能。
13.vpc-agent处理流程如图2所示,启动时,会启动四个并发线程,分别实现监听etcd资源变化、监听ovs-bridge网桥变化、进行周期资源对账、处理消息队列中资源事件等功能。
14.如图3所示,vpc-agent线程模型包括:
15.etcd watcher:责监听etcd中资源的变更,比如vpc、vnic等,然后封装相应资源事件,添加到相应资源的队列中。
16.periodic sync:负责周期同步校验etcd中的数据,与本地数据是否一致,比如启动时,就会触发一次资源的同步,分别从etcd、ovs中获取期望和实际的本地配置,然后为每类资源构造事件,添加到相应资源的队列中。
17.ovs watcher:负责监听ovs-bridge数据的变更,比如ovs port的增删等,然后封装相应的资源事件,添加到相应的资源队列中。
18.资源队列:比如vnic queue、vpc queue等,每类资源都有自己的事件队列,每个资源队列有相应的processor pool(线程池),负责并发处理资源的业务逻辑,比如:将vnic的etcd中的配置翻译成ovs-bridge中的规则,并下发到ovs-bridge中。
19.现有技术中,主要存在的问题是:当本地资源数量较多时,由于周期同步的任务,向资源队列中添加了所有本地资源的同步处理事件,导致用户通过vpc-controller触发的资源变更,不能及时生效,即etcd watcher触发的资源事件,不能得到及时的处理,最差情况需要等到周期同步的事件完成之后,用户变更才会生效。
20.不同资源之间有依赖关系,比如vnic(网卡)的操作,依赖其所属的vpc数据,需要vpc-agent已经同步完vpc资源,而当前vpc-agent没有对不同资源的事件处理进行区分,导致资源事件的无效处理,尤其是在vpc-ag ent启动或周期同步时,会批量添加所有本地资源的事件。
技术实现要素:
21.针对上述问题,本发明的目的在于提供一种基于动态优先级解决vpc-agent网络配置生效慢的方法及系统,通过动态优先级队列的方式,实现了etcd watcher触发的事件,即用户操作的资源变更,能够及时得到处理,不需要等待其他低优先级事件完全处理完,比如周期同步触发的事件。
22.本发明的上述发明目的是通过以下技术方案得以实现的:
23.一种基于动态优先级解决vpc-agent网络配置生效慢的方法,包括以下步骤:
24.s1:建立用于存储所有资源事件的动态优先级队列;
25.s2:所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。
26.进一步地,在步骤s2中,向所述动态优先级队列添加所述资源事件,采用事件初始优先级进行添加,所述事件初始优先级,具体为:
27.所述事件初始优先级综合考虑所述资源事件的包括任务类型、资源类型在内的因素,所述事件初始优先级pe为:
[0028][0029]
其中,pt为所述任务类型的优先级标识,wt为所述任务类型的优先级权重标识,pr为所述资源类型的优先级标识,wr为所述资源类型的优先级权重标识。
[0030]
进一步地,在步骤s2中,周期性更新所述动态优先级队列中所述资源事件的优先级,采用动态变化优先级进行更新,所述动态变化优先级,具体为:
[0031]
所述动态变化优先级综合考虑所述资源事件的包括等待时间、重试次数在内的因素,所述动态变化优先级pe为:
[0032]
若(当前时间-所述资源事件的创建时间)》tt,则pe=min(pmax,pe+1);
[0033]
若所述资源事件的重试次数》tr,则pe=max(pmin,pe-1);
[0034]
其中,tt为所述等待时间的阈值,tr为所述重试次数的阈值,pmax为所述资源事件优先级的最大值,pmin为所述资源事件优先级的最小值。
[0035]
进一步地,所述资源类型的优先级,具体为:
[0036]
在vpc-agent中,按照来源将所述资源类型分为3类:
[0037]
ovs:虚拟机相关的网络配置变更,ovs watcher监听触发的事件;
[0038]
rpc:用户操作的网络配置变更,etcd watcher监听触发的事件;
[0039]
sync:对应于虚拟机服务的周期性检测,保证网络配置的最终一致,periodic sync触发的事件;
[0040]
其中,ovs》rpc》sync;
[0041]
在vpc-agent中,按照网络将所述资源类型分为3类:
[0042]
base:基础网络资源,主要包括vpc,subnet等基础的网络信息;
[0043]
device:网络设备资源,主要包括vnic,port等网络设备相关的信息;
[0044]
policy:网络策略资源,主要包括路由表,安全组等网络策略相关的信息;
[0045]
其中,base》device》policy。
[0046]
进一步地,在步骤s2中,向所述动态优先级队列添加所述资源事件,具体为:
[0047]
s211:判断是否需要添加所述资源事件,若是执行步骤s212,若否执行步骤s217;
[0048]
s212:判断需要添加的所述资源事件是否为重试事件,若是执行步骤s214,若否执行步骤s213;
[0049]
s213:计算所述资源事件的所述初始优先级;
[0050]
s214:判断所述动态优先级队列中是否有相同id的所述资源事件,若是执行步骤s215,若否执行步骤s216;
[0051]
s215:将所述动态优先级队列中相同id的所述资源事件与新增的所述资源事件的优先级对比,若新增的所述资源事件的优先级大于所述动态优先级队列中已有的相同id的所述资源事件的优先级,则更新所述资源事件到所述动态优先级队列中,否则不更新所述资源事件,进入步骤s217;
[0052]
s216:添加更新所述资源事件到所述动态优先级队列,进入步骤s217;
[0053]
s217:判断所述动态优先级队列是否停止服务,若否跳转步骤s211,否则结束流程。
[0054]
进一步地,在步骤s2中,周期性更新所述动态优先级队列中所述资源事件的优先级,具体为:
[0055]
s221:判断所述动态优先级队列是否到达优先级更新周期,若是跳转步骤s222,若否调整步骤s227;
[0056]
s222:遍历所述动态优先级队列中的所述资源事件;
[0057]
s223:判断所述资源事件的所述等待时间是否超过阈值,则根据所述动态变化优先级的公式更新所述资源事件的优先级,即若(当前时间-所述资源事件的创建时间)》tt,则pe=min(pmax,pe+1);
[0058]
s224:判断所述资源事件的所述重试次数是否超过阈值,则根据所述动态变化优先级的公式更新所述资源事件的优先级,即若所述资源事件的重试次数》tr,则pe=max(pmin,pe-1);
[0059]
s225:判断所述资源事件的优先级是否大于最大优先值,将所述资源事件的优先级更新为最大优先值;
[0060]
s226:判断所述资源事件的优先级是否小于最小优先值,将所述资源事件的优先级更新为最小优先值;
[0061]
s227:判断所述动态优先级队列是否停止服务,若否跳转步骤s221,否则结束流程。
[0062]
进一步地,在步骤s2中,按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理,具体为:
[0063]
s231:判断所述动态优先级队列中是否仍有所述资源事件,若是,执行步骤s232,若否,执行步骤s236;
[0064]
s232:按照优先级从高到低的顺序获取所述资源事件,从线程池中获取线程处理所述资源事件;
[0065]
s234:判断所述资源事件是否处理成功,若是,进入步骤s236,若否,进入步骤s235;
[0066]
s235:更新所述资源事件的创建时间为当前时间,将所述资源事件的重试次数+1,将所述资源事件添加到所述动态优先级队列中;
[0067]
s236:判断所述动态优先级队列是否停止服务,若否跳转步骤s231,否则结束流程。
[0068]
一种用于执行如上述的基于动态优先级解决vpc-agent网络配置生效慢的方法的基于动态优先级解决vpc-agent网络配置生效慢的系统,包括:
[0069]
优先级队列建立模块,用于建立用于存储所有资源事件的动态优先级队列;
[0070]
优先级队列执行模块,用于提供给所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。
[0071]
一种计算机设备,包括存储器和一个或多个处理器,所述存储器中存储有计算机代码,所述计算机代码被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述的方法。
[0072]
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如上述的方法被执行。
[0073]
与现有技术相比,本发明包括以下至少一种有益效果是:
[0074]
(1)通过动态优先级队列的方式,实现了优先级高的etcd watcher触发的事件,即用户操作的资源变更,能够及时得到处理,不需要等待其他低优事件完全处理完,比如周期同步触发的事件;以vpc-agent启动时为例:假设当前本地资源数量为m,etcd中预期的本地资源数量为n,此时,用户通过vpc-controller操作资源变更,则此变更需要再m+n个资源事件处理之后才能生效。因为vpc-agent启动时,一定要进行一次资源的同步校验,此时如果有用户变更操作,则现有技术,需要等到同步完成,才能进行用户变更事件的处理,本地资源越多,用户变更的生效时间越晚。而使用优先级队列的方式,可以使用户变更的事件得到及时的处理,因为vpc-controller操作资源变更触发的事件优先级大于启动时的同步操作触发的事件优先级。
[0075]
(2)通过资源类型的优先级配置,实现了存在依赖关系的资源事件,可以按照依赖顺序进行处理,从而避免了无效的事件处理操作,从而降低了配置生效的时间。
[0076]
(3)动态优先级队列保证,同一个资源的事件,在队列中至多只存在一个,因此避免了同一资源多次处理的情况,减少不必要的消耗,尤其是在事件积压的情况下,比如服务刚启动时,虽然当前本地资源数量为m,etcd中预期的本地资源数量为n,但实际触发的资源事件数量为(m∩n)≤(m+n)。
[0077]
(4)动态计算事件的优先级,增加自动升降级策略,避免了高优事件过多,或者高优事件异常等导致的低优事件饿死的情况。
附图说明
[0078]
图1为现有技术中vpn虚拟网络服务架构示意图;
[0079]
图2为现有技术中vpc-agent处理流程示意图;
[0080]
图3为现有技术中vpc-agent线程模型示意图;
[0081]
图4本发明动态优先级队列的线程模型示意图;
[0082]
图5为本发明基于动态优先级解决vpc-agent网络配置生效慢的方法的整体流程图;
[0083]
图6为本发明动态优先级队列的操作示意图;
[0084]
图7为本发明基于动态优先级解决vpc-agent网络配置生效慢的方法的整体结构图。
具体实施方式
[0085]
为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员
在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0086]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
[0087]
如图4所示,本专利通过实现动态优先级队列来解决资源生效慢的问题,所有资源事件都放到同一动态优先级队列中,资源事件中包含任务类型、资源类型、创建时间、重试次数、资源详情等信息。线程池中的线程根据优先级从高到低依次从队列中获取事件,进行相应的处理;并且队列中事件的优先级是动态变化的,入队列时,根据任务类型、资源类型,计算初始优先级;动态优先级队列会周期根据事件的等待时间、重试次数等重新计算优先级。
[0088]
使用动态优先级队列,增加队列事件的优先级维度排序和动态变更,保证:
[0089]
(1)优先级高的事件能够得到及时处理;
[0090]
(2)优先级低的事件不会饿死,当等待时间超过阈值时,会自动升高优先级;
[0091]
(3)异常的高优先级事件不会持续占用资源,当重试次数超过阈值时,会自动降低优先级;
[0092]
(4)同一资源的事件在队列中不会重复。
[0093]
以下通过具体实施例进行说明:
[0094]
第一实施例
[0095]
如图5所示,本实施例提供了一种基于动态优先级解决vpc-agent网络配置生效慢的方法,包括以下步骤:
[0096]
s1:建立用于存储所有资源事件的动态优先级队列。
[0097]
具体的,在本实施例中,采用动态优先级队列的形式对所有的资源事件进行存储,后续根据资源事件在动态优先级队列中的优先级对资源事件进行处理。
[0098]
s2:所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。
[0099]
具体的,本发明的动态优先级队列的优先级由两种计算方式:
[0100]
(1)向所述动态优先级队列添加所述资源事件,采用事件初始优先级进行添加,所述事件初始优先级,具体为:
[0101]
所述事件初始优先级综合考虑所述资源事件的包括任务类型、资源类型在内的因素,所述事件初始优先级pe为:
[0102][0103]
其中,pt为所述任务类型的优先级标识,wt为所述任务类型的优先级权重标识,pr为所述资源类型的优先级标识,wr为所述资源类型的优先级权重标识。
[0104]
(2)周期性更新所述动态优先级队列中所述资源事件的优先级,采用动态变化优先级进行更新,所述动态变化优先级,具体为:
[0105]
所述动态变化优先级综合考虑所述资源事件的包括等待时间、重试次数在内的因素,所述动态变化优先级pe为:
[0106]
若(当前时间-所述资源事件的创建时间)》tt,则pe=min(pmax,pe+1);
[0107]
若所述资源事件的重试次数》tr,则pe=max(pmin,pe-1);
[0108]
其中,tt为所述等待时间的阈值,tr为所述重试次数的阈值,pmax为所述资源事件优先级的最大值,pmin为所述资源事件优先级的最小值。
[0109]
进一步地,对于所述资源类型的优先级划分,具体为:
[0110]
在vpc-agent中,按照来源将所述资源类型分为3类:
[0111]
(1)ovs:虚拟机相关的网络配置变更,ovs watcher监听触发的事件。
[0112]
(2)rpc:用户操作的网络配置变更,etcd watcher监听触发的事件。
[0113]
(3)sync:对应于虚拟机服务的周期性检测,保证网络配置的最终一致,periodic sync触发的事件。
[0114]
其中,ovs》rpc》sync;
[0115]
在vpc-agent中,按照网络将所述资源类型分为3类:
[0116]
(1)base:基础网络资源,主要包括vpc,subnet等基础的网络信息;
[0117]
(2)device:网络设备资源,主要包括vnic,port等网络设备相关的信息;
[0118]
(3)policy:网络策略资源,主要包括路由表,安全组等网络策略相关的信息;
[0119]
其中,base》device》policy。
[0120]
如图6所示,对于动态优先级队列,具体包括并列执行的以下操作:
[0121]
(1)向所述动态优先级队列添加所述资源事件,具体为:
[0122]
s211:判断是否需要添加所述资源事件,若是执行步骤s212,若否执行步骤s217;
[0123]
s212:判断需要添加的所述资源事件是否为重试事件,若是执行步骤s214,若否执行步骤s213;
[0124]
s213:计算所述资源事件的所述初始优先级;
[0125]
s214:判断所述动态优先级队列中是否有相同id的所述资源事件,若是执行步骤s215,若否执行步骤s216;
[0126]
s215:将所述动态优先级队列中相同id的所述资源事件与新增的所述资源事件的优先级对比,若新增的所述资源事件的优先级大于所述动态优先级队列中已有的相同id的所述资源事件的优先级,则更新所述资源事件到所述动态优先级队列中,否则不更新所述资源事件,进入步骤s217;
[0127]
s216:添加更新所述资源事件到所述动态优先级队列,进入步骤s217;
[0128]
s217:判断所述动态优先级队列是否停止服务,若否跳转步骤s211,否则结束流程。
[0129]
(2)周期性更新所述动态优先级队列中所述资源事件的优先级,具体为:
[0130]
s221:判断所述动态优先级队列是否到达优先级更新周期,若是跳转步骤s222,若否调整步骤s227;
[0131]
s222:遍历所述动态优先级队列中的所述资源事件;
[0132]
s223:判断所述资源事件的所述等待时间是否超过阈值,则根据所述动态变化优先级的公式更新所述资源事件的优先级,即若(当前时间-所述资源事件的创建时间)》tt,
则pe=min(pmax,pe+1);
[0133]
s224:判断所述资源事件的所述重试次数是否超过阈值,则根据所述动态变化优先级的公式更新所述资源事件的优先级,即若所述资源事件的重试次数》tr,则pe=max(pmin,pe-1);
[0134]
s225:判断所述资源事件的优先级是否大于最大优先值,将所述资源事件的优先级更新为最大优先值;
[0135]
s226:判断所述资源事件的优先级是否小于最小优先值,将所述资源事件的优先级更新为最小优先值;
[0136]
s227:判断所述动态优先级队列是否停止服务,若否跳转步骤s221,否则结束流程。
[0137]
(3)按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理,具体为:
[0138]
s231:判断所述动态优先级队列中是否仍有所述资源事件,若是,执行步骤s232,若否,执行步骤s236;
[0139]
s232:按照优先级从高到低的顺序获取所述资源事件,从线程池中获取线程处理所述资源事件;
[0140]
s234:判断所述资源事件是否处理成功,若是,进入步骤s236,若否,进入步骤s235;
[0141]
s235:更新所述资源事件的创建时间为当前时间,将所述资源事件的重试次数+1,将所述资源事件添加到所述动态优先级队列中;
[0142]
s236:判断所述动态优先级队列是否停止服务,若否跳转步骤s231,否则结束流程。
[0143]
进一步地,在本实施例中,还可以通过增加资源队列的方式,解决同步事件阻塞用户变更事件的问题,但这样会对同一资源进行多次处理。也可以通过增加线程池容量的方式,来解决队列中事件积压的问题,但这样需要占用更多的cpu、内存资源。
[0144]
第二实施例
[0145]
如图7所示,本实施例提供了一种用于执行如上述的基于动态优先级解决vpc-agent网络配置生效慢的方法的基于动态优先级解决vpc-agent网络配置生效慢的系统,包括:
[0146]
优先级队列建立模块1,用于建立用于存储所有资源事件的动态优先级队列;
[0147]
优先级队列执行模块2,用于提供给所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。
[0148]
一种计算机可读存储介质,计算机可读存储介质存储有计算机代码,当计算机代码被执行时,如上述方法被执行。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,read only memory)、随机存取存储器(ram,random access memory)、磁盘或光盘等。
[0149]
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
[0150]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0151]
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:
1.一种基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,包括以下步骤:s1:建立用于存储所有资源事件的动态优先级队列;s2:所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。2.根据权利要求1所述的基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,在步骤s2中,向所述动态优先级队列添加所述资源事件,采用事件初始优先级进行添加,所述事件初始优先级,具体为:所述事件初始优先级综合考虑所述资源事件的包括任务类型、资源类型在内的因素,所述事件初始优先级pe为:其中,pt为所述任务类型的优先级标识,wt为所述任务类型的优先级权重标识,pr为所述资源类型的优先级标识,wr为所述资源类型的优先级权重标识。3.根据权利要求1所述的基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,在步骤s2中,周期性更新所述动态优先级队列中所述资源事件的优先级,采用动态变化优先级进行更新,所述动态变化优先级,具体为:所述动态变化优先级综合考虑所述资源事件的包括等待时间、重试次数在内的因素,所述动态变化优先级pe为:若(当前时间-所述资源事件的创建时间)>tt,则pe=min(pmax,pe+1);若所述资源事件的重试次数>tr,则pe=max(pmin,pe-1);其中,tt为所述等待时间的阈值,tr为所述重试次数的阈值,pmax为所述资源事件优先级的最大值,pmin为所述资源事件优先级的最小值。4.根据权利要求2所述的基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,所述资源类型的优先级,具体为:在vpc-agent中,按照来源将所述资源类型分为3类:ovs:虚拟机相关的网络配置变更,ovs watcher监听触发的事件;rpc:用户操作的网络配置变更,etcd watcher监听触发的事件;sync:对应于虚拟机服务的周期性检测,保证网络配置的最终一致,pe riodic sync触发的事件;其中,ovs>rpc>sync;在vpc-agent中,按照网络将所述资源类型分为3类:base:基础网络资源,主要包括vpc,subnet等基础的网络信息;device:网络设备资源,主要包括vnic,port等网络设备相关的信息;policy:网络策略资源,主要包括路由表,安全组等网络策略相关的信息;其中,base>device>policy。5.根据权利要求2所述的基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,在步骤s2中,向所述动态优先级队列添加所述资源事件,具体为:
s211:判断是否需要添加所述资源事件,若是执行步骤s212,若否执行步骤s217;s212:判断需要添加的所述资源事件是否为重试事件,若是执行步骤s214,若否执行步骤s213;s213:计算所述资源事件的所述初始优先级;s214:判断所述动态优先级队列中是否有相同id的所述资源事件,若是执行步骤s215,若否执行步骤s216;s215:将所述动态优先级队列中相同id的所述资源事件与新增的所述资源事件的优先级对比,若新增的所述资源事件的优先级大于所述动态优先级队列中已有的相同id的所述资源事件的优先级,则更新所述资源事件到所述动态优先级队列中,否则不更新所述资源事件,进入步骤s217;s216:添加更新所述资源事件到所述动态优先级队列,进入步骤s217;s217:判断所述动态优先级队列是否停止服务,若否跳转步骤s211,否则结束流程。6.根据权利要求3所述的基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,在步骤s2中,周期性更新所述动态优先级队列中所述资源事件的优先级,具体为:s221:判断所述动态优先级队列是否到达优先级更新周期,若是跳转步骤s222,若否调整步骤s227;s222:遍历所述动态优先级队列中的所述资源事件;s223:判断所述资源事件的所述等待时间是否超过阈值,则根据所述动态变化优先级的公式更新所述资源事件的优先级,即若(当前时间-所述资源事件的创建时间)>tt,则pe=min(pmax,pe+1);s224:判断所述资源事件的所述重试次数是否超过阈值,则根据所述动态变化优先级的公式更新所述资源事件的优先级,即若所述资源事件的重试次数>tr,则pe=max(pmin,pe-1);s225:判断所述资源事件的优先级是否大于最大优先值,将所述资源事件的优先级更新为最大优先值;s226:判断所述资源事件的优先级是否小于最小优先值,将所述资源事件的优先级更新为最小优先值;s227:判断所述动态优先级队列是否停止服务,若否跳转步骤s221,否则结束流程。7.根据权利要求1所述的基于动态优先级解决vpc-agent网络配置生效慢的方法,其特征在于,在步骤s2中,按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理,具体为:s231:判断所述动态优先级队列中是否仍有所述资源事件,若是,执行步骤s232,若否,执行步骤s236;s232:按照优先级从高到低的顺序获取所述资源事件,从线程池中获取线程处理所述资源事件;s234:判断所述资源事件是否处理成功,若是,进入步骤s236,若否,进入步骤s235;s235:更新所述资源事件的创建时间为当前时间,将所述资源事件的重试次数+1,将所述资源事件添加到所述动态优先级队列中;s236:判断所述动态优先级队列是否停止服务,若否跳转步骤s231,否则结束流程。
8.一种用于执行如权利要求1-7所述的基于动态优先级解决vpc-agent网络配置生效慢的方法的基于动态优先级解决vpc-agent网络配置生效慢的系统,其特征在于,包括:优先级队列建立模块,用于建立用于存储所有资源事件的动态优先级队列;优先级队列执行模块,用于提供给所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。9.一种计算机设备,包括存储器和一个或多个处理器,所述存储器中存储有计算机代码,所述计算机代码被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1至7中任一项所述的方法。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如权利要求1至7中任一项所述的方法被执行。
技术总结
本发明涉及虚拟网络实现技术领域,提供了一种基于动态优先级解决Vpc-agent网络配置生效慢的方法,包括以下步骤:S1:建立用于存储所有资源事件的动态优先级队列;S2:所述动态优先级队列并发执行包括向所述动态优先级队列添加所述资源事件、周期性更新所述动态优先级队列中所述资源事件的优先级、按照优先级从所述动态优先级队列中获取所述资源事件并获取线程池中的线程对所述资源事件进行处理在内的操作。通过动态优先级队列的方式,实现了etc dwatcher触发的事件,即用户操作的资源变更,能够及时得到处理,不需要等待其他低优先级事件完全处理完,比如周期同步触发的事件。比如周期同步触发的事件。比如周期同步触发的事件。
技术研发人员:李美云 徐文豪 王弘毅 张凯
受保护的技术使用者:北京志凌海纳科技有限公司
技术研发日:2023.05.10
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/