(1)云计算
云计算通过多种部署方式, 包括私有云、社区云、公有云、混合云4种部署模型, 通过基础设施即服务、平台即服务、软件即服务3种服务模式用户提供服务. 云计算有2个显著的特征, 快速弹性可扩展、按需付费服务.
云计算关键技术分别有: 虚拟化技术、分布式数据存储技术、大规模数据管理技术、调度技术.
(2)调度技术
云计算中的调度一般分为两个部分: ① 资源调度: 资源调度是指对物理资源进行合理有效的管理和使用等; ② 任务调度: 将任务合理分配到合适的计算资源执行.
(3)云环境中的服务交付模型
云计算中的服务交付模型分为4部分, 如图所示.
① 用户提交任务;
② 任务管理器将其拆分成多个子任务;
③ 任务调度器通过调度技术将子任务与物理资源建立映射关系;
④ 任务完成后进行汇总, 反馈到用户.
由此看出, 从任务出发到完成, 在整个任务执行过程中, 调度技术是重中之重, 它影响到了整个系统的运行效率、用户服务质量、系统负载均衡、系统能耗.
因此一个适合云计算环境的调度技术十分重要. 由于调度技术分为资源调度和任务调度, 本文只关注任务调度.
(4) 任务调度算法
任务调度算法根据调度目标的数量可以分为2类: 针对单一目标优化的传统任务调度算法, 针对多目标优化的启发式思想的智能化算法.
4.1 单目标优化的任务调度算法
单目标优化的任务调度算法主要包括最小完成时间(Minimum Completion Time, MCT)、最小执行时间(Minimum Execution Time, MET)、交换算法(Switch-ing Algorithm, SA)、贪心算法(GReedy Algorithm, GRA)、先来先服务(先进先出)算法(First Come First Server, FCFS/ First In First Out, FIFO)、短作业优先算法(Shortest Job First, SJF)等.
其中MET算法考虑到任务的最短执行时间, 忽略了负载是否平衡的问题; MCT算法考量到任务最早的完成时间, 但是可能导致工作时间变长; SJF算法考虑选择用时较短的任务优先执行, 而忽略了任务的优先级.
从以上不难看出: 单目标优化的任务调度算法重点在于单一目标的最优解, 即某个实例的最优, 体现在“最”字上, 这样的话其他实例没在考虑的范围内, 就会不可避免的舍弃掉很多东西, 比较局限于某个目标最优, 而无法考虑到全局, 都是比较极端的算法, 为了达到目标, 可以不惜牺牲一切. 导致的后果是: 虽然该实例取得的效果最好, 但是因为要最大化的满足它而舍弃掉太多东西, 导致其他实例的效果就不是很理想甚至很糟糕, 使得结果具有很大的局限性而无法推广.
4.2 多目标优化的任务调度算法
在优化设计中, 要求多个目标达到最优的问题被称为多目标优化或者多约束问题. 在这种情况下, 基于启发式思想的智能化算法应运而生.
启发式思想的智能化算法思想在于: 解决多约束问题时, 在可以接受的花费的前提下, 得到一个解决方案, 给出尽量满足多个目标优化的一个可行解. 其核心点在于“多目标优化”, 即对于每一个实例来说, 也许当下解并不是它的最优解, 但却是多个实例在尽量满足需求条件下的极优解.
常用的启发式思想的智能化算法包括2类:
- 基于生物启发(Biological Inspiration, BI)
遗传算法(Genetic Algorithm, GA)、模因算法(Memetic Algorithm, MA)、狮子算法(Lion Algorithm, LA)、帝国竞争算法(Imperialist Competitive Algorithm, ICA), 是在云计算中与任务调度相关的少数生物启发算法.
- 基于群体智能(Swarm Intelligence, SI)
蚁群(Ant Colony Optimization, ACO)算法、粒子群优化(Particle Swarm Optimization, PSO)算法、模拟退火(Simulated Annealing, SA)算法、人工蜂群(Artificial Bee Colony, ABC)算法、猫群优化(Cat Swarm Optimization, CSO)算法、蝙蝠算法(Bat Algorithm, BA)、风驱动优化(Wind Driven Opti-mization, WDO)算法等.
(5)算法搜索过程中会进行信息交互的算法ACO, PSO都会面临一个问题: 信息交互后, 每个个体都会受到优秀个体搜索结果的影响, 都会向着优秀的个体“看齐”, 这样就会导致算法收敛速度大大加快. 算法收敛速度快会产生2种结果:
① 算法整体的进程节奏加快, 更早地达到终止条件;
② 算法丧失多样性, 容易陷入局部最优.
与之相反, GA, SA的收敛速度都相对比较慢, 其原因是GA会对种群中的大量个体执行操作, SA则会对温度变化过程中产生的每一个新解都进行操作, 花费了大量的时间, 收敛速度自然就快不起来. 算法收敛速度慢会产生2种结果:
③ 算法整体的进程节奏过慢, 算法搜索效率低;
④ 加强了算法的全局搜索能力, 有效降低陷入局部最优的可能性.