CloudSim是什么?
CloudSim是一个用Java语言编写的云计算仿真库。想学习CloudSim的工作原理,您需要具备Java编程的基本知识。CloudSim云仿真软件不需要安装,因为它是一个库,因此您只需要解压压缩包并将.jar文件作为库添加到项目中即可。
CloudSim结构和实体
首先,您需要了解CloudSim中的一些基本实体。每个实体都表示为Java中的一个类,以下简要描述。有关所有课程的更多信息,请访问CloudSim 3.0 API
1. Datacenter
Datacenter由一组hosts组成,它负责管理虚拟机(VM)(例如,VM配置)。它通过从brokers接收VM请求并在host中创建VM,类似于IaaS提供商。
此类表示代表用户行事的代理(broker)。它修改了两种机制:用于向数据中心提交VM配置请求的机制,以及用于向VM提交任务的另一种机制。 CloudSim用户必须扩展此类,以便使用自己的策略进行实验。
3. Host
Host执行与VM的管理相关的动作(例如,创建和销毁)以及向VM更新任务处理。Host具有用于向VM供应存储器,处理元件和带宽的定义策略。Host与Datacenter相关联。它可以托管VM。
4. VM
它代表一台机器的软件实现,该机器执行称为虚拟机(VM)的应用程序,其工作方式类似于物理机器。每个虚拟机将从主机接收的资源划分为在其上运行的任务。
5. Cloudlet
Cloudlet类也称为任务(task)。CloudSim根据其计算要求表示应用程序的复杂性。此类由在DatacenterBroker类中实现的调度策略管理。
在CloudSim中有几个地方可以实现自定义算法,依据打算要写什么算法,这里有一些相应的类可能需要去修改和扩展。
(1)DatacenterBroker:修改虚拟机提供请求被提交到数据中心的方式和云任务被提交和被分配给虚拟机的方式。
(2)VmAllocationpolicy:需要扩展这个抽象类去实现自定义算法,为了确定哪一个主机分配给一个新的虚拟机,可以通过实现optimizeAllocation方法去实现动态虚拟机再分配算法,它在每一次构建时被调用和在这个数据中心的当前虚拟机所有集被传送。
(3)vmscheduler:在一个单独主机上实现资源分配给虚拟机算法。
(4)cloudletscheduler:在一个单独的虚拟机实现调度云任务的算法。
(5)PowerVmAllocationPolicyMigrationAbstract:实现功率监控动态虚拟机整合算法的模板类,用于虚拟机在线迁移到动态再分配虚拟机在每次构建时,需要重写的主要方法是optimizeAllocation。
CloudSim工具支持对云数据中心的物理主机进行虚拟化,提供物理主机到虚拟机的映射和任务到虚拟机的映射功能。CloudSim的CIS(云信息服务)和DataCenterBroker 用来实现资源发现与信息交互,是CloudSim的核心类。DatacenterBroker类的bindCloudletToVM()方法用来指定任务到某一虚拟机上执行,用户自己开发的调度策略通过重载bindCloudletToVM()方法来实现。VMScheduler 类实现了虚拟机的调度分配,物理主机对虚拟机的分配由VMProvisioner类实现。CloudSim的工作方式如下图所示:
Datacenter在资源创建后向CIS注册,CIS为用户查询合适的云服务提供商,DatacenterBroker负责管理信息的交互过程。