《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 高可用性軟件架構設計和實現
高可用性軟件架構設計和實現
來源:微型機與應用2011年第17期
孟劍萍
(中國電子科技集團公司第二十八研究所,江蘇 南京 210007)
摘要: 硬件冗余可以極大地提高計算機應用系統的可用性,然而,一旦關鍵硬件出現故障或數據庫宕機,正在進行中的業務流程通常會中斷。探討了一種如何實現應用系統高可用性的軟件架構的設計方案,以彌補純硬件冗余應用系統的不足。
Abstract:
Key words :

摘  要: 硬件冗余可以極大地提高計算機應用系統的可用性,然而,一旦關鍵硬件出現故障或數據庫宕機,正在進行中的業務流程通常會中斷。探討了一種如何實現應用系統高可用性軟件架構的設計方案,以彌補純硬件冗余應用系統的不足。
關鍵詞: 高可用性;軟件容錯;分布式數據庫

 在業內,計算機應用系統的可用性定義為計算機應用系統保持正常運行時間的百分比,通常用表1所示的“9”的個數來劃分可用性的類型。

 通常,硬件冗余(容錯計算機、雙機或多機集群、磁盤陣列、SAN等)、數據復制、合理的災難備份和恢復策略都可以極大地提高計算機應用系統的可用性。正因為如此,當前,對于計算機應用系統的高可用性、業務的可持續性要求,業內通常以硬件系統的高可用性來應對或代替。常見的解決方案是雙機(或多機)集群方案或直接采用容錯計算機來保障系統的高可用性,應用軟件的設計和開發往往僅注重業務流程的分析和過程控制。在這種完全依賴硬件來保障整個系統的可用性的系統里,一旦關鍵硬件出現故障或數據庫宕機,正在進行中的業務流程(如需較長執行時間的事務處理、后臺批處理過程等)必然會中斷,這是因為雙機切換也需要時間。對此,應用軟件本身并無多少作為,該類業務必須等待系統重新恢復后全部或部分重做。
 本文以基于大型數據庫的應用系統為例,從“軟件容錯”設計的概念出發,參考“分布式”數據庫結構設計,以“系統服務總線”為核心,給出了一種可行的高可用性軟件架構的設計方案,可以極大地提高應用軟件的可用性和業務系統的可持續性。無論是傳統的C/S架構,還是近年來流行的B/S架構,本文中給出的設計方案都有一定的參考意義。
1 軟件結構模型
 任何基于大型數據庫的應用系統,都可以抽象為對數據的“讀”和“寫”操作。至于客戶端如何展現“讀”到的數據,以及“客戶端”與“服務端”基于何種通信協議通信,不在本文討論之列。
 軟件結構的設計其實就是針對“讀”和“寫”的一系列流程的設計。如何最大限度地保證系統中的所有“硬件”和“軟件”協同工作,正確完成每一次“讀”和“寫”的操作,也就是對系統“高可靠性”和“高可用性”的要求。
 圖1是基于“軟件容錯”和“分布式數據庫系統”的原理,并參照了計算機“總線”的工作原理給出的一種基于分布式數據庫或文件系統的高可用性的軟件架構設計方案。系統采用3層架構:客戶端、中間應用層和數據庫層。

 

 

2 系統設計
2.1 數據庫配置

 為了更清楚地闡述本文的設計方案,先對數據庫的配置及其功能進行描述。本系統中,數據庫按角色可劃分為如下三類數據庫:控制數據庫(COTROLL DB)、日志數據庫(LOG DB)、業務數據庫(BUS DB_N)。
2.1.1 控制數據庫
 控制數據庫也可以是一個或多個系統控制(參數)文件。它存放要訪問的目標數據庫的節點(N)、端口、用戶、文件頭、表、視圖等信息;存放對節點、業務數據庫、表或視圖的授權或訪問控制信息;目標數據庫(或文件)的當前狀態(聯機/脫機、忙/空閑等);目標數據庫中的表或視圖的當前狀態(聯機/脫機、忙/空閑、加鎖/解鎖等)。
