一种基于分布式事务的Qos带宽分配的方法和装置与流程

文档序号:33479987发布日期:2023-03-15 11:50阅读:113来源:国知局
一种基于分布式事务的Qos带宽分配的方法和装置与流程
一种基于分布式事务的qos带宽分配的方法和装置
技术领域
1.本发明涉及网络管理领域,特别是涉及一种基于分布式事务的qos带宽分配的方法和装置。


背景技术:

2.随着互联网广泛而深入的应用,各种计算技术和网络技术不断推陈出现,分布式技术也应运而生。目前,电信网络管理系统也普遍采用分布式技术,亦即按照不同层次和功能,将业务分割成不同的应用,将这些应用分别部署到不同的物理节点上。
3.分布式的电信网管系统管理业务数据时,必定会出现跨多个物理节点、跨多个应用服务、跨多个数据库的情景,为了保证业务数据的一致性和完整性,分布式事务是最常用的一种机制。分布式事务提供一种机制将一个活动所涉及的所有操作纳入一个不可分割的执行单元。在分布式系统中,传统事务无法通过数据库提供的服务直接保证分布式系统内的所有操作不可分割,需要使用分布式事务进行数据一致性的保证。分布式事务可以有效保证所有操作均能执行的情况下同时提交,只要其中任意一个操作执行失败,分布式事务将回滚所有操作。
4.电信分组传输网有不同的业务层次,如vp层、vc层以及客户层vpn等,每一层次业务都有服务质量(quality of service,简写为qos)带宽控制,业务带宽的需求最终转化为其所经过的物理端口的qos带宽需求。当网管创建满足用户带宽要求的业务时,若所经过的物理端口能够分配出满足用户要求的带宽,则创建成功,反之失败。在分布式事务环境下,电信业务管理涉及到多节点、多服务、多进程、多数据库,如果并发创建n条业务,且均经过相同的物理端口,此时,为每一条业务所经的物理端口分配带宽时,按照先来先服务的策略按序依次锁定物理端口,这个过程是串行执行的,极端情况下,第n条业务由于分配不到足够的带宽而失败,却等待了前(n-1)条业务的带宽分配时间,这种分配策略极大降低了并发的效率。
5.鉴于此,如何克服现有技术所存在的缺陷,解决分布式事务qos带宽分配串行锁定物理端口导致的并发效率降低的现象,是本技术领域待解决的问题。


技术实现要素:

