CloudSim源码分析-DatacenterBroker创建

来源:互联网 发布:通达信是什么软件 编辑:程序博客网 时间:2024/06/01 16:59

CloudSim的开发者强烈建议研究人员开发自己的broker策略,可以根据特定的仿真场景实施云任务(cloudlet)到虚拟机的匹配。

DatacenterBroker与云用户直接交互,充当用户与数据中心的中间人,屏蔽了云数据中心的内部操作(如虚拟机的创建、管理、任务单元在虚拟机上的分配),用户只需要提交自己的服务请求即可。

DatacenterBroker定义了一组操作,用于和用户与数据中心的交互。

bindCloudletToVm(int cloudletId, int vmId):明确指定一个给定的云任务必须运行在一个特定的虚拟机上。

processEvent(SimEvent ev):处理这个broker可以获得的事件。

processResourceCharacteristicsRequest(SimEvent ev):处理数据中心特征请求。

processResourceCharacteristics(SimEvent ev):处理数据中心特征响应。

processVmCreate(SimEvent ev):处理虚拟机创建请求的响应。

processCloudletReturn(SimEvent ev):云任务完成后返回。

createVmsInDatacenter(int datacenterId):在某个数据中心中创建虚拟机,但是没有找到具体创建的代码???

submitCloudlets():提交云任务集给已创建的虚拟机。

DatacenterBroker的创建主要是初始化了许多在后续管理调度中会用到的列表。

vmList:待创建的虚拟机列表(VM参数已经设置好,并且new出了VM对象,但是还没有具体创建到数据中心)。

vmsCreatedList:真正创建的虚拟机列表。

cloudletList:用户提交给broker的任务列表。

cloudletSubmittedListbroker提交给数据中心的任务列表


  1. public DatacenterBroker(Stringname)throwsException{
  2.         super(name);

  3.         setVmList(newArrayList<Vm>());
  4.         setVmsCreatedList(newArrayList<Vm>());
  5.         setCloudletList(newArrayList<Cloudlet>());
  6.         setCloudletSubmittedList(newArrayList<Cloudlet>());
  7.         setCloudletReceivedList(newArrayList<Cloudlet>());

  8.         cloudletsSubmitted = 0;
  9.         setVmsRequested(0);
  10.         setVmsAcks(0);
  11.         setVmsDestroyed(0);

  12.         setDatacenterIdsList(newLinkedList<Integer>());
  13.         setDatacenterRequestedIdsList(newArrayList<Integer>());
  14.         setVmsToDatacentersMap(newHashMap<Integer,Integer>());
  15.         setDatacenterCharacteristicsList(newHashMap<Integer,DatacenterCharacteristics>());
  16.     }
0 0
原创粉丝点击