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中是專門寫了一長串代碼,
與發現模塊沒關系。