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的任务列表。
cloudletSubmittedList:broker提交给数据中心的任务列表。
- public DatacenterBroker(Stringname)throwsException{
- super(name);
- setVmList(newArrayList<Vm>());
- setVmsCreatedList(newArrayList<Vm>());
- setCloudletList(newArrayList<Cloudlet>());
- setCloudletSubmittedList(newArrayList<Cloudlet>());
- setCloudletReceivedList(newArrayList<Cloudlet>());
- cloudletsSubmitted = 0;
- setVmsRequested(0);
- setVmsAcks(0);
- setVmsDestroyed(0);
- setDatacenterIdsList(newLinkedList<Integer>());
- setDatacenterRequestedIdsList(newArrayList<Integer>());
- setVmsToDatacentersMap(newHashMap<Integer,Integer>());
- setDatacenterCharacteristicsList(newHashMap<Integer,DatacenterCharacteristics>());
- }