資料介紹
在業內,計算機應用系統的可用性定義為計算機應用系統保持正常運行時間的百分比,通常用表1所示的“9”的個數來劃分可用性的類型。
![基于分布式數據庫或文件系統的高可用性的軟件架構設計方案](/uploads/allimg/171027/2362486-1G02G0322I28.png)
通常,硬件冗余(容錯計算機、雙機或多機集群、磁盤陣列、SAN等)、數據復制、合理的災難備份和恢復策略都可以極大地提高計算機應用系統的可用性。正因為如此,當前,對于計算機應用系統的高可用性、業務的可持續性要求,業內通常以硬件系統的高可用性來應對或代替。常見的解決方案是雙機(或多機)集群方案或直接采用容錯計算機來保障系統的高可用性,應用軟件的設計和開發往往僅注重業務流程的分析和過程控制。在這種完全依賴硬件來保障整個系統的可用性的系統里,一旦關鍵硬件出現故障或數據庫宕機,正在進行中的業務流程(如需較長執行時間的事務處理、后臺批處理過程等)必然會中斷,這是因為雙機切換也需要時間。對此,應用軟件本身并無多少作為,該類業務必須等待系統重新恢復后全部或部分重做。
本文以基于大型數據庫的應用系統為例,從“軟件容錯”設計的概念出發,參考“分布式”數據庫結構設計,以“系統服務總線”為核心,給出了一種可行的高可用性軟件架構的設計方案,可以極大地提高應用軟件的可用性和業務系統的可持續性。無論是傳統的C/S架構,還是近年來流行的B/S架構,本文中給出的設計方案都有一定的參考意義。
1 軟件結構模型
任何基于大型數據庫的應用系統,都可以抽象為對數據的“讀”和“寫”操作。至于客戶端如何展現“讀”到的數據,以及“客戶端”與“服務端”基于何種通信協議通信,不在本文討論之列。
軟件結構的設計其實就是針對“讀”和“寫”的一系列流程的設計。如何最大限度地保證系統中的所有“硬件”和“軟件”協同工作,正確完成每一次“讀”和“寫”的操作,也就是對系統“高可靠性”和“高可用性”的要求。
圖1是基于“軟件容錯”和“分布式數據庫系統”的原理,并參照了計算機“總線”的工作原理給出的一種基于分布式數據庫或文件系統的高可用性的軟件架構設計方案。系統采用3層架構:客戶端、中間應用層和數據庫層。
![基于分布式數據庫或文件系統的高可用性的軟件架構設計方案](/uploads/allimg/171027/2362486-1G02G03233J3.png)
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或混合體。
![基于分布式數據庫或文件系統的高可用性的軟件架構設計方案](/uploads/allimg/171027/2362486-1G02G0322I28.png)
通常,硬件冗余(容錯計算機、雙機或多機集群、磁盤陣列、SAN等)、數據復制、合理的災難備份和恢復策略都可以極大地提高計算機應用系統的可用性。正因為如此,當前,對于計算機應用系統的高可用性、業務的可持續性要求,業內通常以硬件系統的高可用性來應對或代替。常見的解決方案是雙機(或多機)集群方案或直接采用容錯計算機來保障系統的高可用性,應用軟件的設計和開發往往僅注重業務流程的分析和過程控制。在這種完全依賴硬件來保障整個系統的可用性的系統里,一旦關鍵硬件出現故障或數據庫宕機,正在進行中的業務流程(如需較長執行時間的事務處理、后臺批處理過程等)必然會中斷,這是因為雙機切換也需要時間。對此,應用軟件本身并無多少作為,該類業務必須等待系統重新恢復后全部或部分重做。
本文以基于大型數據庫的應用系統為例,從“軟件容錯”設計的概念出發,參考“分布式”數據庫結構設計,以“系統服務總線”為核心,給出了一種可行的高可用性軟件架構的設計方案,可以極大地提高應用軟件的可用性和業務系統的可持續性。無論是傳統的C/S架構,還是近年來流行的B/S架構,本文中給出的設計方案都有一定的參考意義。
1 軟件結構模型
任何基于大型數據庫的應用系統,都可以抽象為對數據的“讀”和“寫”操作。至于客戶端如何展現“讀”到的數據,以及“客戶端”與“服務端”基于何種通信協議通信,不在本文討論之列。
軟件結構的設計其實就是針對“讀”和“寫”的一系列流程的設計。如何最大限度地保證系統中的所有“硬件”和“軟件”協同工作,正確完成每一次“讀”和“寫”的操作,也就是對系統“高可靠性”和“高可用性”的要求。
圖1是基于“軟件容錯”和“分布式數據庫系統”的原理,并參照了計算機“總線”的工作原理給出的一種基于分布式數據庫或文件系統的高可用性的軟件架構設計方案。系統采用3層架構:客戶端、中間應用層和數據庫層。
![基于分布式數據庫或文件系統的高可用性的軟件架構設計方案](/uploads/allimg/171027/2362486-1G02G03233J3.png)
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或混合體。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 虛擬化模型驅動的分布式數據湖架構設計 5次下載
- 區塊鏈中的分布式數據庫管理系統相關研究 8次下載
- 基于分布式文件系統元數據操作優化 0次下載
- 分布式數據庫中一致性與可用性的關系 0次下載
- 分布式數據庫聚合計算性能優化 0次下載
- 分布式數據庫控制協調體系結構的研究與實現 0次下載
- 分布式數據庫分片關系變換查詢優化 0次下載
- 基于分布式數據庫系統的數據分配模型研究
- 海量郵件分布式文件系統的設計與實現
- 基于分布式數據庫技術的森林防火指揮系統的研究
- 基于入侵容忍的分布式數據庫安全體系結構
- 分布式數據庫技術與MO在GIS系統集成開發中的應用
- 分布式數據庫搜索引擎的索引建立和優化
- 采用信任管理的分布式文件系統TrustFs
- 分布式數據庫系統及其應用 PDF 0次下載
- 基于英特爾至強6能效核處理器優化原生分布式數據庫OceanBase 539次閱讀
- tldb提供分布式鎖使用方法 923次閱讀
- 數據庫如何實現分布式鎖 5115次閱讀
- 互聯網領域常見的數據庫架構方案 1387次閱讀
- 如何使用分布式存儲系統促進AI模型訓練 608次閱讀
- Nginx高可用方案 551次閱讀
- 什么是分布式文件系統 4286次閱讀
- 嵌入式移動數據庫的結構體系特點及優化查詢方法研究 2346次閱讀
- 分布式系統CAP、ACID、BASE概念介紹 2207次閱讀
- 干貨:解決分布式緩存與數據庫的雙存儲雙寫 2615次閱讀
- 微服務架構下分布式數據庫如何支撐千億級數據 3632次閱讀
- 盤點一下這些常見的分布式文件系統 1.1w次閱讀
- 通過安裝該Linux-HA軟件可以實現Linux雙機系統的高可用性解決方案 7688次閱讀
- 基于COM技術的SCADA系統數據庫設計 2459次閱讀
- 深度解讀分布式存儲技術之分布式剪枝系統 1860次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論