資源描述:
《雙機熱備需求及方案》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、雙機熱備需求及方案n名詞解釋:雙機熱備:雙機熱備特指基于高可用系統(tǒng)中的兩臺服務器的熱備(或高可用),因兩機高可用在國內使用較多,故得名雙機熱備,雙機高可用按工作中的切換方式分為:主-備方式(Active-Standby方式)和雙主機方式(Active-Active方式),主-備方式即指的是一臺服務器處于某種業(yè)務的激活狀態(tài)(即Active狀態(tài)),另一臺服務器處于該業(yè)務的備用狀態(tài)(即Standby狀態(tài))。而雙主機方式即指兩種不同業(yè)務分別在兩臺服務器上互為主備狀態(tài)(即Active-Standby和Standby-Active狀態(tài))。具體可google。n需求:1、業(yè)務切換:
2、一臺機器發(fā)生故障時另一臺機器自動接手業(yè)務并負責運行,業(yè)務交換時間不得長于五分鐘。2、數(shù)據同步:兩臺機器所擁有的以支持業(yè)務正常運行的數(shù)據保持一致,其中異步誤差不得超過五分鐘。3、對外提供統(tǒng)一訪問接口:外部訪問主備機時,標識符一致。n框架方案:1、雙機熱備軟件內嵌:雙機熱備軟件作為需要雙機熱備功能的軟件系統(tǒng)的一個功能組件。2、雙機熱備軟件外部獨立雙機熱備軟件作為一個單獨的工具軟件,以托管方式管理需要雙機熱備功能的軟件,獨立于被托管軟件,且支持托管多個。u比較:1、雙機熱備軟件內置于需要雙機熱備功能的軟件之中則雙機熱備軟件為定制功能,需求固定變化點少,開發(fā)相對容易簡單,缺點
3、是每一款需要雙機熱備功能的軟件都需要編寫獨自的雙機熱備模塊。雙機熱備模塊的開發(fā)受需要雙機熱備功能軟件所采用語言及框架設計的局限。維護成本高,在新的軟件中需要雙機熱備功能時,開發(fā)人員需要重新編寫代碼進行定制并要負責大量白盒測試,后期開發(fā)成本高。2、雙機熱備軟件作為工具軟件獨立,非定制。設計階段需求相對不固定,變化點多,初期開發(fā)難度大,成本高。優(yōu)點:開發(fā)靈活,通用,不局限于具體軟件。僅需開發(fā)一套雙機熱備軟件,可滿足公司所有產品的雙機熱備功能需求,并可作為單獨商品銷售于其他軟件公司。對于公司的產品維護較簡單,在新的軟件中應用雙機熱備軟件時,僅需功能測試。u結論:針對我公司行
4、業(yè)背景結合公司對于平臺軟件的需求、公司產品的特性,本文使用第二種。n詳細方案:業(yè)務切換、數(shù)據同步、統(tǒng)一訪問接口。u業(yè)務切換:一臺機器發(fā)生故障時另一臺機器自動接手服務并負責運行,服務交換時間不得長于五分鐘。此處具有爭議的主要為:主備機關系、服務進程偵聽。l主備機關系:1、絕對概念:主機為絕對主機,備機為絕對備機。主機癱瘓之后備機啟動,當主機恢復正常時則自動從備機手中接手業(yè)務進入活動狀態(tài),而備機進入偵聽狀態(tài),不支持手動切換。如我公司安監(jiān)KJ580系統(tǒng)。2、相對概念:當前運行的系統(tǒng)為主機,處于偵聽狀態(tài)的為備機。當備機接手主機業(yè)務后將取代主機地位作為主機運行,而主機則進入備機
5、角色。支持手動切換功能。如北京煤科院人員定位KJ236系統(tǒng)。2比較:1、主備機切換必然導致部分數(shù)據的丟失降低系統(tǒng)可靠性,而雙機熱備的初衷為降低數(shù)據丟失增加系統(tǒng)可靠性。而第一種會額外增加1倍的數(shù)據丟失,即主機癱瘓時丟失一次,主機恢復正常時丟失一次。第二種僅在主機癱瘓時丟失一次。2結論:本文采取第二種,主備機相對的概念。l進程偵聽的方案:2Windows下:ü文件映射:進程把文件內容當作進程地址區(qū)間一塊內存那樣來對待。因此,進程不必使用文件I/O操作,只需簡單的指針操作就可讀取和修改文件的內容。WIN32API中允許多個進程訪問同一文件映射對象,各進程在自己的空間內接受內
6、存的指針,通過使用這些指針實現(xiàn)數(shù)據的共享,以實現(xiàn)進程之間信息交互。實現(xiàn)方法:1.繼承:第一個進程建立文件映射對象,它的子進程繼承該對象的句柄2.命名文件映射:第一個進程在建立文件映射對象時可以給該對象指定一個名字(可與文件名不同)。第二個進程可通過這個名字打開此文件映射對象。另外,第一個進程也可以通過一些其它IPC機制(有名管道、郵件槽等)把名字傳給第二個進程3.句柄復制:第一個進程建立文件映射對象,然后通過其它IPC機制(有名管道、郵件槽等)把對象句柄傳遞給第二個進程。第二個進程復制該句柄就取得對該文件映射對象的訪問權限ü共享內存:文件映射的一種特殊情況。進程在創(chuàng)建
7、文件映射對象時用0xFFFFFFFF來代替文件句柄(HANDLE)表示對應的文件映射對象是從操作系統(tǒng)頁面文件訪問內存,其它進程打開該文件映射對象就可以訪問該內存塊。ü郵件槽:提供進程間單向通信能力,任何進程都能建立郵件槽成為郵件槽服務器。其它進程,稱為郵件槽客戶,可以通過郵件槽的名字給郵件槽服務器進程發(fā)送消息。進來的消息一直放在郵件槽中,直到服務器進程讀取它為止。一個進程既可以是郵件槽服務器也可以是郵件槽客戶,因此可建立多個郵件槽實現(xiàn)進程間的雙向通信ü匿名管道:父進程和子進程之間,或同一父進程的兩個子進程之間傳輸數(shù)據的無名字的單向管道。通常由父進程創(chuàng)