
如節點A 所擁有的座標空間為(0-0.5,0-0.5),節點B 所用有的座標空間為(0.5-1.0,0-0.5)。接下來,我們利用下圖來說明CAN 點對點建立的演算法。當一個新的節點欲加入CAN 系統時,新加入的節點會透過一個起始點(Bootstrap)隨機的選擇系統中的節點,並送出加入(JOIN)系統的訊息給隨機選擇的節點。當被選擇到的節點收到加入的訊息時,則均分其所擁有的座標空間。如下圖所示,當節點E 加入節點D 的區域時,則D 將其所擁有座標空間均分給E。
而在CAN 的系統中檔案的儲存方式是當節點欲分享新的檔案加入CAN 系統時,CAN 系統會將其檔案名稱依照雜湊函數計算出一個座標,並將檔案資訊儲存在此座標空間的節點。當節點欲搜尋檔案時,CAN 也是利用每個節點所擁有的路由表(coordinate routing table)來搜尋檔案。路由表內所儲存的資料為記錄在座標空間中相鄰節點的IP 位址及所擁有的空間資訊。因此,當起始點收到系統中節點要求搜尋檔案的訊息時,起始點會先利用雜湊函數計算出此檔案所代表的座標,起始點會從系統中任意選擇一個節點,並將搜尋檔案的座標送給被起始點所選擇的節點。被選擇到的節點收到檔案資料訊息時,會先查詢檔案資料是否存在節點中,如果存在則回報檔案訊息給提出搜尋檔案的節點。如果不存在,則節點會依照節點中的路由表,依據貪婪演算法(greedy algorithm)找出一個與檔案座標最接近的節點,並轉送此查詢訊息,依照此搜尋方式直到找到檔案為止。
沒有留言:
張貼留言