云计算数据中心设备分层算法

一.算法的目的与意义

当前数据中心网络拓扑结构通常采用层次结构,如业界最常用的树形拓扑结构中,所有设备可以分为服务器层、边界交换机层、核心交换机层。每层设备的功能,配置,类型等都存在很大的差异,又由于数据中心中设备数量巨大,因此,设计一个算法,自动分析出每个设备具体属于那一层次是很有必要的。

 

二.算法输入与输出

算法输入:设备间连接关系,设备类型(服务器或交换机)

算法输出:设备所属层次(最底层是服务器---层次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-->

猜你喜欢

转载自iam42.iteye.com/blog/1523996