91精品人妻互换日韩精品久久影视|又粗又大的网站激情文学制服91|亚州A∨无码片中文字慕鲁丝片区|jizz中国无码91麻豆精品福利|午夜成人AA婷婷五月天精品|素人AV在线国产高清不卡片|尤物精品视频影院91日韩|亚洲精品18国产精品闷骚

您當(dāng)前位置:首頁(yè) > 新聞?lì)l道 > 技術(shù)動(dòng)態(tài) > 正文
淺析高性價(jià)比可靠服務(wù)系統(tǒng)構(gòu)建方案

摘要:典型的高可靠性服務(wù)系統(tǒng),一般采用集群冗余備份和高性能的磁盤陣列統(tǒng)一存儲(chǔ)。但是存在成本較高的問題,一般中小型企業(yè)和單位難以承受。針對(duì)這一問題,提出一個(gè)方案,僅使用兩臺(tái)普通PC Server,沒有高性能的磁盤陣列,每臺(tái)服務(wù)器都充分應(yīng)用,通過數(shù)據(jù)庫(kù)同步,智能數(shù)據(jù)庫(kù)訪問層,心跳檢測(cè),當(dāng)其中一臺(tái)服務(wù)器出現(xiàn)異常時(shí),能夠自動(dòng)無(wú)縫地切換到另一臺(tái)服務(wù)器。
論文關(guān)鍵詞:數(shù)據(jù)庫(kù)同步,智能數(shù)據(jù)庫(kù)訪問層,心跳檢測(cè),高性價(jià)比可靠服務(wù)系統(tǒng)
  隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)系統(tǒng)應(yīng)用到日常工作生活的各個(gè)環(huán)節(jié)中,人們的日常生活對(duì)計(jì)算機(jī)系統(tǒng)依賴性越來(lái)越大,當(dāng)計(jì)算機(jī)系統(tǒng)崩潰后的影響也越來(lái)越大。對(duì)于公司來(lái)說(shuō),服務(wù)失敗可能會(huì)丟失大量客戶;對(duì)于政府單位來(lái)說(shuō)會(huì)導(dǎo)致工作中斷。這些都會(huì)帶來(lái)較大的損失。因此當(dāng)前計(jì)算機(jī)系統(tǒng)對(duì)可靠性非常重視,從硬件到軟件到存儲(chǔ)都涌現(xiàn)了大量新技術(shù)和新產(chǎn)品,但這些技術(shù)與產(chǎn)品往往存在價(jià)格昂貴的問題,大量的小型企業(yè)和單位都無(wú)力承擔(dān);谶@一問題本文提出一個(gè)高性價(jià)比的可靠服務(wù)系統(tǒng)方案
  2.典型方案
  對(duì)于大型企業(yè)、重要部門來(lái)說(shuō)構(gòu)建可靠服務(wù)系統(tǒng)一般采用如下的典型方案:
  圖1 可靠服務(wù)系統(tǒng)典型方案
  2.1應(yīng)用系統(tǒng)
  包括數(shù)據(jù)庫(kù)服務(wù)和應(yīng)用服務(wù),使用集群系統(tǒng)。一般使用小型機(jī)服務(wù)器。
  集群系統(tǒng)所具有的獨(dú)特優(yōu)勢(shì)就是具有高可用性和靈活的擴(kuò)展性,能夠?yàn)橛脩舻腎T系統(tǒng)帶來(lái)穩(wěn)定的運(yùn)行性能和高效的數(shù)據(jù)處理能力以及優(yōu)質(zhì)的服務(wù)能力,也因而成為目前大型用戶、關(guān)鍵業(yè)務(wù)的核心支柱。在普通集群技術(shù)中最典型的結(jié)構(gòu)就是兩節(jié)點(diǎn)系統(tǒng),即用兩臺(tái)服務(wù)器協(xié)同工作,當(dāng)一臺(tái)服務(wù)器的系統(tǒng)出現(xiàn)故障時(shí),另一臺(tái)服務(wù)器立即接管全部應(yīng)用服務(wù),從而將系統(tǒng)中斷運(yùn)行的風(fēng)險(xiǎn)降低到最低限度。不過即便是結(jié)構(gòu)最精簡(jiǎn)的兩節(jié)點(diǎn)集群系統(tǒng),也需要兩臺(tái)獨(dú)立的服務(wù)器來(lái)搭建完成,在資源配置方面存在著冗余。另外管理集群系統(tǒng)的軟件成本較高,部署、監(jiān)控也相對(duì)復(fù)雜。
  2.2存儲(chǔ)
  存儲(chǔ)介質(zhì),一般使用磁盤陣列提供統(tǒng)一的存儲(chǔ)空間。磁盤陣列能夠在很大程度上提供可靠的數(shù)據(jù)存儲(chǔ),但是性能高、可靠性高的存儲(chǔ)系統(tǒng)的成本往往是很高的。
  上述的典型方案能夠提供高可靠性和高效的服務(wù),但是存在一個(gè)成本過高的問題,這是當(dāng)前絕大部分中小型企業(yè)和單位所不能承擔(dān)的。因此如何構(gòu)建一個(gè)成本低的可靠服務(wù)系統(tǒng)是廣大中小型企業(yè)和單位的迫切需求;谶@一問題與需求本文提出一種高性價(jià)比可靠服務(wù)系統(tǒng)的構(gòu)建方案。
  2.高性價(jià)比可靠服務(wù)系統(tǒng)
  2.1 系統(tǒng)架構(gòu)
  本方案中使用兩臺(tái)普通PC Server,每臺(tái)服務(wù)器兩塊網(wǎng)卡。每臺(tái)服務(wù)器上部署有:
  (1) Web服務(wù)1,Web服務(wù)2,
  (2) WebService查詢服務(wù),僅僅查詢Web服務(wù)1的數(shù)據(jù)庫(kù),不更新數(shù)據(jù)庫(kù)
  (3) 數(shù)據(jù)庫(kù)系統(tǒng),部署有Web服務(wù)1的數(shù)據(jù)庫(kù),Web服務(wù)2的數(shù)據(jù)庫(kù)
  心跳檢測(cè)
  圖2 高性價(jià)比可靠服務(wù)系統(tǒng)
  2.1.1 正常運(yùn)行時(shí)
  服務(wù)器1:
  提供Web服務(wù)1、WebService認(rèn)證服務(wù),Web服務(wù)1連接本機(jī)We服務(wù)1數(shù)據(jù)庫(kù)(主);
  網(wǎng)卡1的ip為S1.test.com域名對(duì)應(yīng)的ip,網(wǎng)卡空2閑
  WebService認(rèn)證服務(wù),讀取本機(jī)Web服務(wù)1數(shù)據(jù)庫(kù)(主)
  服務(wù)器2:
  提供Web服務(wù)2、WebService認(rèn)證服務(wù),Web服務(wù)2連接本機(jī)We服務(wù)2數(shù)據(jù)庫(kù)(主)
  網(wǎng)卡1的ip為S1.test.com域名對(duì)應(yīng)的ip,網(wǎng)卡空2閑
  WebService認(rèn)證服務(wù),讀取本機(jī)Web服務(wù)1數(shù)據(jù)庫(kù)(備)
  服務(wù)器1上的Web服務(wù)1數(shù)據(jù)庫(kù)(主)發(fā)布數(shù)據(jù)更新,服務(wù)器2上 Web服務(wù)1數(shù)據(jù)庫(kù)(備)訂閱數(shù)據(jù)庫(kù)更新;服務(wù)器2上的Web服務(wù)2數(shù)據(jù)庫(kù)(主)發(fā)布數(shù)據(jù)更新,服務(wù)器1上 Web服務(wù)2數(shù)據(jù)庫(kù)(備)訂閱數(shù)據(jù)庫(kù)更新。 服務(wù)器1、2的數(shù)據(jù)保持?jǐn)?shù)據(jù)同步。
  2.2.2 異常處理
  服務(wù)器1的數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)問題時(shí),數(shù)據(jù)訪問模塊(在圖中沒有標(biāo)出,該模塊在每個(gè)應(yīng)用中使用,負(fù)責(zé)到數(shù)據(jù)庫(kù)的連接,2.3節(jié)將會(huì)詳細(xì)介紹)自動(dòng)切換到服務(wù)器2的數(shù)據(jù)庫(kù)系統(tǒng)
  服務(wù)器2異常時(shí),服務(wù)器1檢測(cè)到服務(wù)器2心跳異常時(shí),服務(wù)1將網(wǎng)卡2的ip地址設(shè)置為S2.test.com的ip地址,提供Web服務(wù)2。
  服務(wù)器1異常時(shí),服務(wù)器2檢測(cè)到服務(wù)器1心跳異常時(shí),服務(wù)2將網(wǎng)卡2的ip地址設(shè)置為S1.test.com的ip地址,提供Web服務(wù)1。
  服務(wù)器1、2都提供認(rèn)證WebService服務(wù),認(rèn)證服務(wù)只讀取Web服務(wù)1的數(shù)據(jù)庫(kù),兩臺(tái)服務(wù)器的數(shù)據(jù)庫(kù)是同步的,所以認(rèn)證客戶端可以保存有這兩臺(tái)服務(wù)器的地址,一臺(tái)出現(xiàn)異常嘗試另一臺(tái)。
  2.2 數(shù)據(jù)庫(kù)實(shí)時(shí)同步
  要保證服務(wù)能夠隨時(shí)相互切換,首先要解決的是數(shù)據(jù)庫(kù)的實(shí)時(shí)同步,只有數(shù)據(jù)庫(kù)實(shí)時(shí)同步切換到備機(jī)后能夠繼續(xù)提供無(wú)縫的服務(wù)。復(fù)制是將一組數(shù)據(jù)從一個(gè)數(shù)據(jù)源拷貝到其他多個(gè)數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到其他多個(gè)存儲(chǔ)站點(diǎn)上的有效方式。使用復(fù)制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺(tái)服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。復(fù)制技術(shù)可以確保分布在不同地點(diǎn)的數(shù)據(jù)自動(dòng)同步更新,從而保證數(shù)據(jù)的一致性。幾乎現(xiàn)在所有主流的數(shù)據(jù)庫(kù)都支持復(fù)制技術(shù)。下面以Microsoft SQL Server為例:
  SQL Server 主要采用出版物、訂閱的方式來(lái)處理復(fù)制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負(fù)責(zé)發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復(fù)制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個(gè)分發(fā)數(shù)據(jù)庫(kù),可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器。SQL Server提供了三種復(fù)制技術(shù)[1],分別是:
  1.快照復(fù)制
  發(fā)布數(shù)據(jù)庫(kù)每隔一段時(shí)間將訂閱數(shù)據(jù)庫(kù)中的相應(yīng)表中的數(shù)據(jù)全部刪除,然后將自己相應(yīng)表中的全部插到訂閱數(shù)據(jù)庫(kù)中。
  2.事務(wù)復(fù)制
  事務(wù)復(fù)制在網(wǎng)絡(luò)中傳送的是事務(wù)(由一條或多條INSERT、 DELETE、 UPDATE);從傳輸?shù)臄?shù)據(jù)量來(lái)看,事務(wù)復(fù)制僅將發(fā)生的變化傳送給訂購(gòu)者,是一種增量復(fù)制,而快照復(fù)制卻將整個(gè)出版物復(fù)制給訂購(gòu)者。由于事務(wù)復(fù)制要不斷地監(jiān)視源數(shù)據(jù)庫(kù)的數(shù)據(jù)變化,所以與快照復(fù)制相比,其服務(wù)器負(fù)載相應(yīng)要重。
  在事務(wù)復(fù)制中當(dāng)出版數(shù)據(jù)庫(kù)發(fā)生變化時(shí),這種變化就會(huì)被立即傳遞給訂購(gòu)者,并在較短時(shí)間內(nèi)完成(幾秒或更短),而不是像快照復(fù)制那樣要經(jīng)過很長(zhǎng)一段時(shí)間間隔。因此,事務(wù)復(fù)制是一種幾近實(shí)時(shí)地從源數(shù)據(jù)庫(kù)向目標(biāo)數(shù)據(jù)庫(kù)分發(fā)數(shù)據(jù)的方法。由于事務(wù)復(fù)制的頻率較高,所以必須保證在訂購(gòu)者與出版者之間要在可靠的網(wǎng)絡(luò)連接
  3、合并復(fù)制
  合并復(fù)制也是一種從出版者向訂購(gòu)者分發(fā)數(shù)據(jù)方法,但其允許出版者和訂購(gòu)者都可以對(duì)出版數(shù)據(jù)進(jìn)行修改,而不管訂購(gòu)者與出版者是相互連接或斷開,此后當(dāng)所有(或部分)節(jié)點(diǎn)相連時(shí)便合并發(fā)生在各個(gè)節(jié)點(diǎn)的變化。 在合并復(fù)制中,每個(gè)節(jié)點(diǎn)都獨(dú)立完成屬于自己的任務(wù),不像事務(wù)復(fù)制和快照復(fù)制那樣訂購(gòu)者與出版者之間要相互連接,完全不必連接到其它節(jié)點(diǎn),也不必使用MS DTC來(lái)實(shí)現(xiàn)兩階段提交就可以在多個(gè)節(jié)點(diǎn)對(duì)出版進(jìn)行修改,只是在某一時(shí)刻才將該節(jié)點(diǎn)與其它節(jié)點(diǎn)相連(此時(shí)所指的其它節(jié)點(diǎn)并不一定指所有其它節(jié)點(diǎn)),然后將所發(fā)生的數(shù)據(jù)變化復(fù)制到這些相連節(jié)點(diǎn)的數(shù)據(jù)庫(kù)中。復(fù)制的時(shí)機(jī)是可以配置的,SQL Server提供“連續(xù)”選項(xiàng)可以最短的時(shí)間復(fù)制數(shù)據(jù),雖然會(huì)存在一定的時(shí)延,但是時(shí)延很少。
  如果在復(fù)制時(shí)因多個(gè)節(jié)點(diǎn)更新同一數(shù)據(jù)而發(fā)生沖突,則數(shù)據(jù)的最終結(jié)果并不總是出版者修改后的結(jié)果,也不一定包含在所有節(jié)點(diǎn)上所做的所有修改。因?yàn)楦鞴?jié)點(diǎn)都有自主權(quán),都可以對(duì)出版物(復(fù)制數(shù)據(jù))進(jìn)行修改。這種情況將按照所設(shè)定的沖突解決規(guī)則對(duì)沖突進(jìn)行處理,可能有點(diǎn)節(jié)點(diǎn)的修改將被丟棄,因此合并復(fù)制并不維護(hù)事務(wù)的一致?梢钥闯霰M管最后所有的數(shù)據(jù)庫(kù)都有相同的結(jié)果集,但這個(gè)結(jié)果是在多個(gè)節(jié)點(diǎn)共同參與下形成的,是多個(gè)修改合并到目標(biāo)數(shù)據(jù)庫(kù)的結(jié)果。
  本方案中,正常使用時(shí)每臺(tái)服務(wù)器只提供一項(xiàng)服務(wù),只操作本機(jī)的主數(shù)據(jù)庫(kù),不直接對(duì)備數(shù)據(jù)庫(kù)進(jìn)行操作,備數(shù)據(jù)庫(kù)只被動(dòng)接收數(shù)據(jù)同步。當(dāng)出現(xiàn)異常時(shí),主數(shù)據(jù)庫(kù)切換到備數(shù)據(jù)庫(kù)時(shí),此時(shí)也只對(duì)備數(shù)據(jù)庫(kù)進(jìn)行操作,不對(duì)主數(shù)據(jù)庫(kù)操作。即同一時(shí)刻任一套系統(tǒng)只對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行直接操作。并且兩臺(tái)服務(wù)器在同一局域網(wǎng)內(nèi),穩(wěn)定的連接不存在問題。所以我們可以采用事務(wù)復(fù)制和連續(xù)地合并復(fù)制。
  采用事務(wù)復(fù)制,可以保證數(shù)據(jù)實(shí)時(shí)一致,從而當(dāng)主數(shù)據(jù)庫(kù)宕機(jī)的時(shí)候,主備數(shù)據(jù)庫(kù)完全一致。適用于不允許數(shù)據(jù)丟失的系統(tǒng)。
  采用合并復(fù)制,主備數(shù)據(jù)庫(kù)數(shù)據(jù)存在一定時(shí)延,當(dāng)主數(shù)據(jù)庫(kù)宕機(jī)的時(shí)候主備數(shù)據(jù)庫(kù)可能存在很小的數(shù)據(jù)差異。適用能夠容忍很少的數(shù)據(jù)丟失的系統(tǒng)。采用合并復(fù)制還有一個(gè)優(yōu)點(diǎn)就是當(dāng)主數(shù)據(jù)庫(kù)恢復(fù)后,此時(shí)主數(shù)據(jù)庫(kù)系統(tǒng)與備機(jī)數(shù)據(jù)庫(kù)系統(tǒng)連接,備數(shù)據(jù)庫(kù)也能夠自動(dòng)將數(shù)據(jù)同步到主數(shù)據(jù)庫(kù)中。而事務(wù)復(fù)制當(dāng)主數(shù)據(jù)庫(kù)恢復(fù)后則需要手動(dòng)地同步主備數(shù)據(jù)庫(kù)。
  2.3 數(shù)據(jù)庫(kù)訪問模塊
  高性價(jià)比可靠服務(wù)系統(tǒng)
  圖3 數(shù)據(jù)庫(kù)訪問模塊
  1.數(shù)據(jù)庫(kù)操作封裝類
  封裝所有數(shù)據(jù)庫(kù)操作,用戶對(duì)數(shù)據(jù)庫(kù)不感知。操作主要包括如下[2]:
  執(zhí)行存儲(chǔ)過程獲取數(shù)據(jù)集
  public DataSet getdataset(string proc,SqlParameter[] para)
  執(zhí)行sql語(yǔ)句獲取數(shù)據(jù)集
  public DataSet getdataset(string sql)
  執(zhí)行存儲(chǔ)過程獲取數(shù)據(jù)集游標(biāo)
  public SqlDataReader getDataReader(string proc,SqlParameter[] para)
  執(zhí)行sql語(yǔ)句獲取數(shù)據(jù)集游標(biāo)
  public SqlDataReader getDataReader(string sql);
  執(zhí)行存儲(chǔ)過程更新數(shù)據(jù)
  public int updata(string proc,SqlParameter[] para)
  執(zhí)行sql語(yǔ)句更新數(shù)據(jù)
  public int update(string sql)
  數(shù)據(jù)庫(kù)操作類從數(shù)據(jù)庫(kù)連接管理模塊中獲取數(shù)據(jù)庫(kù)連接進(jìn)行數(shù)據(jù)庫(kù)操作,對(duì)數(shù)據(jù)庫(kù)連接不感知。
  2. 數(shù)據(jù)庫(kù)連接管理
  初始時(shí)只使用主數(shù)據(jù)庫(kù)連接池,備數(shù)據(jù)庫(kù)連接池為空,當(dāng)用戶進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)連續(xù)3次捕獲到連接異常(非其他sql錯(cuò)誤),這時(shí)表明主數(shù)據(jù)庫(kù)服務(wù)已經(jīng)崩潰,關(guān)閉所有主數(shù)據(jù)庫(kù)連接池中的連接,開啟備數(shù)據(jù)庫(kù)連接。
  3. 檢測(cè)線程
  使用主數(shù)據(jù)庫(kù)時(shí),對(duì)于沒有用戶操作的空閑時(shí)間段,檢測(cè)線程輪詢檢測(cè)連接池中連接,當(dāng)出現(xiàn)異常時(shí),自動(dòng)切換到備數(shù)據(jù)庫(kù),這樣當(dāng)再次有用戶使用時(shí)就不會(huì)出現(xiàn)錯(cuò)誤。
  當(dāng)切換到備數(shù)據(jù)庫(kù)后檢測(cè)線程按照一定時(shí)間間隔檢測(cè)主數(shù)據(jù)庫(kù),當(dāng)主數(shù)據(jù)庫(kù)得到恢復(fù)時(shí)又自動(dòng)逐步切換到主數(shù)據(jù)庫(kù)。返回到備數(shù)據(jù)庫(kù)連接池的空閑連接關(guān)閉,新的連接請(qǐng)求打開主數(shù)據(jù)庫(kù)的連接。這樣就逐步關(guān)閉所有備數(shù)據(jù)庫(kù)的連接,無(wú)縫切換回主數(shù)據(jù)庫(kù)。
  連接異常檢測(cè)>>切換到備數(shù)據(jù)庫(kù)>>主數(shù)據(jù)庫(kù)連接恢復(fù)檢測(cè)>>恢復(fù)到主數(shù)據(jù)庫(kù)都為自動(dòng)過程,極大地提高數(shù)據(jù)庫(kù)異常的容災(zāi)。
  2.4 心跳檢測(cè)
  1.網(wǎng)絡(luò)檢測(cè)
  定時(shí)Ping某服務(wù)器來(lái)檢測(cè)對(duì)方網(wǎng)絡(luò)是否正常(必須允許Ping的服務(wù)器)。Ping是向遠(yuǎn)程主機(jī)發(fā)送一個(gè)ICMP包,如果給定時(shí)間內(nèi)沒有接收到回應(yīng)就認(rèn)為是超時(shí),如果收到回應(yīng)則分析接收到的ICMP包,得到TTL、類型以及用時(shí)。
  2.Web服務(wù)檢測(cè)
  通過HTTP協(xié)議訪問Web服務(wù),得到返回碼,判斷Web服務(wù)是否正常
  智能數(shù)據(jù)庫(kù)訪問層
  圖4 心跳檢測(cè)流程
  心跳檢測(cè)流程如圖4所示,當(dāng)目標(biāo)機(jī)出現(xiàn)問題是,系統(tǒng)切換到備用機(jī)上,此時(shí)人工切入處理后再恢復(fù)到正常部署狀態(tài)。
  3結(jié)束語(yǔ)
  本方案以數(shù)據(jù)庫(kù)的復(fù)制同步實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)備份;數(shù)據(jù)庫(kù)訪問模塊的自動(dòng)檢測(cè)和切換,服務(wù)器的心跳檢測(cè),實(shí)現(xiàn)服務(wù)器異常時(shí)自動(dòng)無(wú)縫切換繼續(xù)提供服務(wù)。正常每臺(tái)服務(wù)器都提供各自服務(wù),充分利用資源。本方案總體成本較低,適合于小型企業(yè)和單位,實(shí)際當(dāng)中也已經(jīng)應(yīng)用了多個(gè)案例,總的情況運(yùn)轉(zhuǎn)良好。當(dāng)然相對(duì)于典型的方案,還有不少不足的地方,針對(duì)這些不足在今后長(zhǎng)期的實(shí)踐工作中進(jìn)行改進(jìn)。

參考資料:
[1] 郭宏志. JAVA EE WEB工程師培訓(xùn)JDBC+Servlet+JSP整合開發(fā) M .北京 北京賽迪電子出版社, 2008.
[2] (美)維埃拉著,董明等譯.SQL Server 2005高級(jí)程序設(shè)計(jì) M .北京 人民郵電出版社, 2008.

關(guān)鍵字:通訊,北京
About Us - 關(guān)于我們 - 服務(wù)列表 - 付費(fèi)指導(dǎo) - 媒體合作 - 廣告服務(wù) - 版權(quán)聲明 - 聯(lián)系我們 - 網(wǎng)站地圖 - 常見問題 - 友情鏈接
Copyright©2014安裝信息網(wǎng) m.78375555.com. All rights reserved.
服務(wù)熱線:4000-293-296 聯(lián)系電話:0371-61311617 傳真:0371-55611201 QQ: 郵箱:zgazxxw@126.com 豫ICP備18030500號(hào)-4
未經(jīng)過本站允許,請(qǐng)勿將本站內(nèi)容傳播或復(fù)制
安全聯(lián)盟認(rèn)證