一种大规模数据分发系统运行时自适应优化方法转让专利

申请号 : CN201610832033.1

文献号 : CN106375328B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 史佩昌刘惠丁博史殿习姜龙泉李艺颖

申请人 : 中国人民解放军国防科学技术大学

摘要 :

本发明公开了一种大规模数据分发系统运行时自适应优化方法,目的是提供一种使得大规模数据分发系统能够稳定运行的优化方法。技术方案是,先构建大规模数据分发系统运行时自适应优化系统,在边缘节点上部署数据分发子系统和监控代理,在中心计算节点上部署数据汇集器和自适应优化系统;通过自适应优化系统的资源分类模块、性能阈值模块和优化策略生成模块,产生优化策略,形成优化策略库;任意边缘节点上数据分发子系统从优化策略库获取优化策略,采用优化策略在本边缘节点上实施优化。采用本发明可生成大规模分发系统故障的优化策略,根据运行时状态采用相应优化策略可以自动修复绝大多数故障,使得大规模数据分发系统稳定运行。

权利要求 :

1.一种大规模数据分发系统运行时自适应优化方法,其特征在于包括以下步骤:

第一步,构建大规模数据分发系统运行时自适应优化系统,它由m个数据分发子系统、m个监控代理、一个数据汇集器和一个自适应优化系统组成;数据分发子系统运行在边缘节点上,监控代理运行在安装了数据分发子系统的边缘节点上,数据汇集器和自适应优化系统分别运行在可独立运行的中心计算节点上,运行监控代理和数据分发子系统的边缘节点、数据汇集器和自适应优化系统三者之间通过互联网相互交互;边缘节点、中心计算节点均是服务器或微机,m≥1,m是整数;

监控代理是运行在边缘节点上的软件,与数据分发子系统和数据汇集器相连;每个监控代理从本计算机节点的日志中采集CPU利用率、内存利用率、磁盘利用率三种数据,并把采集的数据转给数据汇集器;CPU利用率指数据分发子系统运行时所占用的CPU资源,代表该系统实时的运行情况;内存利用率指数据分发子系统运行时开启的进程所占用的内存;

磁盘利用率指数据分发子系统所开销存储磁盘的空间;

数据汇集器是运行在中心计算节点上的软件,与m个监控代理和自适应优化系统相连;

数据汇集器以监控代理采集数据的命令为标识,汇集CPU利用率、内存利用率、磁盘利用率三类数据,同时分别打上标签,即CPU利用率加上标签class1、内存利用率加上标签class2、磁盘利用率加上标签class3,然后推送给自适应优化系统;

自适应优化系统是运行在中心计算节点上的一个软件系统,由资源分类模块、性能阈值模块、优化参数生成模块、优化策略生成模块、优化策略库组成;

资源分类模块是由标签过滤器和p个分类器组成的软件模块,所述p≥1,p是整数;标签过滤器对从数据汇集器收到的CPU利用率、内存利用率和磁盘利用率三类数据进行过滤处理,将带标签class1的CPU利用率、带标签class2的内存利用率和带标签class3的磁盘利用率混合数据依次发送给分类器;每个分类器对从标签过滤器接收的带标签class1的CPU利用率、带标签class2的内存利用率和带标签class3的磁盘利用率混合数据,按标签class1、class2、class3进行分离,得到实时CPU利用率、实时内存利用率和实时磁盘利用率,并将实时CPU利用率、实时内存利用率和实时磁盘利用率发送给优化参数生成模块;

性能阈值模块是设置实时CPU利用率阈值Vcpu、实时内存利用率阈值Vmem和实时磁盘利用率阈值Vdisk的软件模块,并将这3个阈值发送给优化参数生成模块;

优化参数生成模块是判断实时CPU利用率、实时内存利用率和实时磁盘利用率是否分别超过Vcpu、Vmem、Vdisk的软件模块;如果实时CPU利用率、实时内存利用率和实时磁盘利用率中有任意一个超过其对应阈值,就生成相应的优化参数,并将优化参数推送给优化策略生成模块;CPU利用率不能达标,向优化策略生成模块推送优化CPU参数Index1;如果内存利用率不达标,向优化策略生成模块推送优化内存参数Index2;如果磁盘利用率不达标,向优化策略生成模块推送优化磁盘参数Index3;

优化策略生成模块与优化参数生成模块和优化策略库相连,根据待优化参数类型Index1、Index2、Index3分别从并发用户数、响应时间、吞吐率三个方面形成优化策略,并将优化策略推送给优化策略库;

并发用户数指在同一时刻,同时访问大规模数据分发系统的用户数;响应时间指用户从向大规模数据分发系统发出业务请求时开始,到得到系统作出相应的结果所消耗的时间;响应时间又分为呈现时间,数据传输时间和系统处理时间三个部分,呈现时间指浏览器对数据的处理展现过程所需时间,数据传输时间包括用户发出业务请求到系统接收到该请求,以及系统处理完后返回结果给用户所需要的时间总和,系统处理时间指系统得到请求后处理完业务请求所需要的时间;吞吐率指大规模数据分发系统在单位时间内处理用户请求的数量;

优化策略库与优化策略生成模块和m个数据分发子系统相连,是存储优化策略的数据库,供边缘节点上数据分发子系统访问;

第二步,每个边缘节点上的数据分发子系统以日志的形式记录其运行时的相关数据,监控代理采集所属边缘节点上的日志数据,并推送给数据汇集器;数据汇集器汇集m个监控代理传来的日志数据,并推送给自适应优化系统;自适应优化系统生成优化策略,形成优化策略库,具体方法是:

2.1每个边缘计算节点上的数据分发子系统启动,初始化时间变量T=0,初始化分类器编号pp=1;性能阈值模块把实时CPU利用率阈值Vcpu、实时内存利用率阈值Vmem和实时磁盘利用率阈值Vdisk三类阈值推送给优化参数生成模块;

2.2每个边缘计算节点上的数据分发子系统向日志文件log.log中写入当前时刻数据分发子系统的状态数据;

2.3m个监控代理从所属边缘节点上数据分发子系统生成的日志文件采集CPU利用率、内存利用率、磁盘利用率三种数据,并将这三类数据推送给数据汇集器;