2.1.2 日志數據庫
 日志數據庫獨立于業務數據庫之外,用于記錄客戶端節點信息、請求時刻和發來的所有請求的原始內容,但不做業務流程相關的處理、運算等。記錄每次數據操作分配的唯一的“事件號”(EVENT_ID)。對每一次客戶端的“請求”,“系統服務總線”(SYSSRV)會分配唯一的標識符號,可以定義為有一定意義的字符串,比如,“當前時刻+流水號”。以上信息可以被壓縮、打包、加密后存放,以記錄格式保存于數據庫的表或文件中。它可以設計為數據庫中的一個或多個表,也可以是文件格式。
2.1.3 業務數據庫
 業務數據庫記錄所有業務相關的數據信息。所有業務數據庫的相關業務邏輯的數據結構相同,即,N個節點的業務數據庫中與業務模式相關的表、視圖、過程或其他程序設置相同。
需要特別指出的是:
 (1)控制數據庫、日志數據庫和業務數據庫可以是不同數據庫廠家或品牌的產品。比如,日志數據庫可以采用低端的數據庫產品或開源數據庫系統,業務數據庫可以采用高端的大型數據庫產品。
 (2)控制數據庫、日志數據庫和業務數據庫在物理上和邏輯上是可以相互隔離的,這可以極大地提高系統的整體安全性。目標數據庫和要訪問的表或視圖對客戶端來說是“不可見”的,由控制數據庫動態定義和控制。
 (3)所有類別的數據庫在物理上位于一個或多個節點上,即節點N>=1;任意一個節點N上建有一個或多個業務數據庫(邏輯數據庫>=1);任意一個節點是一個完整的、可獨立工作的計算機。根據性能要求,可以是高性能PC機、PC服務器、小型機、集群或超級計算機,或是它們的“混合體”;任意一個節點是指定網絡中的一個指定節點。
2.2 應用層設計
 中間應用層由5個后臺進程構成:(1)系統服務總線(SYSSRV);(2)數據庫寫進程(DBWRT_N);(3)數據庫讀進程(DBRED_N);(4)數據庫在線恢復進程(DBRCY);(5)日志檢查進程(LOGCHK)。
2.2.1 系統服務總線
 這是一個后臺監聽、分發、調度總進程。設計目標具有一定的“自我修復”和“自我復制”動能。它可以根據負載情況,自我復制或開啟子進程響應新的負載;可以動態配置可服務的節點或客戶端;可以為特定節點或客戶端指定專用進程;它通過“DBWRT”和“DBRED”“讀/寫”日志數據庫或日志文件。
2.2.2 寫進程
 寫進程負責向所有節點寫數據。它可以配置成多進程/單進程模式;多進程模式,指對應每個業務數據庫N都有獨立的“寫”進程;單進程模式,指對應多個業務數據庫只有一個主進程,主進程開啟多個線程提供“寫”服務。
2.2.3 讀進程
 讀進程負責向所有節點讀數據,它可以配置成多進程/單進程模式。多進程模式指對應每個業務數據庫N都有獨立的“讀”進程,單進程模式指對應多個業務數據庫只有一個主進程,主進程開啟多個線程提供“讀”服務。
根據需要,讀進程可以配置成:向所有在線節點并發讀數據,返回最快的結果集,拋棄其他的結果集,并中斷其他讀進程;也可以配置成:隨機讀某個節點的數據,如果失敗或超時,則再隨機讀余下的在線節點,直到“讀”成功或失?。贿€可以配置成向所有節點順序讀數據,過程類似上面“隨機讀”。
 以上“讀寫”業務數據庫的進程,設計上支持多種數據庫訪問接口,針對“表”或“視圖”提供統一格式的、標準的、動態的SQL數據操作接口和方法,完成對數據庫中表或視圖的增、刪、改、查和批處理操作。它們可以設計為數據庫中的存儲過程,也可以是C++,Java程序的API或混合體。
2.2.4 數據庫在線恢復進程
 該進程負責檢查全部或部分節點數據庫(包括所有授權控制數據庫、業務數據庫和日志數據庫)或文件的工作狀態;檢查數據庫或文件表中數據的一致性;將以上檢查結果寫入日志數據庫(或日志文件)。
