栾明君,罗 翔,曹孝元
中国电子科技集团公司第十五研究所 智能协同计算技术实验室,北京 100083
随着联合军事行动场景的出现,需要大量特定应用软件来完成相关任务。由于单个指挥中心的服务器容量有限,需要在各个指挥中心之间进行网络和计算资源共享。而这将面临软件分发效率和部署策略的稳定性与资源利用率的问题,具体表现在:一方面,某些软件需要频繁在多个相关指挥中心临时分发;另一方面,一个指挥中心有限的服务器资源需要被频繁地部署大量软件[1]。本文针对频繁的软件分发和部署需求,对部队内主要依靠传统的直发和贪婪或专家经验的方式提出相关的计算方法和模型,致力于提升软件分发和部署的效率。
软件分发包括广泛分布的数据中心网络中的单播和多播传输场景,其中每个指挥中心被抽象为网络中的一个节点[2]。随着指挥中心数量的增加和软件交换频率的提高,必须灵活利用全局网络资源,以避免交通争用和资源抢占,从而在动态环境中实现快速和可靠的数据传输。
软件部署是在指挥中心的不同服务器上为多个不同大小的软件组分配任务。依靠专家经验或者简单的贪婪策略部署将导致严重的性能恶化和计算资源耗尽[3-5]。因此,需要一种根据其资源占用将每个软件分配到一个或多个特定服务器上的更优策略,以提高服务器资源利用率和系统稳定性。在本文中,不仅考虑传统一对一场景,还考虑了单个软件多次部署的复杂情况的一对多场景,而这将极大地增加分配的复杂性,导致专家经验和贪婪规则的失败或资源更容易浪费。
本文提出了从软件分发到软件部署的完整解决方案。软件分发策略基于一个改进的极小化极大整数线性规划公式,将应用软件数据划分成多个片段,并根据网络能力沿不同路径同时传输优化了数据划分和调度,提高了全局资源利用率和流量平衡,实现了数据分发的高效分发。对于软件部署策略,采用改进的整数多重背包模型,统一地处理每个软件分配在一个服务器(一对一)和多个服务器(一对多)的两种不同情形,创新地以负载平衡的方式利用服务器资源,从而大大提高了系统的稳定性和资源利用率,适用部队系统部署场景。仿真结果表明,软件分发模型在25 节点网络相比传统直传方式减少了90%分发时间,软件部署规模在300个软件和15个服务器场景下最高可提升30%的资源利用率。
本文研究基于软件划分的协同分发和基于改进多背包模型的软件部署问题,以优化目标函数建立数学模型。
针对复杂化、大规模和动态化的信息分发交互需求,面向多中心分布式网络环境[6-7],提出基于分布式协同的多向优选数据并发技术[8-9],即针对分布式多中心的域间数据分发问题,综合利用全网节点域作为网内缓存中继,并基于网络环境的状态感知结果[8]和基于MiniMax ILP[10-12]的最优化流量调度算法,并行选择多条信道进行数据分片的协同转发,最大化利用网络中的有限资源。同时依靠多节点域的缓存中继能力,有效应对战术环境下网络抖动和中断情况,提升信息分发的可靠性。另外,对于重复发送的数据内容,接收方可直接从中继节点拉取缓存数据,而无需从源端重新获取,从而进一步降低流量开销。支持基于网络资源感知的流量动态规划、弹性调度和优化编排,从而极大增强复杂异构环境下大规模通信传输适应能力、提高基础信息网络资源利用率、提升网络管理自动化水平、全面推动网络智能化改造进程。
下面以多播分发方式为例说明分发机制,其中单播是指只有一个目的节点,而多播指的是有多个目的节点。如图1 所示为多播分布式优选数据并发策略的典型示意图。考虑一个三节点的多中心互联网络,源节点A需要同时向三个目的节点B、C、D发送同一份数据,传统分发模式采用并行的一发三模式从A 分别向三个方向发送三份完整数据,这种方式将在网络中形成三倍的数据流量,且最终的任务完成时间取决于A-B、A-C 和A-D 三条路径中最差的一条传输路径。而优选数据并发策略则有效统筹利用全网的节点和带宽资源,从源端最少可以仅发送一份完整数据,并利用B、C、D 节点作为缓存中继互相为其他目的节点转发,从而最大化优化网络资源消耗,且最终的任务完成时间最大可节约50%以上。以图1为例,具体的策略执行过程如下:
图1 分布式优选数据并发策略Fig.1 Illustration of collaborated parallel data distribution
(1)在发送端将原始数据分成固定大小的分片,并为每一个分片添加唯一的分片序列号。
(2)获取从源节点到目的节点的路径状态(包括带宽、丢包率、延时),基于MiniMax ILP 的流量调度算法将分片分配至不同的路径并行传输。通常来说,具有更多资源的路径会被分配更多的数据分片。
(3)当B、C、D 各自分别收到来自A 的部分数据分片后缓存至本地,并作为中继节点将副本转发至其他两个目的节点。
(4)B、C、D同时接收到来自A和其他中继节点的数据分片并重新整合为完整的数据。
基于如上策略,图1示例网络中最终的数据分发结果如下:
(1)A-B方向,分片1和2传输路径为A-C-D,分片3传输路径为A-B,分片4传输路径为A-D-B;
(2)A-C方向,分片1和2传输路径为A-C,分片3传输路径为A-B-C,分片4传输路径为A-D-C;
(3)A-D方向,分片1和2传输路径为A-C-D,分片3传输路径为A-B-D,分片4传输路径为A-D。
基于软件分发策略,提出了一个适应拥塞控制的最小最大整数线性规划(ILP)的流量调度模型。该模型的参数、输出变量和约束条件如下详述。在此基础上,进一步探讨了该模型的实际应用。
流量调度优化算法依据网络链路的状态(可用带宽、丢包率、延时)分配各方向的数据分片数量,以达到网络资源的最大化利用和分发效率的最大化提升。算法涉及的参数如下所示:
1.1.1 单播模型
目标函数(1)最优化从源节点到单个目的节点的分发效率,即最小化将数据分发到所有目的节点的最终任务完成时间。
1.1.2 多播模型
目标函数(4)最优化从源节点到多个目的节点的分发效率,即最小化将数据分发到所有目的节点的最终任务完成时间。
对于软件分配策略,采用了一种改进的整数多重背包模型[4,13-14],相比于文献[15]使用遗传算法提高软件部署中的参数配置效率而没有处理软件部署的系统稳定性与资源利用效率问题,本文通过将软件组分配到不同的服务器上,以实现服务器资源的负载均衡,从而极大地提高了系统的稳定性。
本文考虑两种情况。在一对一的软件分配情况下,每个软件只分配一次,分配所有软件后,每个服务器上的资源占用最平衡。相比之下,在一对多的软件分配情况下,每个软件可以在不同的服务器上被多次分配,这引入了更大的数学复杂性。具体的,考虑一对多的一个例子,将七个软件分配到四个服务器上,根据软件资源占用和服务器容量,本文的软件分配策略提供了最负载平衡和最优资源利用的分配方案。如图2所示,分配结果是a-A,d-A;b-B,c-B;f-C;e-d,g-D,所有服务器资源利用率均为0.2%,实现负载均衡的资源利用。
图2 负载均衡的软件部署策略Fig.2 Software deployment strategies for load balancing
基于软件部署规模的可扩展性、软件系统的稳定性和资源利用效率三方面考虑,构建软件部署的改进多背包模型。给定的参数和输出变量如下所示:
给定参数:
k:表示所需安装的软件,总数为K;
m:表示每个服务器,总数为M;
sdk:表示安装第k个软件所需硬盘大小;
sgk:表示安装第k个软件所需安装的个数;
sdm:表示第m个服务器硬盘大小;
输出参数:
:表示第k个软件是否安装在第m个服务器,取值为0 或者1,其中1 表示安装,0 表示不安装。
基于可扩展性、系统整体稳定性和整体资源利用率构建改进的多背包模型,得到目标函数:
服从下述的约束条件:
约束条件(1)表示部署在m台服务器上的软件总的所占硬盘大小不能超过该台服务器本身的硬盘大小;约束条件(2)表示部署在所有服务器上的第k个软件总和不能超过需要部署的个数;约束条件(3)表示变量取值为0 或者1。约束条件(2)的sgk可以取值1 也可以是其他任意符合要求的正整数,从而该模型将单个软件只能部署一次和单个软件可以部署多次两种情形都涵盖了,实际上也正是因为该约束条件使得模型最糟糕复杂度从(2K)M增加至(2K+M)M,由于M一般是远大于K的,复杂度的增加导致依靠人工专家经验的部署策略效率远差于依靠改进背包模型的部署策略。
为了评估软件分发和分配策略,本文使用LP 求解器Gekko 和OR-Tools 进行了基于模拟的实验。为了比较,还实现了传统的和贪婪的软件分发和分配模型。具体而言,对于传统的软件分发,源节点将软件数据文件分发到目标节点,而不使用其他节点作为缓存节点。对于贪婪的软件分发模型,软件数据被分割并平均分配到每条路径上以进行并行传输。对于贪婪的软件分配模型,每个软件都分配给资源最空闲的服务器。
对于软件分发策略,在10、15、20、25 个节点的网络中进行了100 次迭代的随机生成网络条件的模拟。其中,随机生成的每条链路可用带宽在100 Mbit/s 到1 000 Mbit/s之间,丢包率在0到10%之间,延时在50 ms到1 s 之间。数据文件大小为1 000 MB,并从每个节点往所有其他节点分发。进一步为了直观地量化表示策略的优势程度,将最优策略对比传统策略的数据分发效率提升定义为:
将贪婪策略对比传统策略的数据分发效率提升定义为:
2.1.1 单播软件分发
图3 所示为一个25 节点网络的单播分发结果对比。由图中可见,提出的最优策略由于采用了最优流量调度算法,在所有100 次仿真中对比其他两种策略,在分发时间上均表现出极大的优势。贪婪策略由于采用均分的流量分配模式,得出的分配结果远不如最优解。而传统策略则具有最差的分发效率。
图3 单播数据分发时间对比Fig.3 Comparison of data distribution time for unicast case
图4 所示为在不同规模网络下采用不同分发策略的效率提升对比。其中,在25 节点网络中采用最优策略对比传统策略可实现85%以上的效率提升,且随着网络规模扩大,提升效果也更明显。相比之下,贪婪策略对比传统策略也有60%~80%的效率提升,但仍不及提出的最优策略。其原因在于最优策略实际在值域空间中选取了最优的流量分配解,而贪婪策略则只选取了平均解。
图4 单播数据分发效率提升Fig.4 Improvement ratio of data distribution efficiency for unicast case
2.1.2 多播软件分发
图5 展示了在一个25 个节点的网络中多播软件分发策略效果。在所有的100个样本中,全局网络资源进行并行传输的最优方式明显优于贪心和传统的软件分发模型。
图5 多播数据分发时间对比Fig.5 Comparison of data distribution time for multicast case
图6可以看出,最优分发模型相比传统直传方式可以减少85%左右的分发时间而贪婪模型只能减少75%左右,显示出最优模型的优势。
图6 多播数据分发效率提升Fig.6 Improvement ratio of data distribution efficiency for multicast case
实际上,极小化最大整数线性规划(ILP)方法试图在广阔的搜索空间中寻找最优解,传统的投递算法和贪心的投递算法的结果可以被视为整个搜索空间中的两个特殊解决方案,对于传统的投递算法,被安排到缓存节点的数据切片设置为0,而对于贪心投递算法,被安排到所有缓存节点的数据切片是相等的。因此,合理地说这两个解决方案的性能应该比最优解决方案差,这与仿真结果是相符的。
对于软件分配策略,运行了一对一和一对多两种情况的模拟。对于每种情况,随机生成了100个软件和服务器条件。模拟参数随机生成如下:软件大小在300 MB和10 000 MB之间随机生成,服务器存储大小在200 GB和600 GB 之间随机生成。对于一对多的情况,每个软件的数量在1 到2 之间随机生成,总软件数量为300 和200两种场景,服务器数量为10和15两种。
2.2.1 1对1软件部署仿真
图7 展示了在300 个软件和15 个服务器的一对一场景,从仿真图可看出最优部署策略资源利用效率远高于贪婪策略,这是因为最优策略能够以最优且负载平衡的方式充分利用全局服务器资源。
图7 一对一软件部署效率对比Fig.7 One-to-one software deployment efficiency comparison
2.2.2 1对多软件部署仿真
图8 展示了在300 个软件和15 个服务器的一对多场景,从仿真图可看出最优部署策略资源利用效率仍然远高于贪婪策略。
图8 一对多软件部署效率对比Fig.8 One-to-many software deployment efficiency comparison
表1 列出了一对一和一对多在各种场景下平均资源利用情况。对于一对一情况,最优策略相对贪婪模型提高了接近30%的资源利用率,对于一对多情况,最优策略相对贪婪模型最高实现了接近20%的资源利用率提升,最后一列给出了最优部署策略相比贪婪策略资源利用率具体的提升比率。最优软件分配策略在广泛的搜索空间中寻找最优且负载平衡的解决方案。事实上,贪婪模型的解决方案可以被视为整个搜索空间中的特殊解决方案。因此,贪心模型的性能比最优解决方案差是可以理解的,这与模拟结果相符。
表1 最优策略与贪婪策略部署资源利用率对比Table 1 Comparison of resource utilization between optimal strategy and greedy strategy deployment
为了进一步验证分发和部署策略技术的可行性,分别进行了多播分发和软件部署的实验场景验证。
为进一步验证提出的技术可行性,搭建了一个四节点网络,并基于可靠UDP传输协议实现数据分发策略,实验拓扑参考图1,测试从A往B、C、D三个节点分发数据的场景。首先测试对比最优策略与传统策略。数据文件大小为1 GB,设置每条链路具有相同的带宽、丢包率和延时,其中带宽固定为1 Gbit/s,丢包率和延时变化。对比测试的数据分发时间结果如表2所示(链路状态为链路丢包率和延时)。在相同网络条件和数据样本下,采用最优策略比采用传统策略用时平均减少50%以上,最后一行给出了具体的提升效率。
表2 最优策略与传统策略数据分发时间对比Table 2 Comparison of data distribution time for optimal strategy and conventional strategy
其次测试对比最优策略与贪婪策略。链路状态设置为:A-B,带宽1 Gbit/s,丢包率0%,延时0 ms;A-C,带宽800 Mbit/s,丢包率2%,延时50 ms;A-D,带宽500 Mbit/s,丢包率4%,延时100 ms;其他链路,带宽1 Gbit/s,丢包率0%,延时0 ms。表3 所示为采用两种策略的数据分发时间对比(运行10 次实验测试)。结果显示,采用最优策略与贪婪策略相比,数据分发用时平均减少57%,具体提升为表3最后一列。
表3 最优策略与贪婪策略数据分发时间对比Table 3 Comparison of data distribution time for optimal strategy and greedy strategy
为了验证软件部署策略的有效性,考虑五台服务器的实际部署场景。其中,五台服务器的配置相同,内存均为16 GB,存储空间分别是512 GB、512 GB、1 TB、256 GB、1 TB,待部署软件有160 个,这些软件包括Tomcat-9.027、人大金仓数据-12.1.0.2、Python-3.5.2、neo4j-3.5.9、py2neo-4.3.0、Flask-1.1.2、curl-7.71.1 等相关软件应用,软件大小从35 MB 到2.1 GB 不等。下面针对一对多部署场景随机从160个软件中抽取100个软件测试10组部署数据,对比贪婪和目标部署策略。表4实验数据表明,对于有多种大小服务器部署的场景,贪婪策略对资源利用率更低,本文所提出的部署策略具有更好的平均资源利用率,利用率提高了大约17%,具体提升比率为表4最后一列。
表4 最优策略与贪婪策略软件部署资源利用率对比Table 4 Comparison of resource utilization between optimal strategy and greedy strategy deployment
由于需要使用大量种类繁多的应用软件来完成相关任务,而单个指挥中心的服务器容量有限,因此需要在各个指挥中心之间进行网络和计算资源共享。针对目前软件分发和部署所存在的效率与稳定性和资源利用率等问题,提出了软件分发和部署模型提高分发效率和部署的稳定性与资源利用率。具体而言,对于软件分发,将软件数据分成多个片段,并沿不同路径传输,通过不同路径并行传输,实现数据的协同传输。对于软件部署,通过考虑负载均衡,利用改进的整数多背包模型构建了部署策略,实现部署的稳定性和资源利用率的提升。仿真结果表明,在一个25节点网络中,软件分发策略减少了最高85%以上的传输时间;对于300个软件和15个服务器的软件部署场景,软件部署策略提高了最高30%的资源利用率。更进一步,通过实验环境验证,软件分发最优策略相比于传统的直发和贪婪的均发方式都能减少50%以上的传输时间,软件部署资源利用率相比贪婪的方式可提高20%左右资源利用率。表明本文所提出的软件分发和部署策略的有效性。
更进一步,某些特殊情形下会遇到网络抖动的软件分发和带依赖关系的复杂软件部署问题,而目前分发模型是无法处理网络抖动的情形,部署模型也需要改进才可以处理带依赖关系的部署问题。后续将改进本文相关的方法去解决上述问题。