2.4数据汇集器从m个监控代理接收CPU利用率、内存利用率、磁盘利用率三类数据,并为CPU利用率数据打上class1标签,为内存利用率数据打上class2标签,为磁盘利用率数据打上class3标签,然后把打上了标签的CPU利用率、内存利用率、磁盘利用率的混合数据推送给自适应优化系统;

2.5自适应优化系统接收带标签class1的CPU利用率、带标签class2的内存利用率和带标签的class3的磁盘利用率三类数据,通过资源分类模块、性能阈值模块、优化参数生成模块、优化策略生成模块,产生优化策略,形成优化策略库,具体步骤如下:

2.5.1资源分类模块对带标签的CPU利用率、内存利用率、磁盘利用率混合数据进行分类,形成实时CPU利用率、实时内存利用率、实时磁盘利用率三类数据,方法是:2.5.1.1标签过滤器接收带标签的CPU利用率、内存利用率、磁盘利用率混合数据,把混合数据分派给分类器pp;

2.5.1.2分类器pp从标签过滤器中接收含有标签的CPU利用率、内存利用率、磁盘利用率混合数据,然后按标签类型输出带class1标签的实时CPU利用率、带class2标签的实时内存利用率、带class3标签的实时磁盘利用率三种类型的数据,并把带class1标签的实时CPU利用率、带class2标签的实时内存利用率、带class3标签的实时磁盘利用率的数据推送给优化参数生成模块;

2.5.2优化参数生成模块从分类器pp接收带标签class1的实时CPU利用率、带标签class2的实时内存利用率、带标签class3的实时磁盘利用率,根据从性能阈值模块接收的实时CPU利用率阈值、实时内存利用率阈值和实时磁盘利用率阈值,进行CPU、内存和磁盘利用率阈值的判断,得到需要优化的参数,并把需要优化的参数推送给优化策略生成模块,具体步骤如下:

2.5.2.1判断带标签class1的实时CPU利用率是否超过CPU利用率阈值,如果带标签class1的实时CPU利用率超过CPU利用率阈值,则生成优化CPU参数Index1,并把Index1推送给优化策略生成模块,转步骤2.5.3;如果带标签class1的实时CPU利用率没有超过CPU利用率阈值,则执行步骤2.5.2.2;

2.5.2.2判断带标签class2的实时内存利用率是否超过内存利用率阈值,如果带标签class2的实时内存利用率超过内存利用率阈值,则生成优化内存参数Index2,并把Index2推送给优化策略生成模块,转步骤2.5.3;如果带标签class2的实时内存利用率没有超过内存利用率阈值,则执行步骤2.5.2.3;

2.5.2.3判断带标签class3的实时磁盘利用率是否超过磁盘利用率阈值,如果带标签class3的实时内存利用率超过磁盘利用率阈值,则生成优化磁盘参数Index3,并把Index3推送给优化策略生成模块,转步骤2.5.3;如果带标签class3的实时内存利用率没有超过磁盘利用率阈值,则转步骤2.6;

2.5.3优化策略生成模块从优化参数生成模块接收Index1、Index2和Index3,根据优化参数类型,从用户并发数、响应时间、吞吐率三个方面生成优化策略,具体步骤如下:

2.5.3.1如果优化参数类型是Index1,则执行步骤2.5.3.1.1;如果优化参数类型是Index2,则执行步骤2.5.3.1.2;如果标签类型是Index3,则执行步骤2.5.3.1.3;

2.5.3.1.1从优化参数类型Index1中获取需要优化的边缘节点的IP地址Address1,并向Address1发送优化指令,然后生成CPU利用率优化策略,具体方法是:

2.5.3.1.1.1若Address1上数据分发子系统有大量的并发用户数,则生成第一优化策略为:按逐步增加一个节点的原则增加j个边缘节点,且新增的j个边缘计算节点上均安装数据分发子系统,并把address1上用户的请求业务平均分配给新增的j个数据分发子系统,由新增的j个数据分发子系统来处理,降低Address1上数据分发子系统处理的并发业务量,j是正整数,j要满足当添加j个节点后,数据分发子系统运行正常,即Address1节点的CPU利用率不超过阈值;将第一优化策略发送给优化策略库,转2.5.4;

2.5.3.1.1.2若Address1上数据分发子系统的响应时间慢,则生成第二优化策略为:把Address1上数据分发子系统正在处理的业务分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘节点处理,将第二优化策略发送给优化策略库,转

2.5.4;

2.5.3.1.1.3若Address1上数据分发子系统吞吐率低,则生成第三优化策略为增大线程数,提高其并发处理业务的能力,将第三优化策略发送给优化策略库,转2.5.4;

2.5.3.1.2从优化参数类型Index2中获取需要优化的边缘节点的IP地址Address2,并向Address2发送优化指令,然后生成优化策略,具体方法如下:

2.5.3.1.2.1若Address2上数据分发子系统有大量的并发用户数,则生成第四优化策略为动态增加该数据分发子系统能使用的内存,将第四优化策略发送给优化策略库,转

2.5.4;

2.5.3.1.2.2若Address2上数据分发子系统的响应时间慢,则生成第五优化策略为:把该数据分发子系统正在处理的业务重新分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘节点处理,将第五优化策略发送给优化策略库,转2.5.4;

2.5.3.1.2.3若Address2上数据分发子系统吞吐率低,则生成第六优化策略为:新增1个边缘节点,把Address2上吞吐率低的数据分发子系统的业务动态转移到新增的边缘节点的数据分发子系统上,由新增的边缘节点的数据分发子系统处理,将第六优化策略发送给优化策略库,转2.5.4;

2.5.3.1.3从优化参数类型Index3中获取需要优化的边缘节点的IP地址Address3,并向Address1发送优化指令,具体方法如下:若Address3上数据分发子系统出现大量并发用户数或响应时间慢或吞吐率低,则生成第七优化策略为对该边缘节点增大数据分发子系统所能使用的磁盘容量,将第七优化策略发送给优化策略库,转2.5.4;