當某個業務數據庫中的表寫入失敗時,它負責從“日志數據庫”的表或日志文件中讀出原始數據,接著寫入出現問題的業務數據庫的表中,并檢查結果?;驈钠渌濣c的數據庫中讀相關數據并寫入到出現問題的業務數據庫的表中。
 接收外部命令,根據“時間點”或“事件號”從特定時刻、特定數據庫(包括日志數據庫)、特定表恢復數據到特定目標數據庫的表或文件。
2.2.5 日志檢查進程
 該進程負責讀、寫日志文件,檢查數據操作結果的一致性。如果不一致,則報告給“系統服務總線”,將問題數據庫或數據庫中的表、視圖設置為“離線”狀態。
3系統實現
3.1系統初始化

 啟動配置好的后臺進程即完成系統初始化過程。
3.2 數據“寫”流程
 數據“寫”流程的主要步驟如下:
 (1)客戶端通過給定協議(或混合多種通信協議)向后臺“系統服務總線”發送“寫”請求。
 (2)激活“數據庫寫進程”,將客戶端的“請求”寫入“日志數據庫”(或日志文件),并分配一個唯一的“事件號”。
 (3)“系統服務總線”查詢“授權/控制數據庫”(或/配置文件)得到客戶端請求訪問的數據存放的目標數據庫(或文件)節點N(或文件存放的節點N)、端口、用戶、表、文件頭等信息。節點N可以是多個,即節點N>=1。
 (4)“系統服務總線”向N個“數據庫寫進程”發送數據“寫”訪問請求,并得到各節點的返回結果集。
 (5)只要有1個節點寫入成功,“系統服務總線”就將寫入成功的標志發回客戶端;“數據庫寫進程”將各節點的返回結果狀態寫入“日志數據庫”(或日志文件)中。
 (6)“日志監控”查詢“日志數據庫”(或日志文件),比較N個節點的寫入狀態。如發現寫錯誤、失敗、超時等狀態,則將該“業務數據庫”(或文件、表、視圖)標志為“非正常聯機數據庫”(或文件、表、視圖不可用)。
 (7)激活“數據在線恢復進程”,進程為“非正常聯機數據庫”,則執行數據庫數據“同步”。在線同步恢復如失敗,則將該“數據庫”標志為“需要DBA維護”的類別,留待DBA或軟件維護工程師處理。
3.3 數據“讀”流程
 數據“讀”流程的主要步驟如下:
 (1)客戶端通過給定協議(或混合多種通信協議)向后臺“系統服務總線”發送“讀”請求。
 (2)激活“寫進程”,將客戶端的“請求”寫入“日志數據庫”(或日志文件),并分配一個唯一的“事件號”。
 (3)“系統服務總線”查詢“授權/控制數據庫”(或/配置文件)得到客戶端請求訪問的數據存放的目標數據庫節點N(或文件存放的節點N)、端口、用戶、表等信息。節點N可以是多點,即節點N>=1。
 (4)“系統服務總線”查詢“授權/控制數據庫”(或/配置文件)得到可用的、空閑的目標數據庫節點N(或文件存放的節點N)。
 (5)激活“讀進程”(或隨機、或順序)向N個節點的“業務數據庫”(或文件)發送數據“讀”訪問請求,并得到各節點的返回結果集。
 (6)“系統服務總線”將最快返回的結果集發回客戶端;拋棄其他結果集,中斷其他讀進程。
