- 场景:中心云端,没有涉及边缘云端
- 问题描述:给定一个数据中心(云端)以及一个 SaaS 应用程序,将 SaaS 应用程序的不同组件放置在数据中心的不同服务器上,来达到性能最优(应用执行时间最小且服务水平保持在一个合理的等级)。
- 算法:
regrouping algorithm
用于子种群中的服务器之间协作进化,cooperative learning strategy
用于不同子种群中的服务器之间交换信息,来达到放置最优。
A multi-swarm based approach with cooperative learning strategy for composite SaaS placement
Problem Formulation
- 这篇论文是以 SaaS 作为服务放置中的应用服务。
- SaaS 由多个组件构成,包括应用组件 application components 以及数据块 data chunks。
- SaaS 应用程序和数据组件通常部署在云数据中心的虚拟机之上。一个服务器可以一次承载具有不同需求的多个组件。
- 问题描述:给定一个数据中心(云端)以及一个 SaaS 应用程序,将 SaaS 应用程序的不同组件放置在数据中心的不同服务器上,来达到性能最优(应用执行时间最小且服务水平保持在一个合理的等级)。
- 数据中心(云端)包含一系列的计算及存储服务器。
- n 个计算服务器
。 用于表示第 i 个计算服务器的资源能力 表示计算能力 表示内存容量 表示硬盘容量 表示该服务器有几台虚拟机
- m 个存储服务器
。$ss_i = $ 表示第 i 个存储服务器的存储能力 表示云中不同服务器之间的网络通信
- n 个计算服务器
- SaaS 应用程序包含应用程序组件以及数据组件。
- x 个应用程序组件
。 用于表示第 i 个应用程序组件的需求 表示所需的计算资源 表示所需的内存资源 表示所需的存储资源 表示和其他组件之间读写的数据量
- y 个数据组件
。$dc_j = $ 用于表示第 j 个数据组件所需的存储空间 表示 SaaS 应用程序组件之间的关系
- x 个应用程序组件
- 数据中心(云端)包含一系列的计算及存储服务器。
Proposed Algorithm
- 这篇论文所使用的粒子群算法,并不是让一个粒子代表一个放置策略,而是让一个粒子代表一个服务器(计算服务器或存储服务器),多个粒子组成子种群,然后不同子种群间的粒子可能会发生重组。
- 所以这篇论文中的粒子群算法,是整个粒子群代表一个放置策略。
- 某一个子种群就代表某一个组件(应用组件或者数据组件)所放置的服务器的集合。所以对于 n 个应用组件,有 n 个子种群,对于 m 个数据组件,有 m 个子种群。
regrouping algorithm
不同子种群间的粒子有可能会发生重组。
- 重组的依据是
cooperative learning strategy
。
- 重组的依据是
fitness evaluation
粒子群算法中,评估函数也是重要的部分,会直接影响到种群的进化方向,评估函数需要根据所要求的目标来进行设计。
计算服务器的评估函数
表示应用组件的内存要求, 表示计算服务器的内存容量 表示应用组件的计算要求, 表示计算服务器的计算能力 表示应用组件的存储要求, 表示计算服务器的存储容量
这里只是简单相加?没有进行归一化,也没有在每个指标之前加比例系数,看起来并不是很合理,因为其中某个因素的占比过大就会很大程度上影响最终的评估值。
存储服务器的评估函数
表示数据组件的存储要求, 表示存储服务器的存储容量 是要将数据传输给该存储服务器的计算服务器的数量 指的是第 j 个服务器和第 k 个服务器之间的数据传输时间
总的执行时间
最终,总的放置策略的评估函数为
Experimental Results and Analysis
- baseline:Genetic Algorithm、CPSO-SPP、a First Fit Decreasing (FFD) heuristic algorithm
- 变量:服务器数量、SaaS 中组件的数量