afunms

My Software,My Dream—Forge a more perfect NMS product.

3.0discovery模块总结

 1.    解决了有时发现程序结束不了的问题,根本原因在于有一个set没有同步,改为

hasDetected = Collections.synchronizedSet(new HashSet<String>())

后,问题解决。

2.    更改了路由发现中关于子网的一个bug:

原代码:

        if(!pool.existSubnet(subnet)){

          engine.addSubnet(subnet);

            router.addSubnet(subnet);

      }

改为:

Subnet subnet = pool.getSubnetByIP(item.getDest());

          if(subnet==null){ //if subnet doesn't exist

               subnet = new Subnet();                  

              subnet.setNetAddress(item.getDest());

              subnet.setNetMask(item.getNetMask());

              engine.addSubnet(subnet);           

           }

         router.addSubnet(subnet);

3.    2.0中只能对一个网络进行发现,3.0可以对多个网络进行发现,画出多个拓扑图。

4.    2.0中只能有一个发现范围,3.0可以增加多个发现范围。

5.    2.0中各表之间没有关联,初始化时要执行多条SQL代码,3.0中利用表外键,
只要删除一条记录,就可以删除所有相关数据。

6.    3.0在发现完之后,保存所有设备的SNMP表数据。

7.    3.0为再发现留有接口,使拓扑再发现成为可能,只是暂时没时间去实现。

8.    拓扑节点排序算法以及拓扑图的生成

排序算法 MapCompositor 给它节点以及连接,按一定算法计算出各节点的位置坐标。
DefaultCompositor实现接口computeCoordinate,把节点按排成若干个圆。

用DefaultMapBuilder dmb = new DefaultMapBuilder();

dmb.buildMap(config.getId());

来测试排序算法,因为它不要用到内存中的数据,直接取数据库的数据。

   发现执行的是 NewDiscoveryVisitor.buildDefaultMap()

   调用发现后内存中的数据。

9.增加网络设备的服务器时,可以重用发现模块中的代码。在2.0中是专门写了一长串代码,
与发现模块没关系。

posted on 2009-01-24 22:21 afunms 阅读(284) 评论(1)  编辑  收藏

Feedback

# re: 3.0discovery模块总结[未登录] 2010-04-06 10:23 杨东升

请问博主发现的算法是怎么样的?我用了很多,但效果都不是很好  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航:
 

My Links

News

留言簿(18)

随笔档案

相册

搜索

最新评论

阅读排行榜