在本系統的設計和實現中,由于采用了“分布式”數據庫或文件系統部署,只要N個節點中至少有一個節點的“業務數據庫”正常工作,因為一個或幾個“業務數據庫”系統(或節點硬件)故障所引起的業務系統的不可持續性理論上將可以完全避免,因而提高了系統的“容錯”性。
 由于N個數據庫同時在線,且節點是否可用、空閑等狀態可實時監控,這為特定業務快速訪問和獨享訪問提供了先決條件。如可以指定某特定“業務數據庫”僅為某個或幾個特定客戶端服務提供“讀”訪問。
 因為設計了統一、標準的增、刪、改、查的過程方法或API,前端開發人員甚至不必寫任何SQL語句就可以完成對數據庫中表或視圖的操作,可以大大地縮短編程和調試時間。
 需要指出的是,雖然“系統服務總線”具有“自我修復”和“自我復制”的特點,但因為“節點”硬件故障或“授權/控制數據庫”(或/配置文件)或“日志數據庫”故障而引起的全系統不可用依然存在,因此,建議該節點采用性能好、可靠性高的中、高端服務器。
參考文獻
[1] Mostofa Abd-El-Barr. Design and analysis of reliable and fault-tolerant computer systems[M]. London: Imperial College Press, 2006.
[2] KOREN I, KRISHNA C M. Fault-tolerant systems[M]. Morgan Kaufmann Publishers, 2007.
[3] Hoang Pham. Handbook of reliability engineering[M]. Springer,2003.
[4] MARCUS E, STERN H. Blueprints for high availability. 2nd, edition. John wiley&Sons, 2003.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久人人97超碰精品888| 欧美午夜宅男影院在线观看| 极品少妇一区二区三区| 伊人久久大香线| 中文国产成人精品久久一| 午夜在线一区二区| 欧美精品入口| 久久精品一区二区三区四区| 久久精品国产第一区二区三区| 久久久亚洲精品一区二区三区| 亚洲男女毛片无遮挡| 亚洲精品中文字幕女同| 久久久999| 亚洲制服丝袜在线| 亚洲国产精品久久久久婷婷884| 国产亚洲精品一区二555| 午夜久久久久久| 亚洲欧美国产一区二区三区| 欧美一级久久久久久久大片| 亚洲大片在线观看| 欧美精品日韩综合在线| 亚洲亚洲精品在线观看| 欧美一区二区三区免费观看视频| 激情欧美日韩一区| 国产精品久久久久7777婷婷| 国产一区二区丝袜高跟鞋图片| 国产亚洲精品久久久久婷婷瑜伽| 香蕉av777xxx色综合一区| 久久久久国产精品人| 午夜精品久久久久久久99黑人| 国产婷婷色一区二区三区| 日韩一级视频免费观看在线| 久久精品99国产精品酒店日本| 久久精品在线视频| 国产精品丝袜白浆摸在线| 国产精品美女一区二区在线观看| 欧美顶级艳妇交换群宴| 久久一二三区| 国产精品久久一区主播| 久久精品主播| 国产麻豆一精品一av一免费| 老司机成人网| 亚洲国产91精品在线观看| 亚洲狼人综合| 亚洲大胆人体视频| 国产精品高清在线观看| 亚洲精美视频| 欧美激情精品久久久久久大尺度| 亚洲美女视频在线观看| 久久久精品国产99久久精品芒果| 精品动漫一区二区| 欧美日韩综合视频网址| 99精品视频免费全部在线| 亚洲第一偷拍| 久久综合一区二区三区| 欧美在线一二三四区| 国产欧美成人| 亚洲美女黄色片| 免费欧美高清视频| 久久亚洲精品视频| 一区三区视频| 欧美搞黄网站| 亚洲午夜久久久久久久久电影网| 欧美一区二区精美| 久久精品一区蜜桃臀影院| 国产精品视频一| 欧美性淫爽ww久久久久无| 欧美日韩一区三区四区| 久久嫩草精品久久久精品一| 最新国产乱人伦偷精品免费网站| 欧美+日本+国产+在线a∨观看| 一区免费视频| 性色av一区二区三区| 欧美sm极限捆绑bd| 国产模特精品视频久久久久| 国产精品成人在线观看| 国产视频综合在线| 欧美大片免费观看在线观看网站推荐| 在线播放日韩专区| 一本色道久久综合亚洲精品小说| 欧美日韩精品免费观看视一区二区| 久久亚洲一区二区| 国产亚洲一区二区在线观看| 亚洲一区黄色| 欧美系列精品| 黑人中文字幕一区二区三区| 久久久久久久97| 欧美日韩在线播放三区| 在线播放亚洲一区| 国产亚洲高清视频| 欧美不卡视频| 久久精品一区| 亚洲成色777777女色窝| 欧美成人免费全部观看天天性色| 欧美日韩在线精品一区二区三区| 性欧美超级视频| 国产精品久久久久久超碰| 欧美一区2区视频在线观看| 国产精品毛片一区二区三区| 欧美国产日韩一区| 欧美日韩国产高清视频| 欧美国产精品人人做人人爱| 狠狠入ady亚洲精品| 欧美刺激午夜性久久久久久久| 欧美日韩精品一区二区在线播放| 国产日韩在线视频| 国产精品老女人精品视频| 亚洲在线一区二区三区| 久久精品亚洲精品国产欧美kt∨| 欧美一级视频| 欧美激情精品久久久久久蜜臀| 亚洲天堂网在线观看| 欧美性一二三区| 亚洲日本久久| 欧美看片网站| 中文在线不卡视频| 久久综合伊人77777| 亚洲国产欧美一区二区三区丁香婷| 欧美成人免费va影院高清| 在线观看日韩精品| 亚洲一区视频在线观看视频| 欧美精品精品一区| 蜜桃久久精品乱码一区二区| 欧美伊人久久| 亚洲欧洲一区二区天堂久久| 国产丝袜一区二区| 国产欧亚日韩视频| 欧美激情一区二区三区高清视频| 国产精品久久久久毛片软件| 性久久久久久| 亚洲在线国产日韩欧美| 国产精品区一区二区三| 欧美成人a视频| 一区二区三区中文在线观看| 久久久蜜桃一区二区人| 亚洲永久免费观看| 欧美午夜性色大片在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产亚洲欧美日韩一区二区| 欧美黄色网络| 老司机午夜精品视频在线观看| 亚洲激情亚洲| 欧美日韩精品一区视频| 亚洲国产中文字幕在线观看| 久久亚洲捆绑美女| 欧美一区久久| 国产一区日韩二区欧美三区| 亚洲与欧洲av电影| 国内成人精品一区| 国产精品高清在线| 亚洲一区二区三区在线| 国产精品欧美一区二区三区奶水| 国产伦精品一区二区三区免费迷| 欧美剧在线观看| 欧美一二区视频| 欧美在线|欧美| 欧美国产综合一区二区| 国内精品久久久久久久影视麻豆| 欧美一级片一区| 亚洲午夜一区二区三区| 精品96久久久久久中文字幕无| 亚洲一区二区三区色| 国产精品日韩高清| 国产精品久99| 中国女人久久久| 欧美视频一区二区| 99这里只有精品| 国产精品国产三级国产aⅴ浪潮| 免费在线成人av| 国产日韩一区二区三区在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 欧美激情亚洲国产| 久久久久这里只有精品| 亚洲东热激情| 亚洲欧洲午夜| 在线精品国产成人综合| 亚洲国产婷婷香蕉久久久久久99| 国产午夜精品美女视频明星a级| 欧美成va人片在线观看| 最近中文字幕mv在线一区二区三区四区| 午夜日韩在线| 99国产精品久久久久老师| 国产精品久久精品日日| 国产欧亚日韩视频| 狠狠综合久久av一区二区小说| 亚洲欧美日韩一区| 欧美成在线观看| 亚洲美女网站| 国内欧美视频一区二区| 欧美系列亚洲系列| 国产欧美亚洲精品| 国产一区二区视频在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 久久久精彩视频| 久久久久久亚洲综合影院红桃| 亚洲精品欧美日韩专区| 亚洲激情综合| 国产亚洲第一区| 欧美天堂亚洲电影院在线播放| 久久精品亚洲| 欧美日韩不卡合集视频| 亚洲高清视频一区| 亚洲第一精品久久忘忧草社区| 午夜在线播放视频欧美| 在线成人h网| 亚洲一区二区精品在线| 国产精品久久久久久久久久妞妞| 欧美成人精品一区二区三区| 蜜臀99久久精品久久久久久软件| 国产精品视频成人| 国产亚洲一本大道中文在线| 欧美高清视频在线| 欧美日韩国产va另类| 国产精品露脸自拍| 久久综合伊人| 亚洲欧洲在线一区| 久久精品99无色码中文字幕| 黄色一区二区在线观看| 国产精品系列在线播放| 欧美日韩免费高清一区色橹橹| 亚洲日本电影在线| 亚洲免费观看高清完整版在线观看| 久久久久国色av免费观看性色| 午夜影视日本亚洲欧洲精品| 欧美经典一区二区三区| 久久一综合视频| 久久中文精品| 欧美黑人一区二区三区| 亚洲精品欧美激情| 亚洲第一综合天堂另类专| 欧美激情亚洲自拍| 久久www免费人成看片高清| 国产婷婷色一区二区三区四区| 国产欧美一区二区三区久久人妖| 欧美日韩免费高清一区色橹橹| 国产精品无码永久免费888| 国产精品久久久久永久免费观看| 国产精品久久久久久户外露出| 久久久国产精品一区二区三区| 老牛国产精品一区的观看方式| 国产精品入口麻豆原神| 欧美三级日韩三级国产三级| 精品91在线| 这里只有视频精品| 久久黄色级2电影| 久久一区二区三区av| 欧美亚洲视频在线看网址| 中文在线资源观看网站视频免费不卡| 欧美片第1页综合| 欧美成人午夜剧场免费观看| 国产欧美一区二区三区在线老狼| 一区二区三区不卡视频在线观看| 久久综合给合久久狠狠狠97色69| 在线播放日韩| 国产午夜久久| 在线观看福利一区| 国产精品影视天天线| 在线不卡a资源高清| 国产午夜精品久久| 亚洲欧美视频在线观看视频| 久久一二三四| 欧美成人精品激情在线观看| 一区二区三区黄色| 欧美日韩视频在线观看一区二区三区| 国产欧美在线看| 欧美日韩一区二区三区高清| 国产日韩精品视频一区二区三区| 国产精品日本| 亚洲天堂久久| 国产午夜精品麻豆| 在线观看欧美激情| ●精品国产综合乱码久久久久| 久久久欧美精品sm网站| 国产精品区二区三区日本| 国产精品任我爽爆在线播放| 久久婷婷人人澡人人喊人人爽| 亚洲欧美国产精品va在线观看| 欧美成人小视频| 亚洲国产日韩欧美综合久久| 久久这里只有| 欧美日韩精品一区| 国产精品扒开腿爽爽爽视频| 久久人人爽国产| 国产女主播一区二区| 欧美日韩国产综合网| 香蕉国产精品偷在线观看不卡| 日韩午夜精品| 国产精品高清免费在线观看| 国产精品一区二区黑丝| 国产精品地址| 久久久久欧美精品| 免费亚洲电影在线观看| 欧美影片第一页| 国产综合色产在线精品| 亚洲一区二区黄色| 国产私拍一区| 久久婷婷丁香| 亚洲激情在线| 日韩亚洲一区二区| 国产精品你懂的在线| 久久人人爽爽爽人久久久| 久久亚洲不卡| 亚洲一区二区免费| 久久天天躁狠狠躁夜夜av| 国产综合色一区二区三区| 一本久道久久综合中文字幕| 欧美色图五月天| 国产一区二区三区久久精品| 欧美精品久久99久久在免费线| 国产欧美精品日韩区二区麻豆天美| 国产女主播视频一区二区| 在线观看欧美亚洲| 欧美激情综合色综合啪啪| 欧美夫妇交换俱乐部在线观看| 欧美专区中文字幕| 亚洲欧洲精品一区二区三区| 香港成人在线视频| 亚洲精品五月天| 欧美一区二区三区免费大片| 一区二区三区国产在线观看| 99riav久久精品riav| 亚洲免费影视| 亚洲国产一区二区三区a毛片| 欧美三日本三级少妇三99| 黄色精品在线看| 欧美精品在线网站| 欧美久久一级| 亚洲制服av|