发明名称 一种适用于在线数据密集型应用的请求多副本任务执行方法
摘要 本发明公开了一种适用于在线数据密集型应用的请求多副本任务执行方法,该方法包括有设置执行任务系统所需的初始量和参考量的步骤,记录副本的各个时间特性的步骤,判断时延的步骤和检查、更新后端从节点状态参考量的步骤;本发明所要解决的是如何减少多副本执行在保障“在线数据密集型应用”服务质量时占用的额外资源的技术问题,该方法通过利用滑动窗口提取副本特征,并对后端从节点进行性能预测,动态调节任务的多副本比例,使“在线数据密集型应用”系统能够有效地适应负载水平的动态波动;从而提高了“在线数据密集型应用”系统资源的使用效率的技术效果。
申请公布号 CN104915205A 申请公布日期 2015.09.16
申请号 CN201510312591.0 申请日期 2015.06.08
申请人 北京航空航天大学 发明人 杨海龙;张佐玮;栾钟治;钱德沛
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 李有浩
主权项 一种适用于在线数据密集型应用的请求多副本任务执行方法,所述在线数据密集型应用属于云计算机系统中的任务执行单元,其特征在于:请求多副本任务执行方法包括有下列步骤:步骤A,初始化系统并设置初始量和参考量步骤A‑1,设置服务质量目标SLO;步骤A‑2,对后端从节点进行标记,记为bs<sub>N</sub>;步骤A‑3,设置任务对应的副本;初始化在线数据密集型应用中的任务执行系统,设置任务执行系统中每个任务对应的副本总数为k,副本标记为r;每个任务对应的所有副本采用集合形式表达为R={r<sub>1</sub>,r<sub>2</sub>,…,r<sub>k</sub>},r<sub>1</sub>表示第一个副本,r<sub>2</sub>表示第二个副本,r<sub>k</sub>表示最后一个副本,k表示副本的标识号;步骤A‑4,设置无效周期数、恢复周期数;初始化在线数据密集型应用中的任务执行系统,设置后端从节点bs<sub>N</sub>的无效周期数<img file="FDA0000733781020000019.GIF" wi="127" he="61" />和恢复周期数<img file="FDA00007337810200000110.GIF" wi="176" he="79" />执行步骤B;步骤B,副本标记及分发副本步骤B-1,副本标记;从R={r<sub>1</sub>,r<sub>2</sub>,…,r<sub>k</sub>}中选取w个副本作为任务的标记副本,0<w<k;则将所述R={r<sub>1</sub>,r<sub>2</sub>,…,r<sub>k</sub>}记为标记后副本的表达形式为<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>RS</mi><mo>=</mo><mo>{</mo><msub><mi>r</mi><mn>1</mn></msub><mo>,</mo><msub><mi>r</mi><mn>2</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>r</mi><mrow><mi>w</mi><mo>-</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>r</mi><mi>w</mi><mi>s</mi></msubsup><mo>,</mo><msubsup><mi>r</mi><mrow><mi>w</mi><mo>+</mo><mn>1</mn></mrow><mi>s</mi></msubsup><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>r</mi><mi>k</mi></msub><mo>}</mo><mo>;</mo></mrow>]]></math><img file="FDA0000733781020000011.GIF" wi="807" he="110" /></maths>s为副本被标记的标识的;步骤B-2,分发副本;后端主节点将同一任务的所述<img file="FDA0000733781020000012.GIF" wi="777" he="110" />分发至N个后端从节点上,执行步骤C;步骤C,获取排队时延;计算后端从节点bs<sub>N</sub>运行r<sub>1</sub>副本的排队时延记为<img file="FDA0000733781020000013.GIF" wi="137" he="86" />且<img file="FDA0000733781020000014.GIF" wi="444" he="92" /><img file="FDA0000733781020000015.GIF" wi="107" he="86" />表示后端从节点bs<sub>N</sub>运行r<sub>1</sub>副本的时间,<img file="FDA0000733781020000016.GIF" wi="109" he="87" />表示r<sub>1</sub>副本到达后端从节点bs<sub>N</sub>的时间;计算后端从节点bs<sub>N</sub>运行r<sub>2</sub>副本的排队时延记为<img file="FDA0000733781020000017.GIF" wi="137" he="86" />且<img file="FDA0000733781020000018.GIF" wi="447" he="85" /><img file="FDA0000733781020000021.GIF" wi="109" he="91" />表示后端从节点bs<sub>N</sub>运行r<sub>2</sub>副本的时间,<img file="FDA0000733781020000022.GIF" wi="106" he="90" />表示r<sub>2</sub>副本到达后端从节点bs<sub>N</sub>的时间;计算后端从节点bs<sub>N</sub>运行<img file="FDA0000733781020000023.GIF" wi="84" he="86" />副本的排队时延记为<img file="FDA0000733781020000024.GIF" wi="136" he="100" />且<img file="FDA0000733781020000025.GIF" wi="441" he="100" /><img file="FDA0000733781020000026.GIF" wi="109" he="100" />表示后端从节点bs<sub>N</sub>运行<img file="FDA0000733781020000027.GIF" wi="84" he="80" />副本的时间,<img file="FDA0000733781020000028.GIF" wi="112" he="95" />表示<img file="FDA0000733781020000029.GIF" wi="86" he="85" />副本到达后端从节点bs<sub>N</sub>的时间;计算后端从节点bs<sub>N</sub>运行<img file="FDA00007337810200000210.GIF" wi="55" he="85" />副本的排队时延记为<img file="FDA00007337810200000211.GIF" wi="135" he="96" />且<img file="FDA00007337810200000212.GIF" wi="444" he="99" /><img file="FDA00007337810200000213.GIF" wi="110" he="99" />表示后端从节点bs<sub>N</sub>运行<img file="FDA00007337810200000214.GIF" wi="54" he="84" />副本的时间,<img file="FDA00007337810200000215.GIF" wi="101" he="95" />表示<img file="FDA00007337810200000216.GIF" wi="62" he="83" />副本到达后端从节点bs<sub>N</sub>的时间;计算后端从节点bs<sub>N</sub>运行<img file="FDA00007337810200000217.GIF" wi="82" he="82" />副本的排队时延记为<img file="FDA00007337810200000218.GIF" wi="135" he="98" />且<img file="FDA00007337810200000219.GIF" wi="445" he="101" /><img file="FDA00007337810200000220.GIF" wi="112" he="99" />表示后端从节点bs<sub>N</sub>运行<img file="FDA00007337810200000221.GIF" wi="91" he="85" />副本的时间,<img file="FDA00007337810200000222.GIF" wi="116" he="98" />表示<img file="FDA00007337810200000223.GIF" wi="86" he="82" />副本到达后端从节点bs<sub>N</sub>的时间;计算后端从节点bs<sub>N</sub>运行r<sub>k</sub>副本的排队时延记为<img file="FDA00007337810200000224.GIF" wi="137" he="87" />且<img file="FDA00007337810200000225.GIF" wi="445" he="92" /><img file="FDA00007337810200000226.GIF" wi="107" he="89" />表示后端从节点bs<sub>N</sub>运行r<sub>k</sub>副本的时间,<img file="FDA00007337810200000227.GIF" wi="108" he="87" />表示r<sub>k</sub>副本到达后端从节点bs<sub>N</sub>的时间;执行步骤D;步骤D,检查副本中是否是标记副本;步骤D‑1,任意一后端从节点bs<sub>N</sub>对接收到任意一副本r<sub>k</sub>进行检查,从而获取所述r<sub>k</sub>副本是否是带有标记的副本;步骤D‑2,若后端从节点bs<sub>N</sub>接收到的副本r<sub>k</sub>为标记副本<img file="FDA00007337810200000228.GIF" wi="85" he="82" />则执行步骤H;步骤D‑3,若后端从节点bs<sub>N</sub>接收到的副本r<sub>k</sub>不是标记副本<img file="FDA00007337810200000229.GIF" wi="86" he="83" />则执行步骤E;步骤E,判断后端从节点的运行状态;步骤E‑1,若后端从节点bs<sub>N</sub>满足状态条件一时,后端从节点bs<sub>N</sub>处于无效状态,则结束在线数据密集型应用中的任务执行;步骤E‑2,若后端从节点bs<sub>N</sub>不满足状态条件一时,后端从节点bs<sub>N</sub>不处于无效状态,则执行步骤F;步骤F,获取副本排队时延,并计算副本的预期响应时延计算r<sub>1</sub>副本的预期响应时延<img file="FDA00007337810200000230.GIF" wi="136" he="86" />且<img file="FDA00007337810200000231.GIF" wi="451" he="86" />计算r<sub>2</sub>副本的预期响应时延<img file="FDA00007337810200000232.GIF" wi="135" he="85" />且<img file="FDA00007337810200000233.GIF" wi="452" he="86" />计算<img file="FDA00007337810200000234.GIF" wi="84" he="84" />副本的预期响应时延<img file="FDA00007337810200000235.GIF" wi="136" he="101" />且<img file="FDA00007337810200000236.GIF" wi="455" he="101" />计算<img file="FDA00007337810200000237.GIF" wi="55" he="76" />副本的预期响应时延<img file="FDA00007337810200000238.GIF" wi="135" he="95" />且<img file="FDA00007337810200000239.GIF" wi="450" he="96" />计算<img file="FDA0000733781020000031.GIF" wi="89" he="83" />副本的预期响应时延<img file="FDA0000733781020000032.GIF" wi="138" he="97" />且<img file="FDA0000733781020000033.GIF" wi="459" he="100" />计算r<sub>k</sub>副本的预期响应时延<img file="FDA0000733781020000034.GIF" wi="133" he="92" />且<img file="FDA0000733781020000035.GIF" wi="453" he="91" />执行步骤G;步骤G,检查副本的预期响应时延是否满足服务质量目标若<img file="FDA0000733781020000036.GIF" wi="304" he="86" />则结束在线数据密集型应用中的任务执行;若<img file="FDA0000733781020000037.GIF" wi="303" he="86" />则执行步骤H;若<img file="FDA0000733781020000038.GIF" wi="303" he="87" />则结束在线数据密集型应用中的任务执行;若<img file="FDA0000733781020000039.GIF" wi="302" he="87" />则执行步骤H;若<img file="FDA00007337810200000310.GIF" wi="305" he="100" />则结束在线数据密集型应用中的任务执行;若<img file="FDA00007337810200000311.GIF" wi="293" he="100" />则执行步骤H;若<img file="FDA00007337810200000312.GIF" wi="303" he="100" />则结束在线数据密集型应用中的任务执行;若<img file="FDA00007337810200000313.GIF" wi="304" he="100" />则执行步骤H;若<img file="FDA00007337810200000314.GIF" wi="311" he="100" />则结束在线数据密集型应用中的任务执行;若<img file="FDA00007337810200000315.GIF" wi="308" he="99" />则执行步骤H;<img file="FDA00007337810200000316.GIF" wi="307" he="88" />则结束在线数据密集型应用中的任务执行;<img file="FDA00007337810200000317.GIF" wi="308" he="87" />则执行步骤H;步骤H,获取副本的服务时延和响应时延计算后端从节点bs<sub>N</sub>运行所述r<sub>1</sub>副本的服务时延记为<img file="FDA00007337810200000318.GIF" wi="156" he="86" />且<img file="FDA00007337810200000319.GIF" wi="452" he="87" /><img file="FDA00007337810200000320.GIF" wi="108" he="87" />表示后端从节点bs<sub>N</sub>执行完成r<sub>1</sub>副本的时间;计算后端从节点bs<sub>N</sub>运行所述r<sub>2</sub>副本的服务时延记为<img file="FDA00007337810200000321.GIF" wi="157" he="86" />且<img file="FDA00007337810200000322.GIF" wi="450" he="87" /><img file="FDA00007337810200000323.GIF" wi="111" he="83" />表示后端从节点bs<sub>N</sub>执行完成r<sub>2</sub>副本的时间;计算后端从节点bs<sub>N</sub>运行所述<img file="FDA00007337810200000324.GIF" wi="94" he="81" />副本的服务时延记为<img file="FDA00007337810200000325.GIF" wi="152" he="100" />且<img file="FDA00007337810200000326.GIF" wi="450" he="101" /><img file="FDA00007337810200000327.GIF" wi="113" he="101" />表示后端从节点bs<sub>N</sub>执行完成<img file="FDA00007337810200000328.GIF" wi="90" he="82" />副本的时间;计算后端从节点bs<sub>N</sub>运行所述<img file="FDA00007337810200000329.GIF" wi="62" he="82" />副本的服务时延记为<img file="FDA00007337810200000330.GIF" wi="156" he="100" />且<img file="FDA00007337810200000331.GIF" wi="450" he="96" /><img file="FDA00007337810200000332.GIF" wi="112" he="100" />表示后端从节点bs<sub>N</sub>执行完成<img file="FDA00007337810200000333.GIF" wi="59" he="81" />副本的时间;计算后端从节点bs<sub>N</sub>运行所述<img file="FDA00007337810200000334.GIF" wi="91" he="84" />副本的服务时延记为<img file="FDA00007337810200000335.GIF" wi="160" he="100" />且<img file="FDA00007337810200000336.GIF" wi="450" he="97" /><img file="FDA00007337810200000337.GIF" wi="114" he="100" />表示后端从节点bs<sub>N</sub>执行完成<img file="FDA00007337810200000338.GIF" wi="88" he="83" />副本的时间;计算后端从节点bs<sub>N</sub>运行所述r<sub>k</sub>副本的服务时延记为<img file="FDA00007337810200000339.GIF" wi="155" he="85" />且<img file="FDA00007337810200000340.GIF" wi="450" he="85" /><img file="FDA00007337810200000341.GIF" wi="111" he="85" />表示后端从节点bs<sub>N</sub>执行完成r<sub>k</sub>副本的时间;计算后端从节点bs<sub>N</sub>运行所述r<sub>1</sub>副本的响应时延记为<img file="FDA00007337810200000342.GIF" wi="157" he="85" />且<img file="FDA0000733781020000041.GIF" wi="450" he="92" />计算后端从节点bs<sub>N</sub>运行所述r<sub>2</sub>副本的响应时延记为<img file="FDA0000733781020000042.GIF" wi="157" he="87" />且<img file="FDA0000733781020000043.GIF" wi="449" he="91" />计算后端从节点bs<sub>N</sub>运行所述<img file="FDA0000733781020000044.GIF" wi="98" he="84" />副本的响应时延记为<img file="FDA0000733781020000045.GIF" wi="153" he="100" />且<img file="FDA0000733781020000046.GIF" wi="449" he="100" />计算后端从节点bs<sub>N</sub>运行所述<img file="FDA0000733781020000047.GIF" wi="59" he="84" />副本的响应时延记为<img file="FDA0000733781020000048.GIF" wi="156" he="97" />且<img file="FDA0000733781020000049.GIF" wi="449" he="102" />计算后端从节点bs<sub>N</sub>运行所述<img file="FDA00007337810200000410.GIF" wi="92" he="85" />副本的响应时延记为<img file="FDA00007337810200000411.GIF" wi="155" he="101" />且<img file="FDA00007337810200000412.GIF" wi="453" he="100" />计算后端从节点bs<sub>N</sub>运行所述r<sub>k</sub>副本的响应时延记为<img file="FDA00007337810200000413.GIF" wi="156" he="91" />且<img file="FDA00007337810200000414.GIF" wi="453" he="90" />执行步骤I;步骤I,计算动态参考值设置服务时延监控模块400的滑动窗口Windows存储的服务时延的个数,记为V,若服务时延监控模块400收到的服务时延的个数记为v;当v<V时,则服务时延监控模块400继续接收的服务时延;当v≥V时,则服务时延监控模块400将先接收的服务时延剔除;计算服务时延监控模块400的存储的服务时延的平均值ASL,<img file="FDA00007337810200000415.GIF" wi="382" he="164" />设置响应时延监控模块500的滑动窗口Windows存储的响应时延的个数,记为U,若响应时延监控模块500收到的响应时延的个数记为u;当u<U时,则响应时延监控模块500继续接收的响应时延;当u≥U时,则响应时延监控模块500将先接收的响应时延剔除;计算响应时延监控模块500的存储的响应时延的平均值ARL,且<img file="FDA00007337810200000416.GIF" wi="386" he="164" />计算响应时延监控模块500的存储的响应时延的方差VRL,且<img file="FDA00007337810200000417.GIF" wi="617" he="163" />执行步骤J;步骤J,检查节点状态参考量步骤J‑1,检查后端从节点bs<sub>N</sub>若不满足状态条件三,则更新<img file="FDA00007337810200000418.GIF" wi="179" he="86" />即<img file="FDA00007337810200000419.GIF" wi="148" he="77" />递减1;执行步骤J‑2;步骤J‑2,检查后端从节点bs<sub>N</sub>若满足状态条件一,则更新无效周期数<img file="FDA0000733781020000051.GIF" wi="160" he="82" />即<img file="FDA0000733781020000052.GIF" wi="126" he="76" />递减1;同时结束在线数据密集型应用中的任务执行;检查后端从节点bs<sub>N</sub>若不满足状态条件一,执行步骤J‑3;步骤J‑3,检查后端从节点bs<sub>N</sub>若满足状态条件三,则后端从节点bs<sub>N</sub>处于运行状态,执行步骤K;步骤K,更新节点状态参考量依据ARL和VRL更新后端从节点bs<sub>N</sub>的状态参考量,即无效周期数<img file="FDA0000733781020000053.GIF" wi="128" he="75" />和恢复周期数<img file="FDA0000733781020000054.GIF" wi="178" he="78" />若<img file="FDA0000733781020000055.GIF" wi="376" he="151" />且VRL<ζ,η表示预设的响应时延偏移量上限,ζ表示预设的响应时延方差上限;表明系统负载较高,一方面更新恢复周期数<img file="FDA0000733781020000056.GIF" wi="145" he="75" />为副本等待队列模块200中的副本数;另一方面更新无效周期数<img file="FDA0000733781020000057.GIF" wi="159" he="83" />将所述的<img file="FDA0000733781020000058.GIF" wi="130" he="74" />更新为<img file="FDA0000733781020000059.GIF" wi="259" he="81" />0≤λ≤1;λ表示预设的无效周期数的比例参数。
地址 100191 北京市海淀区学院路37号