发明名称 一种基于Storm实时流计算框架的应用网络带宽动态优先级保障方法
摘要 本发明公开了一种基于Storm实时流计算框架的应用网络带宽动态优先级保障方法,包括:设置应用拓扑结构;设置网络所需的开销、元组发送速度和接收速率;调整网络资源花费速率;当应用拓扑结构运行后,在时间窗口内对不同节点上组件的元组发送和接收速率进行实时监控;然后根据组件的剩余资源预算确定网络带宽优先级调整策略。本发明在多用户共享集群环境下,避免了由于资源竞争所导致的应用性能不确定性,有效地保障了高优先级应用对网络带宽的优先使用,并且能够根据负载水平变化自适应地调整应用优先级设置,在保障高优先级应用服务质量要求的同时,最大限度地满足其它应用对网络带宽地使用。
申请公布号 CN104639466A 申请公布日期 2015.05.20
申请号 CN201510098503.1 申请日期 2015.03.05
申请人 北京航空航天大学 发明人 杨海龙;栾钟治;钱德沛
分类号 H04L12/911(2013.01)I 主分类号 H04L12/911(2013.01)I
代理机构 北京永创新实专利事务所 11121 代理人 李有浩
主权项 一种基于Storm实时流计算框架的应用网络带宽动态优先级保障方法,其特征在于有下列处理步骤:第一步:构建应用拓扑结构;用户根据Storm实时数据流的处理逻辑,构建了应用拓扑结构(T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>a</sub>},t<sub>a</sub>={S,B,G});所述任意一个拓扑结构t<sub>a</sub>中包括有数据源组(S={s<sub>1</sub>,s<sub>2</sub>,…,s<sub>c</sub>})、处理组件(B={b<sub>1</sub>,b<sub>2</sub>,…,b<sub>d</sub>}),以及组件间的数据分发模式(G={g<sub>1</sub>,g<sub>2</sub>,…,g<sub>e</sub>});第二步:设置资源预算和花费速率的初始值;用户为提交的任意一个拓扑结构t<sub>a</sub>设置初始网络带宽资源预算<img file="FDA0000678230900000011.GIF" wi="218" he="82" />和初始网络带宽花费速率<img file="FDA0000678230900000012.GIF" wi="198" he="83" />第三步:设置期望运行时长;用户为提交的任意一个拓扑结构t<sub>a</sub>设置期望运行时长<img file="FDA0000678230900000013.GIF" wi="287" he="79" />第四步:获取元组发送速率和接收速率;在设置完成第二步和第三步后,在运行第一步的任意一个拓扑结构t<sub>a</sub>后,通过主节点上的Thrift运行时状态查询接口,启动后台监控线程;实时获得各个计算节点上运行数据源s<sub>c</sub>的元组发送速率<img file="FDA0000678230900000014.GIF" wi="132" he="63" />和元组接收速率<img file="FDA0000678230900000015.GIF" wi="240" he="67" />以及资源花费速率<img file="FDA0000678230900000016.GIF" wi="172" he="67" />然后执行第五步;在本发明中,任意一个拓扑结构t<sub>a</sub>在计算节点上运行完成所有的数据源S={s<sub>1</sub>,s<sub>2</sub>,…,s<sub>c</sub>},则将获得的元组发送速率集合记为<img file="FDA0000678230900000017.GIF" wi="831" he="101" />和元组接收速率集合记为<img file="FDA0000678230900000018.GIF" wi="1158" he="101" />资源花费速率集合记为<img file="FDA0000678230900000019.GIF" wi="841" he="98" /><img file="FDA00006782309000000110.GIF" wi="137" he="61" />为数据源s<sub>1</sub>的元组发送速率,<img file="FDA00006782309000000111.GIF" wi="140" he="62" />为数据源s<sub>2</sub>的元组发送速率,<img file="FDA00006782309000000112.GIF" wi="142" he="60" />为数据源s<sub>c</sub>的元组发送速率,<img file="FDA00006782309000000113.GIF" wi="209" he="62" />为数据源s<sub>1</sub>的元组接收速率,<img file="FDA00006782309000000114.GIF" wi="208" he="62" />为数据源s<sub>2</sub>的元组接收速率,<img file="FDA00006782309000000115.GIF" wi="213" he="61" />为数据源s<sub>c</sub>的元组接收速率,<img file="FDA00006782309000000116.GIF" wi="132" he="62" />为数据源s<sub>1</sub>的资源花费速率,<img file="FDA00006782309000000117.GIF" wi="137" he="60" />为数据源s<sub>2</sub>的资源花费速率,<img file="FDA00006782309000000118.GIF" wi="131" he="61" />为数据源s<sub>c</sub>的资源花费速率;在本发明中,同理得到拓扑结构t<sub>1</sub>的元组发送速率集合记为<img file="FDA00006782309000000119.GIF" wi="828" he="101" />和元组接收速率集合记为<img file="FDA0000678230900000021.GIF" wi="1140" he="99" />以及资源花费速率集合记为<img file="FDA0000678230900000022.GIF" wi="845" he="99" />拓扑结构t<sub>2</sub>的元组发送速率集合记为<img file="FDA0000678230900000023.GIF" wi="831" he="99" />和元组接收速率集合记为<img file="FDA0000678230900000024.GIF" wi="1146" he="100" />以及资源花费速率集合记为<img file="FDA0000678230900000025.GIF" wi="829" he="100" />第五步:调整网络资源花费速率;采用网络带宽资源预算阈值Budget<sub>阈值</sub>对实时获得的当前时间窗口slide_window<sub>w</sub>下的网络带宽开销<img file="FDA0000678230900000026.GIF" wi="342" he="83" />进行比较;若<img file="FDA0000678230900000027.GIF" wi="596" he="82" />则表明需要优先保障应用的运行时长要求,首先要对前三个时间窗口下的网络带宽开销求平均,即网络带宽开销均值<img file="FDA0000678230900000028.GIF" wi="1478" he="141" />然后将当前网络开销<img file="FDA0000678230900000029.GIF" wi="342" he="82" />与网络带宽开销均值Budget<sub>均值</sub>作差值比较,得到当前网络开销差值Budget<sub>差值</sub>;然后求取当前网络开销<img file="FDA00006782309000000210.GIF" wi="346" he="82" />的相对网络资源偏差<img file="FDA00006782309000000211.GIF" wi="651" he="155" />然后判断所述Budget<sub>偏差</sub>是否超过带宽门限偏离量η,若Budget<sub>偏差</sub>>η,则将当前资源花费速率<img file="FDA00006782309000000212.GIF" wi="299" he="82" />调整为<img file="FDA00006782309000000213.GIF" wi="686" he="83" />若Budget<sub>偏差</sub>≤η,则保持当前资源花费速率<img file="FDA00006782309000000214.GIF" wi="330" he="86" />并进入第八步骤;若<img file="FDA00006782309000000215.GIF" wi="598" he="79" />则退出网络资源优先级的动态竞争,进而将网络资源花费速率设置为<img file="FDA00006782309000000216.GIF" wi="390" he="151" />并进入第九步骤;第六步:获取数据流选择率权重;首先将调整的<img file="FDA00006782309000000217.GIF" wi="296" he="84" />通知运行在各个计算节点上的处理组件B={b<sub>1</sub>,b<sub>2</sub>,…,b<sub>d</sub>};然后通过主节点上的Thrift运行时状态查询接口,启动后台监控线程;实时获得各个计算节点上运行处理组件b<sub>d</sub>的元组发送速率<img file="FDA00006782309000000218.GIF" wi="146" he="70" />和元组接收速率<img file="FDA00006782309000000219.GIF" wi="244" he="74" />然后,获取当前时间窗口slide_window<sub>w</sub>下处理组件b<sub>d</sub>的数据流选择率<img file="FDA00006782309000000220.GIF" wi="486" he="86" />且<img file="FDA00006782309000000221.GIF" wi="745" he="137" />并将所述的<img file="FDA00006782309000000222.GIF" wi="414" he="88" />作为数据流选择率模式权重<img file="FDA00006782309000000223.GIF" wi="468" he="84" />然后执行第八 步;第七步:获取数据分发模式权重;设置数据分发模式权重<img file="FDA0000678230900000031.GIF" wi="386" he="82" />然后执行第八步;任意一种数据分发模式g<sub>e</sub>的数据分发权重记为Weight_g<sub>e</sub>,由于处理组件B={b<sub>1</sub>,b<sub>2</sub>,…,b<sub>d</sub>}是根据程序设置的所属数据分发模式G={g<sub>1</sub>,g<sub>2</sub>,…,g<sub>e</sub>}进行发出的,因此数据分发权重Weight_g<sub>e</sub>可以作为数据分发模式权重<img file="FDA0000678230900000032.GIF" wi="388" he="81" />第八步:获取下一时间窗口内的花费速率;依据当前资源花费速率<img file="FDA0000678230900000033.GIF" wi="347" he="84" />数据流选择率模式权重<img file="FDA0000678230900000034.GIF" wi="438" he="82" />和数据分发模式权重<img file="FDA0000678230900000035.GIF" wi="359" he="81" />计算下一时间窗口slide_window<sub>w+1</sub>内的花费速率<img file="FDA0000678230900000036.GIF" wi="435" he="86" />且<img file="FDA0000678230900000037.GIF" wi="1527" he="90" />然后执行第九步;遍历完成Storm集群中运行的所有应用T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>a</sub>},获得所有应用T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>a</sub>}在下一个时间窗口slide_window<sub>w+1</sub>的资源花费速率<img file="FDA0000678230900000038.GIF" wi="1046" he="101" /><img file="FDA0000678230900000039.GIF" wi="1051" he="100" /><img file="FDA00006782309000000310.GIF" wi="1049" he="99" />第九步:获取当前网络带宽开销;根据各数据源组件在当前时间窗口slide_window<sub>w</sub>内选择的花费速率<img file="FDA00006782309000000311.GIF" wi="328" he="82" />从各个节点上应用的资源预算中扣除上一时间窗口slide_window<sub>w‑1</sub>内的网络带宽开销<img file="FDA00006782309000000312.GIF" wi="399" he="78" />即得到当前网络带宽开销<img file="FDA00006782309000000313.GIF" wi="381" he="78" />且<img file="FDA00006782309000000314.GIF" wi="1118" he="84" />然后执行第十步;第十步:自适应网络带宽划分;根据计算节点上不同应用T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>a</sub>}的数据源组S={s<sub>1</sub>,s<sub>2</sub>,…,s<sub>c</sub>}的资源花费速率<img file="FDA00006782309000000315.GIF" wi="132" he="60" />所占网络带宽的比重,来自适应划分网络,然后执行第十一步;第十一步:中止网络带宽的动态优先调整;当Storm系统中没有正在运行的应用T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>a</sub>},则中止网络带宽的动态优先级调整;或者,Storm系统中所有应用T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>a</sub>}的网络带宽资源使用均退化为静态花费速率时,则中止网络带宽的动态优先级调整。
地址 100191 北京市海淀区学院路37号