劉國秀,蔣朝根
(西南交通大學 信息科學與技術學院,成都 610031)
雙主控網(wǎng)絡設備中的主用主控板、備用主控板和業(yè)務卡分布在背板不同的槽位上,為了保障系統(tǒng)的高可靠性,需要主從備份和實時信息變化時主用主控板、備用主控板和業(yè)務卡的信息同步,并且還需要存儲路由信息、設備信息和配置數(shù)據(jù)等。然而,目前雙主控網(wǎng)絡設備冗余備份在實現(xiàn)上存在著代碼重用率低和數(shù)據(jù)同步的質量不可控等缺點,并且需要同步的路由信息、設備信息和配置數(shù)據(jù)等由各個應用模塊采取不同的數(shù)據(jù)結構存儲,存儲接口不統(tǒng)一。針對以上存在的問題,設計了嵌入式分布式數(shù)據(jù)庫,它具有的特點可以滿足雙主控網(wǎng)絡設備中的主用主控板、備用主控板和業(yè)務卡對物理分布性和對存儲、備份功能的需求。
主控冗余備份是指設備提供兩塊主控板,互為備份。其中一塊為主用主控板(Master Mpu),處于工作狀態(tài),另一塊作為備用主控板(Slave Mpu),處于備份狀態(tài)。主用主控板運行過程中,將所有靜態(tài)配置信息和一部分動態(tài)信息備份到備用主控板,使得備用主控板具有與主用主控板相同的配置信息。
在雙主控網(wǎng)絡設備中,為了提高網(wǎng)絡設備的可靠性,主控采用冗余備份,當主用主控板宕掉或用戶強制切換時,備用主控板將接替主用主控板,保證系統(tǒng)無間斷的轉發(fā)。雙主控網(wǎng)絡設備冗余備份的實現(xiàn)包括熱切換和熱備份兩個部分。而本文主要介紹基于嵌入式分布式數(shù)據(jù)庫實現(xiàn)的熱備份。系統(tǒng)提供同步機制來實現(xiàn)熱備份功能。系統(tǒng)同步主要包括批量同步、實時同步和強制同步。
嵌入式分布式數(shù)據(jù)庫運行在嵌入式設備上,并且在物理分布上是分布在雙主控網(wǎng)絡設備的不同槽位上的主控卡、備用主控卡和線卡上,不僅具有嵌入式數(shù)據(jù)庫的特點,而且具有分布式數(shù)據(jù)庫的特點,因此,在本課題中稱之為嵌入式分布式數(shù)據(jù)庫。
嵌入式分布式數(shù)據(jù)庫是使用精簡代碼編寫的,運行在嵌入式設備上,需要較少的內存,其速度更快,效果更理想。并且還具有應用的可配置性和可適應性、支持全駐內存的操作、支持多線程等特點。在實際應用中,嵌入式應用一般很少需要處理結構化查詢語言(SQL)那樣的復雜查詢,能夠針對具體應用完成用戶提出的任務比支持通用的查詢界面更重要。因此嵌入式分布式數(shù)據(jù)庫就無需像傳統(tǒng)大型數(shù)據(jù)庫那樣支持開放數(shù)據(jù)庫互聯(lián)(ODBC)和SQL界面。
嵌入式分布式數(shù)據(jù)庫從所處的物理位置上來講,是物理上分散而邏輯上集中的數(shù)據(jù)庫系統(tǒng)。它們雖分布在雙主控網(wǎng)絡設備的不同槽位上的主控板和業(yè)務板上,但又需要集中管理和控制,由以太通道連接起來共同組成一個統(tǒng)一的數(shù)據(jù)庫系統(tǒng)。
嵌入式分布式數(shù)據(jù)庫首先是一個數(shù)據(jù)庫管理系統(tǒng),它有一般數(shù)據(jù)庫管理系統(tǒng)(DBMS)的基本功能,即:數(shù)據(jù)管理包括數(shù)據(jù)庫的定義、存儲和維護等;有效的數(shù)據(jù)庫操作包括查詢、插入、更新和刪除。當然它也具有嵌入式數(shù)據(jù)庫和分布式數(shù)據(jù)庫的特點,如嵌入式、代碼量小輕便靈活、物理分布性、自治性和同步性等。其中同步性是嵌入式分布式數(shù)據(jù)庫的顯著特點。
嵌入式分布式數(shù)據(jù)庫的首要設計目標是實現(xiàn)簡單的存儲和數(shù)據(jù)庫的同步機制,在設計中把數(shù)據(jù)庫的同步機制作為重點。嵌入式分布式數(shù)據(jù)庫可以分為分布式數(shù)據(jù)庫數(shù)據(jù)同步和表的公共存儲兩大部分,體系結構如圖1。其中,分布式數(shù)據(jù)庫數(shù)據(jù)同步主要由以下幾個子模塊構成:
圖1 嵌入式分布式數(shù)據(jù)庫體系結構
(1)數(shù)據(jù)庫初始化模塊:完成數(shù)據(jù)庫資源的初始化。
(2)分布式數(shù)據(jù)庫注冊模塊:分布式數(shù)據(jù)庫注冊模塊完成數(shù)據(jù)庫的分布式注冊,建立主用主控板、備用主控板和業(yè)務板上數(shù)據(jù)庫表間的關系。
(3)分布式數(shù)據(jù)庫基礎機制模塊:提供分布式數(shù)據(jù)庫運行所必須的任務、定時器、消息處理等基礎機制。
(4)數(shù)據(jù)庫管理模塊:提供外部模塊對數(shù)據(jù)庫操作和控制的接口,維護表的分布相關信息及管理數(shù)據(jù)庫的事務等。
(5)數(shù)據(jù)分發(fā)模塊:完成對數(shù)據(jù)庫管理的操作進行同步。
表的公共存儲由公共表存儲查詢模塊完成表存儲、查詢和日志管理等功能。
主控冗余備份在軟件上的實現(xiàn)包括熱切換和熱備份兩個部分。所謂熱切換,是主控冗余系統(tǒng)采用的一種技術,是指在有兩塊主控板的分布式系統(tǒng)中,對其主控板進行1+1的冗余備份;其中主控板的主備兩板保持實時通信,在備用主控板上保持一份與主用主控板上同樣的數(shù)據(jù)而實現(xiàn)熱備份;主用主控板會定期向備用主控板發(fā)送“心跳”報文,當備用主控板一旦檢測到“心跳”報文終止或者收到主用主控板的切換通知,會認為主用主控板發(fā)生了故障,接替主用主控板的工作,從而實現(xiàn)了熱切換。而熱備份就是在系統(tǒng)啟動之后,主用主控板定期將配置信息備份到備用主控板。當備用主控板檢測到主用主控板宕掉或接收到強制切換的shell命令,將接替主用主控板。同時,對原來的主控板會進行故障恢復。由于篇幅所限,本文僅介紹基于嵌入式分布式數(shù)據(jù)庫實現(xiàn)雙主控網(wǎng)絡設備的熱備份。
基于嵌入式分布式數(shù)據(jù)庫實現(xiàn)雙主控網(wǎng)絡設備的熱備份方案如圖2,在系統(tǒng)啟動時主用主控板和備用主控板同時啟動,或在系統(tǒng)已運行的情況下再插入備用主控板,主從協(xié)商完之后,進入嵌入式分布式數(shù)據(jù)庫系統(tǒng),互相通告數(shù)據(jù)庫表的相關信息,完成數(shù)據(jù)庫的分布式注冊,建立主用主控板和備用主控板同步時數(shù)據(jù)庫表間的關聯(lián);數(shù)據(jù)庫表的相關信息通告完之后,則進入主用主控板和備用主控板的批量同步階段,主用主控板會遍歷與備用主控板建立了關聯(lián)的數(shù)據(jù)庫表,把表中的記錄封裝成報文的形式發(fā)送到備用主控板,備用主控板接收到報文后,根據(jù)操作類型完成相關表的操作(包括對表的插入、刪除和更新)。完成批量同步后,則進入實時同步階段,當應用模塊通過嵌入式分布式數(shù)據(jù)庫提供的操作接口對數(shù)據(jù)庫表進行插入、刪除和更新時,則會引起數(shù)據(jù)庫表信息的變化,主用主控板上的嵌入式分布式數(shù)據(jù)庫系統(tǒng)則會及時同步到備用主控板的嵌入式分布式數(shù)據(jù)庫系統(tǒng)中。如果主用主控板發(fā)生故障或強制切換時,備用主控板則會接替主用主控板的工作。
在運行的系統(tǒng)中插入一張業(yè)務卡,業(yè)務卡啟動完畢后,進入嵌入式分布式數(shù)據(jù)庫系統(tǒng),建立與主用主控板同步時數(shù)據(jù)庫表間的關聯(lián);和上述類似,接著批量同步和實時同步,這里不再贅述。便保證了業(yè)務的正常運轉。
如圖2,對嵌入式分布式數(shù)據(jù)庫需要實現(xiàn)的功能和接口描述如下。
圖2 雙主控網(wǎng)絡設備的熱備份方案
分布式數(shù)據(jù)庫數(shù)據(jù)同步:該模塊提供框架,應用程序使用該框架函數(shù)集就可以在嵌入式分布式系統(tǒng)中將信息從主用主控板同步到備用主控板和業(yè)務卡,并且該模塊還提供將同步過來的數(shù)據(jù)根據(jù)操作類型分發(fā)到相應模塊的數(shù)據(jù)庫表中。
應用模塊:在本文中指需要使用分布式數(shù)據(jù)庫數(shù)據(jù)同步的應用模塊。
公共數(shù)據(jù)庫:該數(shù)據(jù)庫提供函數(shù)集,應用模塊可以通過函數(shù)集向數(shù)據(jù)庫中進行插入、刪除和更新等操作,該數(shù)據(jù)庫僅僅是一個簡化的數(shù)據(jù)庫,提供以表的形式進行存儲。
接口A:應用程序操作數(shù)據(jù)庫接口,包括創(chuàng)建表、插入、刪除、更新表項、設置表屬性、啟動、確認、回滾事務等。
接口B:分布式數(shù)據(jù)庫數(shù)據(jù)同步模塊內部接口,通過卡間通訊等將信息傳遞到備用主控板和業(yè)務卡上,接口不對外公開。
接口C:數(shù)據(jù)庫操作接口,包括創(chuàng)建表、插入、刪除、更新表項、設置表屬性和查詢表。
接口D:分布式數(shù)據(jù)庫數(shù)據(jù)同步模塊與應用程序接口,包括插入、刪除、更新表項、啟動、確認和回滾事務。
近年來,隨著互聯(lián)網(wǎng)和信息化建設的迅猛發(fā)展,三層交換機也得到了廣泛應用,它的領域已遍及骨干網(wǎng)、城域網(wǎng)骨干和匯聚層等,特別是用于核心骨干網(wǎng)。因此對三層交換機的可靠性也提出了很高的要求。三層交換機為了提高可靠性,主控板采用了冗余備份技術。
以前冗余備份的實現(xiàn),在三層交換機的開發(fā)中采用的方式為:上層應用模塊通過相關模塊提供的數(shù)據(jù)收發(fā)接口來實現(xiàn)數(shù)據(jù)同步,由于提供的接口相對比較簡單,因此上層應用必須關心數(shù)據(jù)的封裝、解封裝和分發(fā),所以也需要關心熱拔插,主用主控板和備用主控板的批量同步等事件,同時需要設計機制保證數(shù)據(jù)在主用主控板、備用主控板和業(yè)務卡中的一致性。在軟件設計上由于沒有對上層應用模塊的約束,上層應用模塊實現(xiàn)的方式多樣化,沒有統(tǒng)一的接口。缺點:(1)應用模塊代碼重用性差;(2)各個應用模塊實現(xiàn)不統(tǒng)一;(3)應用模塊數(shù)據(jù)同步的實現(xiàn)質量不可控。
另外需要同步的數(shù)據(jù)在存儲方面,應用模塊采取不同的數(shù)據(jù)結構存儲數(shù)據(jù),缺乏標準的存儲接口。并且每增加一款新產(chǎn)品,應用模塊就要增加相應的數(shù)據(jù)結構存儲產(chǎn)品的新特性。各個應用模塊實現(xiàn)復雜,工作量大。
而基于嵌入式分布式數(shù)據(jù)庫冗余備份的新架構,提供了標準且固定,隔離性好的統(tǒng)一的API接口。各個應用模塊直接調用API接口,不必關心內部的實現(xiàn)細節(jié),實現(xiàn)極其簡單,工作量減小。并且數(shù)據(jù)的同步對各個應用模塊已屏蔽。嵌入式分布式數(shù)據(jù)庫還具有存儲查詢功能。
綜上所述,采用新架構的三層交換機的主控板的冗余備份,提高了代碼的重用性,減少了其它應用模塊的工作量和提高了數(shù)據(jù)同步的質量,并且實現(xiàn)了三層交換機的可靠性。
本文首先介紹了雙主控網(wǎng)絡設備的冗余備份,在冗余備份的實現(xiàn)上引入了分布式數(shù)據(jù)庫技術,接著對基于嵌入式分布式數(shù)據(jù)庫雙主控網(wǎng)絡設備冗余備份的實現(xiàn)進行了研究,提出了新的設計方案并進行了原理性介紹,最后把提出的新方案應用在三層交換機的主控板的冗余備份上。這種新方案,提高了代碼的重用性和數(shù)據(jù)同步的質量,并減少了其它應用模塊的開發(fā)工作量,在一定程度上減少了開發(fā)成本,并且實現(xiàn)了設備的高可靠性。本論文的研究意義不僅局限于此,這些成果對于應用于其它領域的研究與運用也具有一定的參考價值。
[1]王能斌. 數(shù)據(jù)庫系統(tǒng)教程[M]. 北京:科學出版社,2002.
[2]肖文鵬. 開源嵌入式數(shù)據(jù)庫Berkeley DB[EB/OL]. http://tech.ccidnet.com, 2004-04-09.
[3]肖迎遠. 分布式實時數(shù)據(jù)庫技術[M]. 北京:科學出版社,2009.
[4]滕永昌. Oracle9i數(shù)據(jù)庫管理員使用大全[M]. 北京:清華大學出版,2004,3.
[5]Thomas Kyte. Oracle 9i & 10g編程藝術:深入數(shù)據(jù)庫體系結構[M]. 蘇金國,王小振. 北京:人民郵電出版社,2006,10.