3.0discovery模塊總結(jié)
1. 解決了有時發(fā)現(xiàn)程序結(jié)束不了的問題,根本原因在于有一個set沒有同步,改為
hasDetected = Collections.synchronizedSet(new HashSet<String>())
后,問題解決。
2. 更改了路由發(fā)現(xiàn)中關(guān)于子網(wǎng)的一個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中只能對一個網(wǎng)絡(luò)進(jìn)行發(fā)現(xiàn),3.0可以對多個網(wǎng)絡(luò)進(jìn)行發(fā)現(xiàn),畫出多個拓?fù)鋱D。
4. 2.0中只能有一個發(fā)現(xiàn)范圍,3.0可以增加多個發(fā)現(xiàn)范圍。
5. 2.0中各表之間沒有關(guān)聯(lián),初始化時要執(zhí)行多條SQL代碼,3.0中利用表外鍵,
只要刪除一條記錄,就可以刪除所有相關(guān)數(shù)據(jù)。
6. 3.0在發(fā)現(xiàn)完之后,保存所有設(shè)備的SNMP表數(shù)據(jù)。
7. 3.0為再發(fā)現(xiàn)留有接口,使拓?fù)湓侔l(fā)現(xiàn)成為可能,只是暫時沒時間去實現(xiàn)。
8. 拓?fù)涔?jié)點排序算法以及拓?fù)鋱D的生成
排序算法 MapCompositor 給它節(jié)點以及連接,按一定算法計算出各節(jié)點的位置坐標(biāo)。
DefaultCompositor實現(xiàn)接口computeCoordinate,把節(jié)點按排成若干個圓。
用DefaultMapBuilder dmb = new DefaultMapBuilder();
dmb.buildMap(config.getId());
來測試排序算法,因為它不要用到內(nèi)存中的數(shù)據(jù),直接取數(shù)據(jù)庫的數(shù)據(jù)。
發(fā)現(xiàn)執(zhí)行的是 NewDiscoveryVisitor.buildDefaultMap()
調(diào)用發(fā)現(xiàn)后內(nèi)存中的數(shù)據(jù)。
9.增加網(wǎng)絡(luò)設(shè)備的服務(wù)器時,可以重用發(fā)現(xiàn)模塊中的代碼。在2.0中是專門寫了一長串代碼,
與發(fā)現(xiàn)模塊沒關(guān)系。