號碼攜帶集中管理系統的高可用技術應用
3.5.2 數據庫集群軟件
我們以ORACLE的真正應用集群(Real Application Cluster,RAC)軟件為例,介紹數據庫集群軟件的主要特點。
(1)共享磁盤
與Single-Instance Oracle的存儲方式最主要的不同之處在于RAC存儲必須將所有RAC中數據文件存放在共享設備中,以便訪問相同Database的Instance能夠共享。同時,為了能夠使每個Instance能夠獨立操作,也為了系統恢復時其他Instance能找到相關的操作痕跡,RAC數據庫與單實例數據庫在存儲結構上還存在以下不同:
(1)每一個Instance都有自己的SGA(系統全局區)。
(2)每一個Instance都有自己的Background Process。
(3)每一個Instance都有自己的Redo Logs。
(4)每一個Instance都有自己的Undo表空間。
RAC也不能使用傳統的文件系統,因為傳統的文件系統不支持多系統的并行掛載,必須將文件存儲在沒有任何文件系統的裸設備或是支持多系統并發訪問的文件系統中。
RAC操作要求在所有Instance中對控制共享資源的訪問進行同步。RAC使用Global Resource Directory來記錄Cluster Database中資源的使用信息,Global Cache Service(GCS)和Global Enqueue Service(GES)管理GRD中的信息。每個Instance在進行讀寫操作后,要由GCS或者GES按照嚴格的流程同步到其他Instance的Buffer中。
(2)緩存融合(Cache Fusion)
在RAC環境中,每個實例的內存結構和后臺進程都是相同的,它們看起來像單一系統的一樣。每個實例的SGA內有一個緩沖區,使用Cache Fusion技術,每個實例就像使用單一緩存一樣使用集群實例的緩存來處理數據庫。Cache Fusion技術可以最大限度地降低磁盤I/O,優化數據讀寫。節點之間會產生不小的網絡通信和CPU的開銷,因此雙節點RAC的性能不會是單節點性能的兩倍。
(3)透明應用切換
當RAC群集中的一個節點發生了故障,故障節點上所有保存在內存中運行的事務會丟失,Oracle將故障節點所擁有數據塊的控制權限重新轉交給正常節點,此過程稱為全局緩存服務重置。在全局緩存服務重置發生時,RAC中所有服務器都會被凍結,所有應用程序將被掛起,GCS將不會響應群集中任何節點發出的請求;重置后,Oracle讀取日志記錄,確定并鎖定需要恢復的頁面,并執行回滾,此時數據庫恢復可用。
3.6 應用軟件的系統恢復方案
即使我們采取了前面所有的措施,也需要考慮在前面方案失敗的情況下,即系統底層軟件或者硬件發生錯誤而導致系統重啟時的處理辦法。
系統在重啟前,系統中正在運行的有若干個流程,每個流程都處于不同的狀態,應用軟件的恢復方案就是要保證系統重啟后,這些狀態都能夠恢復并自動運行到結束狀態。為此,系統在運行過程中,所有消息和流程的狀態都需要在修改的時候保存在數據庫中,而不能僅僅保存在內存中,在System Recover的時候,需要檢查數據庫中所有沒有到最終狀態的消息和流程并進行后續處理。
CSMS在System Recover后實現過程如下:
(1)恢復所有消息:恢復CSMS發出的消息,恢復CSMS收到的消息。
(2)恢復申請流程。
(3)恢復注銷流程。
(4)恢復停機相關流程。
(5)恢復審計流程。
(6)檢查當天的生效廣播。
(7)檢查當天的同步。
(8)檢查當月的同步。
系統恢復的關鍵就是要清楚每個流程的不同狀態,比如在消息的恢復中,對于從CSMS發送出去的NP消息,狀態包括:
●Init(初始)。
●Sending(發送中):該消息已經發送給SOA/LSMS,等待ACK。
●Wait Send(等待發送):ACK超時重發。
●Sent(發送成功):收到ACK信息。
●Complete(完成):收到該NP消息(請求/指示)的回復(響應/確認),并已經成功發送相應的ACK。
對于CSMS接收到的NP消息,狀態包括:
●Init(初始)。
●Processing(處理中):表示系統正在處理該NP消息,主要包括將該NP消息保存入系統,根據該NP消息的類型,選擇需要處理的方式。
●Processed(處理結束):表示系統已經處理結束該NP消息。
●Replying(正在發送回復消息):系統將組織好的NP回復消息已經發送到SOA/LSMS,該消息沒有收到ACK。
●Wait Reply(等待回復):ACK超時等待重發。
●Complete(完成):系統收到該消息的ACK信息。
對于系統的其他恢復流程,方法類似不再贅述。
3.7 磁盤陣列的RAID和磁帶庫備份方案
系統高可靠性最后的考慮就是存儲設備,以目前的技術而言,有效的存儲方案不僅可以保證存儲數據的安全可靠,還能夠提高硬盤讀寫的速度,常用的技術就是RAID。
RAID技術按照級別可以分為RAID0,RAID1,RAID5等,不同級別RAID的存儲效率不同,當硬盤出現故障時能夠恢復的時間也不相同,具體技術可以參考相關技術文檔。
為了進一步增加數據存儲的保護功能,系統一般還會有其他介質的備份方案,如磁帶庫備份。磁盤陣列的數據按照一定的規則備份到磁帶庫上,一方面可以增加存儲設備的容量,同時對數據保護又增加了一層保障。
4 結束語
作為號碼攜帶集中管理系統的重要性能指標之一,高可用性具有十分重要的意義。因為高可用性需要考慮到系統的各個層面,相對也比較復雜。尤其在各種新的IT技術層出不窮的今天,研究各種高可用性技術,選擇合適的高可用性技術方案,應作為系統架構設計者和相關技術研究人員的重點研究內容。本文僅作為拋磚引玉,對號碼攜帶集中管理系統的各種高可用技術進行了簡單的分析和總結,相信這些高可用性技術對類似系統的設計具有一定的參考意義。
評論