2.5.4优化策略库从优化策略生成模块接收优化策略,若该种优化策略在数据库中已经存在,直接转2.6;如果该种优化策略在数据库中不存在,把该优化策略存入数据库,供数据分发子系统读取,转2.6;

2.6令T=T+t,t的默认值为10min,通过系统配置文件可以修改,令pp=pp+1,如果pp>p,则令pp=1;如果T>TT,TT是生成优化策略的数据提取时限,TT大于等于24*60分钟,转第三步;否则,转2.2,继续生成优化策略;

第三步大规模数据分发系统运行时自适应优化系统进行自适应优化,m个边缘节点上的数据分发子系统并行进行自适应优化,当任意边缘节点上数据分发子系统需要优化时,该边缘节点上的数据分发子系统从优化策略库获取优化策略,实现自适应优化,其中第n个边缘节点的数据分发子系统优化实施过程如下,1≤n≤m,n通过IP地址进行区分:

3.1初始化第二时间变量T2=0;

3.2第n个边缘节点的数据分发子系统在第n个边缘节点上产生日志数据;

3.3第n个边缘节点上的监控代理从第n个边缘节点的日志数据中,采集数据分发系统运行时的状态信息数据,并推送给数据汇集器;

3.4数据汇集器接收到第n个监控代理推送的数据后,把数据推送给自适应优化系统;

3.5自适应优化系统判定第n个边缘节点的数据分发子系统是否出现CPU利用率超过CPU利用率阈值、内存利用率超过内存利用率阈值或磁盘利用率超过磁盘利用率阈值,如果出现这三种情况中任意一种情况,就向第n个边缘节点发送优化指令,转步骤3.6,如果没有,则不向第n个节点发送优化指令,转步骤3.2;

3.6第n个节点的数据分发子系统接收优化指令,向优化策略库发送链接请求,根据优化指令中优化策略类型获取相应优化策略,按照优化策略在第n个节点实施优化;优化完成后,令T2=T2+t,转步骤3.2。

2.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述数据汇集器给CPU利用率、内存利用率、磁盘利用率三类数据打标签的方法是在每一种类型数据末尾以字符的形式加上类型标识。

3.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述资源分类模块中分类器的个数p的值由标签过滤器推送的数据量大小和对数据分类的实时性要求来决定,当数据量和要求的实时性越高时,p的值就越大。

4.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述资源分类模块中分类器的个数p等于3。

5.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述性能阈值模块设置Vcpu、Vmem和Vdisk,其中Vcpu≤75%、Vmem≤85%、Vdisk≤80%。

6.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述优化指令中包含指令类别、优化策略类型两个域,指令类别指优化指令的类别,共7种,优化策略类型指优化策略的种类,共7种,一种优化指令对应一种优化策略,指令类别为i的优化指令对应第i优化策略,1≤i≤7。

7.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述第三优化策略中增大线程数的方法:Address1上数据分发子系统加载本边缘节点的系统配置文件,修改处理业务的线程数配置项,将线程数扩大为当前线程数值的一倍,且值能超过1024。

8.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述第四优化策略中增加数据分发子系统能使用内存的内存大小是Address2当前内存的

1/4。

9.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述第七优化策略中对边缘节点增大数据分发子系统所能使用磁盘容量的大小是该边缘节点磁盘容量的1/4。

10.如权利要求1所述的一种大规模数据分发系统运行时自适应优化方法,其特征在于所述TT取值为7*24*60分钟。

说明书 :

一种大规模数据分发系统运行时自适应优化方法

技术领域

[0001] 本发明涉及分布式软件系统优化领域,具体涉及一种面向大规模数据分发系统的实时优化方法。

背景技术

[0002] 网络技术的发展,为大规模面向分发的应用提供了源动力,将计算技术拓展到整个人类生存和生活的空间,将物理世界网络化,实现物理空间与网络空间的深度融合是未来网络发展的重要趋势。大规模数据分发系统是互联网发展的产物,大规模数据分发系统是大规模的、分布于不同地理位置服务器节点上的系统,为大量终端用户提供服务。据统计,2020年将有千亿量级的多样化终端接入于互联网络系统中;2011年全球经过网络分发的数据总量为1.8ZB(1021),而2011年至2015年前整个互联网流量在以年均复合增长率(Compound Average Growth Rate,CAGR)32%的速度指数增长;因此,大规模数据分发系统在大数据时代扮演着非常重要的角色,其具有多样性、分布性、自治性和异构性等特点,以及用户量的庞大,使得大规模数据分发系统能够为用户提供具有质量保证的服务面临着严峻的现实挑战。
[0003] 自适应是指在处理、分析数据过程中,根据处理数据的数据特征自动调整处理方法、处理顺序、处理参数、边界条件或约束条件,使其与所处理数据的统计分布特征、结构特征相适应,以取得最佳的处理效果。所以,根据大规模数据分发系统产生的海量日志数据,通过优化参数生成模块、优化策略生成模块形成优化策略库,大规模数据分发系统进行实时优化,保障系统提供用户持续可靠的服务。
[0004] 目前,现有研究主要集中于大规模分布式软件系统的运行优化技术。通过对大规模分布式软件系统运行时优化相关技术的分析,可以间接掌握大规模数据分发运行时优化使能技术的发展动态,并可借鉴相关研究思路。马萨诸塞州技术学院Robertson等提出的基于模块诊断进行自适应的框架MBD,卡内基梅隆大学Garlan等提出的自演化软件系统模块Rainbow和MADAM,加州大学欧文分校Taylor等人开发的ArchStudio等。MBD目的是在未来应用中利用对外在上下文的诊断限制适应的复杂性,提高软件的鲁棒性。自适应软件监控自身运转并尝试纠正必需行为的偏离。不论是程序内部错误还是一个嵌入式程序环境的上下文发生了变化,MBD都是通过诊断不正常行为的源头来达到纠正的目的。MBD与传统的离线的、需要人参与的维护不同,它在软件运行时检测改变需求,并实施所需改变。其目的是创建一种能使程序具有理解、监控和修改自身的能力。MBD为每个功能提供一些构件,并给予描述,以便系统的构件可在运行时选择和调度。
[0005] 但是,现有运行时优化技术与大规模数据分发系统的运行时优化相比较来说:现有的运行时优化技术主要针对具体某种资源类型的固有特性,以某种准则,设计相应的资源优化算法,来达到资源优化和效率提高的目的,例如Li Chen等人提出一种基于最大利用率的云计算系统带宽资源调度算法;Anshul Rai等人提出一种基于客户端反馈的CPU计算资源调度算法;Praveena Akki提出一种基于Hungarian方法的云计算存储资源优化算法;Wen-hui LIN等人提出一种基于节点性能的动态存储算法,来实现云计算的存储资源合理调度问题。而大规模数据分发系统的运行时优化侧重于资源调度、业务部署和性能优化,综合实时分析CPU、内存和磁盘的整体使用情况,产生优化策略,动态实施优化,但因为数据量庞大、实时性要求高,需要物理设施具备高性能的计算能力。大规模数据分发系统运行时优化技术属于分布式软件系统演化领域中的可预期型运行时优化,目前,可以采用数据容灾技术、负载均衡技术和双机热备份来提高软件系统的稳定性;数据容灾是为保护数据安全和提高数据的持续可用性,对数据进行异地的备份,当需要时可以及时得到恢复;负载均衡指在多个计算节点中按特定分配算法均衡分配业务给各计算机节点处理,一旦其中一个计算节点出现故障,该故障节点上的业务可由其它活跃计算节点接管完成;双机热备份是用网络把两台服务器连接起来,平时互相备份,共同执行同一服务,当一台服务器出现故障时,可以由双机中的另一台服务器自动将故障服务器的业务接管,从而保证系统能持续提供服务。这些技术在一定程度上可以保障系统的稳定性,但是,这些技术在大规模和要求实时性比较高的系统上实施比较困难,如庞大的数据进行容灾备份需耗的资源代价高,双机热备份不能在服务器变慢时进行优化等。如何使得大规模数据分发系统运行时自适应优化,保障其稳定运行,是分布式软件系统优化技术领域需要解决的技术问题。

