文/劉陽王志謙
随着網絡在生活中适用面越來越廣,使得大部分的網絡服務器在固定時間内所需處理的客戶請求在不斷的增多。目前廣泛實施的DHCP邏輯框架——即基于failover草案的雙機服務模型,已不可能再進一步的優化,隻能通過硬件設備的改良來提升服務效率。所以引入新邏輯框架來解決目前DHCP服務面臨的瓶頸是有其必要性的。
現有的DHCP的多處理機服務設計主要是兩種,其一是将所有的數據保存在數據庫,數據存取以及數據查詢都交由數據庫來完成;另一種是将服務器的IP池劃分為若幹個IP段,每一段由一個服務器來負責IP地址的分配,同時每台服務器采用多線程來并行處理客戶請求以及1∶N的冗餘方案來應對服務器崩潰的情況。
目前所有集群化服務的設計中,共享存儲的應用較為廣泛,實現方式主要分為基于高速緩存行的硬件實現和基于虛存頁的軟件實現,以及目前應用較多的存儲結構主要是兩大類:NUMA(non-uniformMemoryAccess,非一緻訪存結構)和COMA(CacheOnlyMemoryArchitecture,唯高速緩存結構)。前者的做法是:每一個共享頁都有固定的主節點,每一個處理機需要資源時都是從主節點處獲取該共享頁的備份,除此之外所有的處理機都必須根據一緻性協議将相對于主節點的頁差(diff)傳回到主節點進行數據更新。諸如JIAJIA、Cashmere等系統都是基于該存儲結構來實現的;後者則不是基于主節點的對稱存儲結構。其思想是:每一個擁有該共享頁的處理機都将保存這個共享頁和相應的diff,如果一旦其他的處理機需要該共享頁時,就會向當前所有持有該共享頁的處理機發出請求,持有該頁的處理機就會将共享頁和diff一起發送到請求源。ThreadMarks、CVM等系統都是基于這種方法來實現的。
本文的方案的設計場景是在一個局域網内——實現基于局域網内的DHCP服務集群化,如圖1所示。将所有的DHCP服務器放置在同一個網段。采用共享存儲的方法來實現多處理機的數據的一緻性。雖然是基于局域網的DHCP集群化服務,但是對于今後的DHCP雲服務的思想有一定程度上的吻合,所以姑且可以将本文看成是DHCP雲服務的小範圍嘗試。