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