发明内容

[0006] 本发明要解决的技术问题是针对大规模数据分发系统,提出一种运行时优化方法,使得大规模数据分发系统能够稳定运行,为用户提供持续可靠的服务。
[0007] 本发明的技术方案是,首先构建大规模数据分发系统运行时自适应优化系统,在边缘节点(离用户最近的计算机节点)上部署数据分发子系统和监控代理,在中心计算节点上部署数据汇集器和自适应优化系统;然后通过自适应优化系统的资源分类模块、性能阈值模块和优化策略生成模块,产生优化策略,形成优化策略库;最后任意边缘节点上数据分发子系统从优化策略库获取优化策略,采用优化策略在本边缘节点上实施优化。
[0008] 本发明包括以下步骤:
[0009] 第一步,构建大规模数据分发系统运行时自适应优化系统,它由m个数据分发子系统(m≥1,m是整数)、m个监控代理、一个数据汇集器和一个自适应优化系统组成。数据分发子系统(为用户提供实时可靠数据分发服务)运行在边缘节点上,监控代理运行在安装了数据分发子系统的边缘节点上,数据汇集器和自适应优化系统分别运行在可独立运行的中心计算节点(即不是离用户最近的计算机节点)上,运行监控代理和数据分发子系统的边缘节点、数据汇集器和自适应优化系统三者之间通过互联网相互交互。边缘节点、中心计算节点均是服务器或微机。
[0010] 监控代理是运行在边缘节点上的软件,与数据分发子系统和数据汇集器相连。每个监控代理从本计算机节点的日志中采集CPU利用率、内存利用率、磁盘利用率三种数据,并把采集的数据转给数据汇集器。CPU利用率指数据分发子系统运行时所占用的CPU资源,代表该系统实时的运行情况;内存利用率指数据分发子系统运行时开启的进程所占用的内存,就CPU利用率和内存利用率的关系来说,占用内存大时不一定会占用很多CPU资源,而占CPU大时也不一定开销很大的内存,系统在运行时,如果占用的CPU过高会影响其他程序的运行,而占用内存过大会影响机器的整体性能;磁盘利用率指数据分发子系统所开销存储磁盘的空间,如果磁盘使用率高达100%,那么系统的运行也就变得缓慢,甚至会崩溃。目前比较成熟的监控代理有Zabbix agent软件、Ganglia软件、Nagios软件等。
[0011] 数据汇集器是运行在中心计算节点上的软件,与m个监控代理和自适应优化系统相连。数据汇集器以监控代理采集数据的命令为标识,汇集CPU利用率、内存利用率、磁盘利用率三类数据,同时分别打上标签(在每一种类型数据末尾以字符的形式加上类型标识,CPU利用率加上class1、内存利用率加上class2、磁盘利用率加上class3),然后推送给自适应优化系统。
[0012] 自适应优化系统是运行在中心计算节点上的一个软件系统,由资源分类模块、性能阈值模块、优化参数生成模块、优化策略生成模块、优化策略库组成。
[0013] 资源分类模块是由标签过滤器和p个分类器(p≥1,p是整数)组成的软件模块,p的值由标签过滤器推送的数据量大小和对数据分类的实时性要求来决定,当数据量和要求的实时性越高时,p的值就越大(根据经验,p一般等于3)。标签过滤器对从数据汇集器收到的CPU利用率、内存利用率和磁盘利用率三类数据进行过滤处理,将带标签class1的CPU利用率、带标签class2的内存利用率和带标签class3的磁盘利用率混合数据依次发送给分类器。每个分类器对从标签过滤器接收的带标签class1的CPU利用率、带标签class2的内存利用率和带标签class3的磁盘利用率混合数据,按标签class1、class2、class3进行分离,得到实时CPU利用率、实时内存利用率和实时磁盘利用率,并将实时CPU利用率、实时内存利用率和实时磁盘利用率发送给优化参数生成模块。
[0014] 性能阈值模块是设置实时CPU利用率阈值Vcpu、实时内存利用率阈值Vmem和实时磁盘利用率阈值Vdisk的软件模块,根据经验值通常设为Vcpu≤75%、Vmem≤85%、Vdisk≤80%,并将这3个阈值发送给优化参数生成模块。
[0015] 优化参数生成模块是判断实时CPU利用率、实时内存利用率和实时磁盘利用率是否分别超过Vcpu、Vmem、Vdisk的软件模块。如果实时CPU利用率、实时内存利用率和实时磁盘利用率中有任意一个超过其对应阈值,就生成相应的优化参数,并将优化参数推送给优化策略生成模块。CPU利用率不能达标,向优化策略生成模块推送优化CPU参数Index1;如果内存利用率不达标,向优化策略生成模块推送优化内存参数Index2;如果磁盘利用率不达标,向优化策略生成模块推送优化磁盘参数Index3。
[0016] 优化策略生成模块与优化参数生成模块和优化策略库相连,根据待优化参数类型Index1、Index2、Index3分别从并发用户数、响应时间、吞吐率三个方面形成优化策略,并将优化策略推送给优化策略库。
[0017] 并发用户数指在同一时刻,同时访问大规模数据分发系统的用户数。并发用户具备的特征是同时与系统进行业务的交互,这种交互可以是单向数据传输,也可以是双向数据传输。软件系统规模的庞大与用户量的急剧增长,使得大规模数据分发系统需要具备实时及时处理大量用户并发请求的能力,如果系统不能承受当前的用户并发数时,应该及时对系统采取优化,例如动态扩展系统规模、扩大系统可用资源等,所以,并发用户数是自适应模块的一个重要输入参数。响应时间指用户从向大规模数据分发系统发出业务请求时开始,到得到系统作出相应的结果所消耗的时间。例如,当用户点击一个按钮或在web页面上点击一个连接,向系统发出一个业务请求指令,从用户点击开始到应用系统把本次业务请求操作的结果返回给用户并展示出来,这个过程所需要的时间就是整个响应时间。响应时间又可以分为呈现时间,数据传输时间和系统处理时间三个部分。呈现时间指浏览器对数据的处理展现过程所需时间,数据传输时间包括用户发出业务请求到系统接收到该请求,以及系统处理完后返回结果给用户所需要的时间总和,系统处理时间指系统得到请求后处理完业务请求所需要的时间;吞吐率指大规模数据分发系统在单位时间内处理用户请求的数量。吞吐率受处理器类型、网络接口卡类型、数据传输总线大小、磁盘速度、内存缓冲器,以及软件系统对这些部件的管理有效程度的影响。
[0018] 若CPU利用率超过阈值,如果任意边缘节点上数据分发子系统有大量的并发用户数,则需要增加边缘节点,扩大数据分发子系统的数量,把该边缘节点上一部分并发用户数分配给新增的数据分发子系统;如果任意边缘节点上数据分发子系统响应时间慢,则把该数据分发子系统正在处理的业务重新分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘计算节点处理;如果任意边缘节点上数据分发子系统吞吐率低,则该数据分发子系统加载本地边缘节点的系统配置文件,修改处理业务的线程数配置项,增大线程数,提高其并发处理业务的能力。
[0019] 若内存利用率超过阈值,如果任意边缘节点上数据分发子系统有大量的并发用户数,则动态增加该数据分发子系统能使用的内存(边缘节点采用虚拟化技术可以管理每个边缘节点上数据分发子系统所能使用的内存,例如Xen虚拟化技术、KVM虚拟化技术等);如果任意边缘节点上数据分发子系统响应时间慢,则把该数据分发子系统正在处理的业务重新分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘计算节点处理;如果任意边缘节点上数据分发子系统吞吐率低,则需要新增边缘节点,把吞吐率低的数据分发子系统的业务动态转移到新增的边缘节点的数据分发子系统上。
[0020] 若磁盘利用率超过阈值,如果任意边缘节点上数据分发子系统出现大量并发用户数或响应时间慢或吞吐率低,则对该边缘节点增大数据分发子系统所能使用的磁盘容量(边缘节点采用虚拟化技术管理,可以动态扩展边缘节点上数据分发子系统所能使用的磁盘容量,例如Xen虚拟化技术、KVM虚拟化技术等)。
[0021] 优化策略库与优化策略生成模块和m个数据分发子系统相连,是存储优化策略的数据库(支持Mysql、Orcle、SQL Server),供边缘节点上数据分发子系统访问。
[0022] 第二步,每个边缘节点上的数据分发子系统以日志的形式记录其运行时的相关数据,监控代理采集所属边缘节点上的日志数据,并推送给数据汇集器;数据汇集器汇集m个监控代理传来的日志数据,并推送给自适应优化系统;自适应优化系统生成优化策略,形成优化策略库。具体方法是:
[0023] 2.1 每个边缘计算节点上的数据分发子系统启动,初始化时间变量T=0,初始化分类器编号pp=1,性能阈值模块把实时CPU利用率阈值Vcpu、实时内存利用率阈值Vmem和实时磁盘利用率阈值Vdisk三类阈值推送给优化参数生成模块,根据经验值通常设为Vcpu≤75%、Vmem≤85%、Vdisk≤80%。
[0024] 2.2 每个边缘计算节点上的数据分发子系统向日志文件log.log中写入当前时刻数据分发子系统的状态数据。
[0025] 2.3 m个监控代理从所属边缘节点上数据分发子系统生成的日志文件采集CPU利用率、内存利用率、磁盘利用率三种数据,并将这三类数据推送给数据汇集器。例如,较成熟的Zabbix agent软件、Ganglia软件、Nagios软件等等都具备采集数据功能。
[0026] 2.4 数据汇集器从m个监控代理接收CPU利用率、内存利用率、磁盘利用率三类数据,并为CPU利用率数据打上class1标签,为内存利用率数据打上class2标签,为磁盘利用率数据打上class3标签,然后把打上了标签的CPU利用率、内存利用率、磁盘利用率的混合数据推送给自适应优化系统。
[0027] 2.5 自适应优化系统接收带标签class1的CPU利用率、带标签class2的内存利用率和带标签的class3的磁盘利用率三类数据,通过资源分类模块、性能阈值模块、优化参数生成模块、优化策略生成模块,产生优化策略,形成优化策略库,具体步骤如下:
[0028] 2.5.1 资源分类模块对带标签的CPU利用率、内存利用率、磁盘利用率混合数据进行分类,形成实时CPU利用率、实时内存利用率、实时磁盘利用率三类数据,方法是:
[0029] 2.5.1.1 标签过滤器接收带标签的CPU利用率、内存利用率、磁盘利用率混合数据,把混合数据分派给分类器pp。
[0030] 2.5.1.2 分类器pp从标签过滤器中接收含有标签的CPU利用率、内存利用率、磁盘利用率混合数据,然后按标签类型输出带class1标签的实时CPU利用率、带class2标签的实时内存利用率、带class3标签的实时磁盘利用率三种类型的数据,并把带class1标签的实时CPU利用率、带class2标签的实时内存利用率、带class3标签的实时磁盘利用率的数据推送给优化参数生成模块。
[0031] 2.5.2 优化参数生成模块从分类器pp接收带标签class1的实时CPU利用率、带标签class2的实时内存利用率、带标签class3的实时磁盘利用率,从性能阈值模块接收实时CPU利用率阈值、实时内存利用率阈值和实时磁盘利用率阈值,进行CPU、内存和磁盘利用率阈值的判断,得到需要优化的参数,并把需要优化的参数推送给优化策略生成模块。具体步骤如下:
[0032] 2.5.2.1 判断带标签class1的实时CPU利用率是否超过CPU利用率阈值,如果带标签class1的实时CPU利用率超过CPU利用率阈值,则生成优化CPU参数Index1,并把Index1推送给优化策略生成模块,转步骤2.5.3;如果带标签class1的实时CPU利用率没有超过CPU利用率阈值,则不生成优化CPU参数Index1,执行步骤2.5.2.2。
[0033] 2.5.2.2 判断带标签class2的实时内存利用率是否超过内存利用率阈值,如果带标签class2的实时内存利用率超过内存利用率阈值,则生成优化内存参数Index2,并把Index2推送给优化策略生成模块,转步骤2.5.3;如果带标签class2的实时内存利用率没有超过内存利用率阈值,则不生成优化内存参数Index2,执行步骤2.5.2.3。
[0034] 2.5.2.3 判断带标签class3的实时磁盘利用率是否超过磁盘利用率阈值,如果带标签class3的实时内存利用率超过磁盘利用率阈值,则生成优化磁盘参数Index3,并把Index3推送给优化策略生成模块,转步骤2.5.3;如果带标签class3的实时内存利用率没有超过磁盘利用率阈值,则不生成优化磁盘参数Index3,转步骤2.6。
[0035] 2.5.3 优化策略生成模块从优化参数生成模块接收Index1、Index2和Index3,根据优化参数类型,从用户并发数、响应时间、吞吐率三个方面生成优化策略,具体步骤如下:
[0036] 2.5.3.1 如果优化参数类型是Index1,则执行步骤2.5.3.1.1;如果优化参数类型是Index2,则执行步骤2.5.3.1.2;如果标签类型是Index3,则执行步骤2.5.3.1.3。
[0037] 2.5.3.1.1 优化参数类型是Index1,说明CPU利用率超过阈值,先从优化参数类型Index1中获取需要优化的边缘节点的IP地址Address1(监控代理采集的数据中包含监控代理本机的IP地址),并向Address1发送优化指令(优化指令中包含指令类别、优化策略类型两个域,指令类别指优化指令的类别,共7种,优化策略类型指优化策略的种类,共7种,一种优化指令对应一种优化策略,指令类别为i的优化指令对应第i优化策略,1≤i≤7),然后生成CPU利用率优化策略,具体方法是:
[0038] 2.5.3.1.1.1 若Address1上数据分发子系统有大量的并发用户数,则生成第一优化策略为:按逐步增加一个节点的原则增加j个边缘节点(j是正整数,j要满足当添加j个节点后,数据分发子系统运行正常,即Address1节点的CPU利用率不超过阈值),且新增的j个边缘计算节点上均安装数据分发子系统,并把address1上用户的请求业务平均分配给新增的j个数据分发子系统,由新增的j个数据分发子系统来处理,降低Address1上数据分发子系统处理的并发业务量;将第一优化策略发送给优化策略库,转2.5.4。
[0039] 2.5.3.1.1.2 若Address1上数据分发子系统的响应时间慢,则生成第二优化策略为:把Address1上数据分发子系统正在处理的业务分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘节点处理。将第二优化策略发送给优化策略库,转2.5.4。
[0040] 2.5.3.1.1.3 若Address1上数据分发子系统吞吐率低,则生成第三优化策略为增大线程数,提高其并发处理业务的能力;增大线程数的方法是:Address1上数据分发子系统加载本边缘节点的系统配置文件,修改处理业务的线程数配置项(将线程数扩大为当前线程数值的一倍,且值不超过1024)。将第三优化策略发送给优化策略库,转2.5.4。
[0041] 2.5.3.1.2 优化参数类型是Index2,说明内存利用率超过阈值,先从优化参数类型Index2中获取需要优化的边缘节点的IP地址Address2(监控代理采集的数据中包含边缘节点的IP),并向Address2发送优化指令,然后生成优化策略,具体方法如下:
[0042] 2.5.3.1.2.1 若Address2上数据分发子系统有大量的并发用户数,则生成第四优化策略为:动态增加该数据分发子系统能使用的内存(边缘节点采用虚拟化技术可以管理每个边缘节点上数据分发子系统所能使用的内存,例如Xen虚拟化技术、KVM虚拟化技术等),增加的内存大小是Address2当前内存的1/4。将第四优化策略发送给优化策略库,转2.5.4。
[0043] 2.5.3.1.2.2 若Address2上数据分发子系统的响应时间慢,则生成第五优化策略为:把该数据分发子系统正在处理的业务重新分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘节点处理。将第五优化策略发送给优化策略库,转2.5.4。
[0044] 2.5.3.1.2.3 若Address2上数据分发子系统吞吐率低,则生成第六优化策略为:新增1个边缘节点(此时,Address2节点已经出现故障,需要动态新增一个节点来替换其工作),把Address2上吞吐率低的数据分发子系统的业务动态转移到新增的边缘节点的数据分发子系统上,由新增的边缘节点的数据分发子系统处理。将第六优化策略发送给优化策略库,转2.5.4。
[0045] 2.5.3.1.3 优化参数类型是Index3,说明磁盘利用率超过阈值,从优化参数类型Index3中获取需要优化的边缘节点的IP地址Address3(监控代理采集的数据中包含边缘节点的IP),并向Address1发送优化指令,具体方法如下:
[0046] 若Address3上数据分发子系统出现大量并发用户数或响应时间慢或吞吐率低,则生成第七优化策略为:对该边缘节点增大数据分发子系统所能使用的磁盘容量(边缘节点采用虚拟化技术管理,可以实现动态扩展边缘节点上数据分发子系统所能使用的磁盘容量,例如Xen虚拟化技术、KVM虚拟化技术等),新增的磁盘容量是该边缘节点磁盘容量的1/4。将第七优化策略发送给优化策略库,转2.5.4。
[0047] 2.5.4 优化策略库从优化策略生成模块接收优化策略,若该种优化策略在数据库中已经存在,直接转2.6;如果该种优化策略在数据库中不存在,把该优化策略存入数据库(支持Mysql、Orcle、SQL Server),供数据分发子系统读取,转2.6。
[0048] 2.6 T=T+t,t的默认值为10min,通过系统配置文件可以修改,pp=pp+1,如果pp>p,则令pp=1;如果T>TT,TT是生成优化策略的数据提取时限,一般大于等于24*60分钟即可,(根据多次试验,发现数据分发子系统运行7*24小时后,可以完全保证优化策略库的完整性,即形成七种优化策略,因此TT的最优值为7*24*60分钟),转第三步;否则,转2.2,继续生成优化策略。
[0049] 第三步 大规模数据分发系统运行时自适应优化系统进行自适应优化,m个边缘节点上的数据分发子系统并行进行自适应优化,当任意边缘节点上数据分发子系统需要优化时,该边缘节点上的数据分发子系统从优化策略库获取优化策略,实现自适应优化其中第n(1≤n≤m,n通过IP地址进行区分)个边缘节点的数据分发子系统优化实施过程如下:
[0050] 3.1 初始化第二时间变量T2=0。
[0051] 3.2 第n个边缘节点的数据分发子系统在第n个边缘节点上产生日志数据(包含数据分发子系统运行的状态信息)。
[0052] 3.3 第n个边缘节点上的监控代理从第n个边缘节点的日志数据中,采集数据分发系统运行时的状态信息数据,并推送给数据汇集器。
[0053] 3.4 数据汇集器接收到第n个监控代理推送的数据后,把数据推送给自适应优化系统。
[0054] 3.5 自适应优化系统判定第n个边缘节点的数据分发子系统是否出现CPU利用率超过CPU利用率阈值、内存利用率超过内存利用率阈值或磁盘利用率超过磁盘利用率阈值,如果出现这三种情况中任意一种情况,就向第n个边缘节点发送优化指令,转步骤3.6,如果没有,则不向第n个节点发送优化指令,转步骤3.2。
[0055] 3.6 第n个节点的数据分发子系统接收优化指令,向优化策略库发送链接请求,根据优化策略类型获取相应优化策略,按照优化策略在第n个节点实施优化;优化完成后,令T2=T2+t,转步骤3.2。
[0056] 当优化策略库生成后,m个边缘节点不断根据产生的日志数据进行自适应优化,所以第三步是一个不断进行的循环,只有当整个大规模数据分发系统运行时自适应优化系统断电时,才会停止自适应优化。
[0057] 采用本发明可以达到如下的有益效果:
[0058] 1、采用本发明能够通过采集大规模数据分发系统运行时的状态信息,从阈值的设定、用户并发数、响应时间和吞吐率方面生成优化大规模分发系统故障的策略,使得大规模数据分发系统运行时绝大多数的故障可以动态自动修复。
[0059] 2、采用本发明能够使大规模数据分发系统运行时自适应优化,提高大规模数据分发系统的健壮性,使得大规模数据分发系统能够稳定运行,为用户提供持续可靠的服务。

