云计算数据中心设备分层算法
一.算法的目的与意义
当前数据中心网络拓扑结构通常采用层次结构,如业界最常用的树形拓扑结构中,所有设备可以分为服务器层、边界交换机层、核心交换机层。每层设备的功能,配置,类型等都存在很大的差异,又由于数据中心中设备数量巨大,因此,设计一个算法,自动分析出每个设备具体属于那一层次是很有必要的。
?
二.算法输入与输出
算法输入:设备间连接关系,设备类型(服务器或交换机)
算法输出:设备所属层次(最底层是服务器---层次0)
三.算法实现
1)首先将所有设备的层次都置为0,把它们放入同一个集合中,我们称之为未分层集合,并在当中查找设备类型为服务器的节点,将这些设备从所有设备的集合中取出,形成一个新的集合,我们称之为?支点集合。
2)将未分配集合中所有设备的层次加1,然后根据支点集合,在未分配集合中寻找与支点集合中设备有连接关系的设备,将他们从未分配集合中取出,形成新的支点集合。
3)重复执行步骤2),直到未分配集合为空,算法结束,这是所有设备的层次已分出。
伪代码如下:
Layer_Finding(Device) /*初始化,以所有设备的集合作为输入*/ foreach vertex v∈Device If (v.type==server){ delete v from Device; add v into Pivot; } foreach vertex v∈Device V.layer++; //所有设备层数加一 While(true){ If(Device is empty){ Return true;} Foreach vertex v∈Device Foreach vertex v'∈Pivot If ( v connect with v'){ delete v from Device; Add v into new Piovt; } foreach vertex v∈Device V.layer++; //所有设备层数加一 }
?Java版原型系统见附件
?
??
<!--EndFragment-->
?