6.针对现有技术的以上缺陷或改进需求,本发明解决了分布式事务qos带宽分配串行锁定物理端口导致的并发效率降低的问题。
7.本发明实施例采用如下技术方案:
8.第一方面,本发明提供了一种基于分布式事务的qos带宽分配的方法,具体为:初始化端口,加载业务使用的所有物理端口的qos带宽参数,其中,带宽参数包括端口总带宽、已使用带宽和预分配带宽;分布式事务发起物理端口带宽请求,计算待分配的增量带宽,将带宽分配作为分布式事务的一个操作与分布式事务相关联;更新端口的已使用带宽值和预分配带宽值,并同步持久化,提交分布式事务并执行。
9.优选的,方法还包括:当分布式事务发起请求时,每个分布式事务所需的每个资源端口单独加锁;增量带宽分配完成后,在分布式事务执行阶段,端口资源解除加锁。
10.优选的,计算待分配的增量带宽,具体包括:当分布式事务为分配带宽时,计算分布式事务需要预先分配的带宽;
11.当分布式事务为释放带宽时,计算待释放的增量带宽。
12.优选的,将带宽分配作为分布式事务的一个操作与分布式事务相关联,具体包括:将分配带宽或释放带宽视作分布式事务的一个操作,与分布式事务建立关联关系,在事务提交时被一起执行。
13.优选的,计算待分配的增量带宽,具体包括:根据用户设置业务qos的cir值,计算需要分配的端口增量带宽;根据已使用带宽和增量带宽,判断请求的端口的可使用带宽是否满足增量带宽需求;若满足增量带宽需求,预先分配增量带宽,更新缓存中的预分配带宽值;若不满足增量带宽需求,分配失败,向请求分配的分布式事务返回错误。
14.优选的,更新缓存中端口的已使用带宽值和预分配带宽值,具体包括:当分配带宽时,申请阶段端口的预分配带宽值累加分布式事务关联的增量带宽值,提交事务阶段端口的已使用带宽值累加分布式事务关联的增量带宽值,端口的预分配带宽值减去分布式事务关联的增量带宽值,同时持久化带宽数据;当释放带宽时,申请阶段无需更新缓存中的端口数据,提交事务阶段端口的已使用带宽值减去分布式事务关联的增量带宽值,同时持久化带宽数据。
15.优选的,当分布式事务为提交时,具体包括:当分配带宽时,分布式事务提交,更新缓存中端口的已使用带宽和预分配带宽,并持久化;当释放带宽时,分布式事务提交,只更新缓存中端口的已使用带宽,并持久化。
16.优选的,当分布式事务为回滚时,还包括当分配带宽时,分布式事务回滚,将预分配带宽的值更新为当前预分配带宽减去增量带宽的结果,数据不持久化;当释放带宽时,分布式事务回滚,不更新端口已使用带宽和预分配带宽,数据不持久化。
17.优选的,分布式事务发起物理端口带宽请求,还包括:当用户创建、删除或修改业务时,分布式事务发起物理端口带宽请求。带宽分配和带宽释放分为两个阶段:申请阶段,对于带宽分配而言,就是是预分配带宽阶段,对于带宽释放而言,就是生成待释放的增量带宽;提交阶段(或回滚),分布式事务提交,确认缓存数据的更新,并持久化。
18.另一方面,本发明提供了一种基于分布式事务的qos带宽分配的装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的基于分布式事务的qos带宽分配的方法。
19.与现有技术相比,本发明实施例的有益效果在于:通过预分配增量带宽,并将带宽分配与分布式事务进行关联,减小了端口资源的锁定粒度,通过增量分配qos带宽的方法,在保证事务的完整、一致的同时,显著提高了分配带宽的效率,进而极大地提升了分布式事务环境中管理业务的并发能力,满足了用户的性能需求。
附图说明
20.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使
用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为本发明实施例提供的一种基于分布式事务的qos带宽分配的方法流程图;
22.图2为本发明实施例提供的另一种基于分布式事务的qos带宽分配的方法流程图;
23.图3为现有qos带宽分配过程时序示意图;
24.图4为本发明实施例提供的qos带宽分配过程时序示意图;
25.图5为本发明实施例提供的一种基于分布式事务的qos带宽分配的装置结构示意图;
26.其中,附图标记如下:
27.11:处理器;12:存储器。
具体实施方式
28.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
29.本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
30.此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
31.实施例1:
32.为了解决现有分布式事务环境下带宽分配时并发效率低的问题,在分布式事务的环境中,在保证业务数据的完整性、一致性的前提下,提升业务qos带宽的分配效率,满足用户管理业务的性能需求,本实施例提供了一种基于分布式事务的qos带宽分配的方法。
33.如图1所示,本发明实施例提供的基于分布式事务的qos带宽分配的方法具体步骤如下。
34.步骤101:初始化端口,加载业务使用的所有物理端口的qos带宽参数,其中,带宽参数包括端口总带宽(端口速率)、已使用带宽和预分配带宽。
35.为了进行带宽分配,需要对物理端口进行初始化,并获取可用的物理端口的qos带宽参数。具体的,为分布式事务分配端口qos带宽时,首先获取以下信息:
36.1、端口的总带宽;
37.2、端口的已使用带宽;
38.3、端口的预分配带宽。
39.端口总带宽等不会发生变动的硬件基础可以在初次获取后写入缓存中,或写入数据库等持久化存储中,在初始化或需要使用时加载到缓存中,以便快速查找和分配端口带宽。
40.本实施例中,采用预分配的方式为每个分布式事务分配qos带宽,每个端口记录自身的已使用带宽和预分配带宽,已使用带宽和预分配带宽之和的最大值等于总带宽。已使用带宽和预分配带宽的值会根据每个分布式事务的请求和释放而发生变化,因此也可以加
载至缓存中提高数据读写效率。
41.步骤102:分布式事务发起物理端口带宽请求,计算待分配的增量带宽,将带宽分配作为分布式事务的一个操作与分布式事务相关联。
42.本实施例提供的方法,将带宽的请求和实际分配进行分离,在分布式事务发起宽带请求的时候进行带宽的预分配,为每个分布式事务预留所需的带宽,避免多个分布式事务之间的冲突。
43.开始一个分布式事务ta时,向qos带宽管控模块发起物理端口pa带宽请求ra。计算带宽,生成待分配的增量带宽ba,并将增量带宽ba计入该端口的预分配带宽。具体实施中,当用户创建、删除或修改业务时,使用的带宽会发生变化,需要进行带宽请求,此时分布式事务发起物理端口带宽请求。
44.当存在多个分布式事务时,为了避免带宽预分配时出现冲突,当分布式事务发起请求时,每个分布式事务所需的每个资源端口单独加锁,避免在计算和分配增量带宽ba期间端口的可使用带宽资源发生变化,造成业务分配不到足够的带宽,同时减小了锁的粒度,与现有的方法相比,一次锁定的资源对象从所有需求的端口变为一个端口。
45.步骤103:更新端口的已使用带宽值和预分配带宽值,并同步持久化,提交分布式事务并执行。
46.进行带宽预分配后,将预分配的带宽作为分布式业务的一个操作进行提交,将分配的增量带宽与分布式业务相关联,已进行预分配的增量带宽在业务逻辑上视为物理上已使用。在分布式事务提交时,根据关联的增量带宽值为分布式事务实际分配带宽;在分布式事务执行完成后,根据关联的增量带宽值释放相应的带宽。
47.在实际实施中,还需要判断分布式事务ta是提交还是回滚。若是提交,则需要使用分配的带宽,根据分布式事务ta关联的增量带宽ba为分布式事务进行带宽分配;若是回滚,则无需使用带宽,撤掉端口的预分配的增量带宽ba,不进行实际分配。
48.对于提交的分布式事务,还需要进一步判断带宽请求ra的类型是分配带宽还是释放带宽。释放带宽和分配带宽都是带宽使用值的变化,因此释放带宽可以视为分配带宽的一种特殊形式。当分布式事务为分配带宽时,表示需要增加带宽分配,为分布式事务进行带宽分配。当分布式事务为释放带宽时,表示需要减少带宽分配,生成待释放的增量带宽,但是不需要更改已使用带宽值和预分配带宽值,避免因回滚造成的带宽值不一致。
49.在步骤103的过程中,已使用带宽、预分配带宽和剩余带宽的数值已确定,端口再接收带宽分配申请也不会造成冲突,为了减少对端口资源的占用,在步骤102中增量带宽分配完成后,在步骤103及其之后的分布式事务执行阶段,端口资源解除加锁。
50.完成实际的分配后,还需要更新缓存中端口的已使用带宽值和预分配带宽值,将已分配给分布式事务进行持续使用的带宽由预分配带宽转为已使用带宽,并同步持久化,以便后续使用。
51.经过本实施例中提供的步骤101-步骤103后,即可将带宽的请求和带宽的实际分配进行分离,使端口仅需在带宽请求期间锁定,而在分布式事务的执行阶段无需进行锁定,使得多个分布式事务在共同使用多个端口资源时可以并行执行,提高了执行效率。
52.在本实施例提供的方法中,带宽分配和带宽释放都分为两个阶段:(1)申请阶段,对于带宽分配而言,就是预分配带宽,对于带宽释放而言,就是生成待释放的增量带宽,本
阶段仅进行数值计算,不进行实际的带宽变化。(2)提交阶段(或回滚),分布式事务提交,确认缓存数据的更新,并持久化,本阶段根据申请阶段计算的数值进行实际的带宽变化。在实际实施中,申请阶段需要判断是否有足够的资源进行分配,并会产生资源数值的变化,因此仅在申请阶段需要对端口资源进行加锁,以避免使用脏数据或发生冲突。而在提交阶段,资源分配数值不会发生变化,因此无需加锁。
53.分布式事务发起物理端口带宽请求时,业务调用分配qos带宽的接口,并向接口传入开启的分布式事务对象信息,分布式事务对象信息中包含分配带宽或释放带宽的操作。实际实施中,为了提高,可以使用接口的形式提供对外服务,接收分布式事务的带宽分配或者释放请求。接口应包含当前事务对象信息,如:创建业务调用分配所需qos带宽的接口、以及开启的分布式事务对象信息。接口可以是本地调用形式的、也可以是远程调用形式的,分布式事务机制对这两种形式均能够支持。
54.实际实施中,为了将带宽分配作为分布式事务的一个操作与分布式事务相关联,将分配带宽或释放带宽视作分布式事务的一个操作,与分布式事务建立关联关系,在事务提交时被一起执行。分布式事务提起带宽申请时,判断带宽请求ra的类别,是分配带宽,还是释放带宽。分配带宽和释放带宽在处理策略上没有本质区别,分配带宽是增加已使用带宽,释放带宽则相反,是减少已使用带宽。释放带宽可以看作是分配带宽的一个特例。无论分配带宽,还是释放带宽,都视作当前事务的一个操作,并与当前事务建立关联关系,以便事务提交时,被一起执行。
55.在实际实施中,如图2所示,可以使用以下步骤计算步骤102中待分配的增量带宽,并完成带宽的预分配。
56.步骤201:根据用户设置业务qos的用户指定带宽速率(cir)值,计算需要分配的端口增量带宽。
57.当带宽请求服务ra为分配带宽时,根据用户设置业务qos的cir值,计算出需要分配的端口增量带宽ba。当带宽请求服务ra为释放带宽时,根据用户设置业务qos的cir值,计算出需要释放的端口增量带宽ba。
58.步骤202:根据已使用带宽和增量带宽,判断请求的端口的可使用带宽是否满足增量带宽需求。
59.判断端口是否有可用的剩余带宽,若端口的总带宽tb,已使用带宽usedcir,那么满足带宽需求的判断公式为:tb》=usedcir+ba。若符合该公式,表示还有剩余的可供分配的带宽值。若不符合该公式,增量带宽多于剩余带宽,表示可供分配的带宽值不足。
60.步骤203:若满足增量带宽需求,预先分配增量带宽,更新缓存中的预分配带宽值。
61.预先分配增量带宽,更新缓存中的预分配带宽值。在实际实施中,步骤201和步骤202是原子操作不可分割。否则,并发条件下可能会因并发的事务改变了usedcir值而造成现有剩余带宽与判断时的剩余带宽不同,因读取脏数据而被错误修改可用带宽。增量带宽的预分配,属于当前的分布式事务范围内的操作。
62.步骤204:若不满足增量带宽需求,分配失败,向请求分配的分布式事务返回错误。
63.端口的带宽不足时,无法响应分布式事务的带宽分配请求,返回错误的信息,调用者回滚分布式事务。调用者回滚事务时,由于还未实际分配物理带宽,因此只需将预分配带宽值减去本次分配的增量带宽值,亦即撤销本次预先分配的增量带宽值。
64.经过本实施例中提供的步骤201-步骤204后,即可完成增量带宽的计算和预分配。
65.进行带宽预分配后,更新缓存中端口的已使用带宽值和预分配带宽值,使下一个分布式事务申请带宽时准确获得当前端口的可用带宽。当申请分配带宽时,申请阶段实质是计算是否有可用的带宽。并预先分配带宽,增加本次分配的增量带宽值,调用者提交事务时,端口的已使用带宽值累加该事务关联的增量带宽值,并且预分配带宽减去本次增量带宽值,同时持久化带宽数据。当申请释放带宽时,申请阶段无需更新已使用带宽和预分配带宽,因为如果此时已使用带宽释放了增量带宽,其他事务申请分配相等的增量带宽会成功,但是申请释放带宽的事务回滚时,会出现端口的已使用带宽超过上限的错误情况。因此,释放带宽只需在提交事务时更新已使用带宽。对于释放带宽情景,调用者提交事务时,端口的已使用带宽值减去该事务关联的增量带宽值,同时持久化带宽数据。
66.以下使用实际场景中的实例对比现有的带宽分配方式与本实施例提供的带宽分配方式的不同。
67.在某个实际场景中,并发创建三条业务a、b、c,对应每个业务开启三个分布式事务ta、tb、tc,三条业务均从端口(porta、portb、portc、portd)分配qos带宽。
68.如图3所示,现有的分配方法中,创建一条业务时,首先一次性请求锁定所有端口资源(lock),然后从端口分配所需的qos带宽,作为已使用带宽,最后提交端口已使用带宽(commit),释放端口资源(unlock)。根据该分配方法,假如三条业务请求锁定端口资源的顺序为a、b、c,事务ta从t1~t5时刻锁定端口资源,分配qos带宽,t6时刻提交端口已使用带宽,t7解锁端口资源。也就是说,从t1至t7的时间段,事务ta独占端口资源,事务tb和tc需要一直等待端口资源释放,三条业务分配qos带宽总耗时:t19-t1。删除业务时,要释放端口带宽,也与上述过程类似。上述的分配方法实际上是串行的,并发的业务量越大,其性能越差,严重降低了管理(创建、删除、修改)业务的效率,难以满足用户需求。
69.如图4所示,本实施例提供的qos带宽分配方法中,首先根据步骤101获取端口的带宽参数。创建三条业务a、b、c时,开启分布式事务ta、tb、tc,根据步骤102发起带宽请求并预分配带宽。事务ta分配带宽锁定端口资源(porta、portb、portc、portd)的时间段分别为(t1~t2)、(t2~t3)、(t3~t4)、(t4~t5),事务tb锁定端口资源的时间段分别为(t2~t3)、(t3~t4)、(t4~t5)、(t5~t6),事务tc锁定端口资源的时间段分别为(t3~t4)、(t4~t5)、(t5~t6)、(t6~t7)。再根据步骤103提交事务并执行,其中执行(commit)阶段不用加锁,各自提交事务的增量带宽即可。三条业务分配qos带宽总耗时为:t7-t1。
70.与现有方法相比,本实施例提供的方法开启分布式事务的管理业务应用请求分配qos带宽时,无须一次性锁定所需的端口资源,每个端口单独加锁,增量分配带宽,操作的粒度更加细小精确。对比两者的端口资源的分配带宽总耗时,前者总耗时t19-t1,后者总耗时t7-t1,前者比后者多耗时为t19-t7。
71.在实际实施中,本实施例提供的方法可根据需要作为独立服务进程,亦可放到其他服务进程里面,都能完成以上描述的全部功能。
72.本实施例提供的基于分布式事务的qos带宽分配的方法,减小了端口资源的锁定粒度,采用增量分配qos带宽的方法,在保证事务的完整、一致的同时,显著提高了分配带宽的效率,进而极大地提升了分布式事务环境中管理业务的并发能力,满足了用户的性能需求。
73.实施例2:
74.在上述实施例1提供的基于分布式事务的qos带宽分配的方法的基础上,本发明还提供了一种可用于实现上述方法的基于分布式事务的qos带宽分配的装置,如图基于分布式事务的qos带宽分配所示,是本发明实施例的装置架构示意图。本实施例的基于分布式事务的qos带宽分配的装置包括一个或多个处理器11以及存储器12。其中,图5中以一个处理器11为例。
75.处理器11和存储器12可以通过总线或者其他方式连接,图5中以通过总线连接为例。
76.存储器12作为一种基于分布式事务的qos带宽分配方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的基于分布式事务的qos带宽分配方法。处理器11通过运行存储在存储器12中的非易失性软件程序、指令以及模块,从而执行基于分布式事务的qos带宽分配的装置的各种功能应用以及数据处理,即实现实施例1的基于分布式事务的qos带宽分配的方法。
77.存储器12可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器12可选包括相对于处理器11远程设置的存储器,这些远程存储器可以通过网络连接至处理器11。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
78.程序指令/模块存储在存储器12中,当被一个或者多个处理器11执行时,执行上述实施例1中的基于分布式事务的qos带宽分配的方法,例如,执行以上描述的图1和图2所示的各个步骤。
79.本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(read only memory,简写为:rom)、随机存取存储器(random access memory,简写为:ram)、磁盘或光盘等。
80.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1