附图说明

[0060] 图1是本发明总体流程图;
[0061] 图2是本发明第一步构建的大规模数据分发系统运行时自适应优化系统逻辑结构图;
[0062] 图3是本发明第一步大规模数据分发系统运行时自适应优化系统中的自适应优化系统逻辑结构图;
[0063] 图4是本发明第二步自适应优化系统中的资源分类模块流程图;
[0064] 图5是本发明第二步自适应优化系统中的优化参数生成模块流程图;
[0065] 图6是本发明第二步自适应优化系统中的优化策略生成模块流程图。

具体实施方式

[0066] 图1是本发明总体流程图。具体流程如下:
[0067] 第一步,构建大规模数据分发系统运行时自适应优化系统。
[0068] 第二步,每个边缘节点上的数据分发子系统以日志的形式记录其运行时的相关数据,监控代理采集所属边缘节点上的日志数据,并推送给数据汇集器;数据汇集器汇集m个监控代理传来的日志数据,并推送给自适应优化系统;自适应优化系统生成优化策略,形成优化策略库。
[0069] 第三步,大规模数据分发系统运行时自适应优化系统进行自适应优化,m个边缘节点上的数据分发子系统并行进行自适应优化。
[0070] 图2是本发明第一步构建的大规模数据分发系统运行时自适应优化系统逻辑结构图。包括m个数据分发子系统(m≥1,m是整数)、m个监控代理、一个数据汇集器和一个自适应优化系统组成。数据分发子系统(为用户提供实时可靠数据分发服务)运行在边缘节点上,监控代理运行在安装了数据分发子系统的边缘节点上,数据汇集器和自适应优化系统分别运行在可独立运行的中心计算节点(即不是离用户最近的计算机节点)上,运行监控代理和数据分发子系统的边缘节点、数据汇集器和自适应优化系统三者之间通过互联网相互交互。边缘节点、中心计算节点均是服务器或微机。
[0071] 图3是本发明第一步大规模数据分发系统运行时自适应优化系统中的自适应优化系统逻辑结构图。自适应优化系统是运行在中心计算节点上的一个软件系统,由资源分类模块、性能阈值模块、优化参数生成模块、优化策略生成模块、优化策略库组成。
[0072] 图4是本发明自适应优化系统中的资源分类模块流程图。资源分类模块是由标签过滤器和p个分类器(p≥1,p是整数)组成的软件模块,p的值由标签过滤器推送的数据量大小和对数据分类的实时性要求来决定,当数据量和要求的实时性越高时,p的值就越大(根据经验,p一般等于3)。标签过滤器对从数据汇集器收到的CPU利用率、内存利用率和磁盘利用率三类数据进行过滤处理,将带标签class1的CPU利用率、带标签class2的内存利用率和带标签class3的磁盘利用率混合数据依次发送给分类器。每个分类器对从标签过滤器接收的带标签class1的CPU利用率、带标签class2的内存利用率和带标签class3的磁盘利用率混合数据,按标签class1、class2、class3进行分离,得到实时CPU利用率、实时内存利用率和实时磁盘利用率,并将实时CPU利用率、实时内存利用率和实时磁盘利用率发送给优化参数生成模块。
[0073] 图5是本发明自适应优化系统中的优化参数生成模块流程图。优化参数生成模块是判断实时CPU利用率、实时内存利用率和实时磁盘利用率是否分别超过Vcpu、Vmem、Vdisk的软件模块。如果实时CPU利用率、实时内存利用率和实时磁盘利用率中有任意一个超过其对应阈值,就生成相应的优化参数,并将优化参数推送给优化策略生成模块。CPU利用率不能达标,向优化策略生成模块推送优化CPU参数index1;如果内存利用率不达标,向优化策略生成模块推送优化内存参数index2;如果磁盘利用率不达标,向优化策略生成模块推送优化磁盘参数index3。
[0074] 图6是本发明第二步自适应优化系统中的优化策略生成流程图。
[0075] 优化策略生成模块从优化参数生成模块接收Index1、Index2和Index3,根据优化参数类型,从用户并发数、响应时间、吞吐率三个方面生成优化策略,具体步骤如下:
[0076] 6.1 如果优化参数类型是Index1,则执行步骤6.1.1;如果优化参数类型是Index2,则执行步骤6.1.2;如果标签类型是Index3,则执行步骤6.1.3。
[0077] 6.1.1 优化参数类型是Index1,说明CPU利用率超过阈值,先从优化参数类型Index1中获取需要优化的边缘节点的IP地址Address1(监控代理采集的数据中包含监控代理本机的IP地址),并向Address1发送优化指令,然后生成CPU利用率优化策略,具体方法是:
[0078] 6.1.1.1 若Address1上数据分发子系统有大量的并发用户数,则生成第一优化策略为:按逐步增加一个节点的原则增加j个边缘节点(j是正整数,j要满足当添加j个节点后,数据分发子系统运行正常,即Address1节点的CPU利用率不超过阈值),且新增的j个边缘计算节点上均安装数据分发子系统,并把address1上用户的请求业务平均分配给新增的j个数据分发子系统,由新增的j个数据分发子系统来处理,降低Address1上数据分发子系统处理的并发业务量;将第一优化策略发送给优化策略库,转6.1.4。
[0079] 6.1.1.2 若Address1上数据分发子系统的响应时间慢,则生成第二优化策略为:把Address1上数据分发子系统正在处理的业务分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘节点处理。将第二优化策略发送给优化策略库,转
6.1.4。
[0080] 6.1.1.3 若Address1上数据分发子系统吞吐率低,则生成第三优化策略为:Address1上数据分发子系统加载本边缘节点的系统配置文件,修改处理业务的线程数配置项(扩大当前线程数值的一倍,且值不能超过1024),增大线程数,提高其并发处理业务的能力。将第三优化策略发送给优化策略库,转6.1.4。
[0081] 6.1.2 优化参数类型是Index2,说明内存利用率超过阈值,先从优化参数类型Index2中获取需要优化的边缘节点的IP地址Address2(监控代理采集的数据中包含边缘节点的IP),并向Address2发送优化指令,然后生成优化策略,具体方法如下:
[0082] 6.1.2.1 若Address2上数据分发子系统有大量的并发用户数,则生成第四优化策略为:动态增加该数据分发子系统能使用的内存(边缘节点采用虚拟化技术可以管理每个边缘节点上数据分发子系统所能使用的内存,例如Xen虚拟化技术、KVM虚拟化技术等),增加的内存大小是Address2当前内存的1/4。将第四优化策略发送给优化策略库,转6.1.4。
[0083] 6.1.2.2 若Address2上数据分发子系统的响应时间慢,则生成第五优化策略为:把该数据分发子系统正在处理的业务重新分配到其它数据分发子系统响应快的边缘节点上,由数据分发子系统响应快的边缘节点处理。将第五优化策略发送给优化策略库,转
6.1.4。
[0084] 6.1.2.3 若Address2上数据分发子系统吞吐率低,则生成第六优化策略为:新增1个边缘节点(此时,Address2节点已经出现故障,需要动态新增一个节点来替换其工作),把Address2上吞吐率低的数据分发子系统的业务动态转移到新增的边缘节点的数据分发子系统上,由新增的边缘节点的数据分发子系统处理。将第六优化策略发送给优化策略库,转6.1.4。
[0085] 6.1.3 优化参数类型是Index3,说明磁盘利用率超过阈值,从优化参数类型Index3中获取需要优化的边缘节点的IP地址Address3(监控代理采集的数据中包含边缘节点的IP),并向Address1发送优化指令,具体方法如下:
[0086] 若Address3上数据分发子系统出现大量并发用户数或响应时间慢或吞吐率低,则生成第七优化策略为:对该边缘节点增大数据分发子系统所能使用的磁盘容量(边缘节点采用虚拟化技术管理,可以实现动态扩展边缘节点上数据分发子系统所能使用的磁盘容量,例如Xen虚拟化技术、KVM虚拟化技术等),新增的磁盘容量是该边缘节点磁盘容量的1/4。将第七优化策略发送给优化策略库,转6.1.4。
[0087] 6.1.4 优化策略库从优化策略生成模块接收优化策略。