發(fā)布時間:2019-04-12 作者:騰佑科技
依賴于高可用性應(yīng)用程序的企業(yè)應(yīng)該采用雙活數(shù)據(jù)中心設(shè)計,以確??煽啃院蛷椥?。而運行高可用性應(yīng)用程序的企業(yè)都必須回答以下基本問題:當(dāng)?shù)讓油ㄐ呕A(chǔ)設(shè)施不再可靠時,將如何創(chuàng)建具有彈性的應(yīng)用程序架構(gòu)?
以一家咨詢機構(gòu)與用戶的合作為例,該客戶的主要業(yè)務(wù)應(yīng)用程序具有高可用性需求。其客戶將事務(wù)發(fā)送到主要數(shù)據(jù)中心應(yīng)用服務(wù)器,并在收到確認之前緩沖事務(wù)。其客戶將其兩個數(shù)據(jù)中心分別配置為主數(shù)據(jù)庫和備份數(shù)據(jù)中心。

在可靠性方面,客戶每年多次經(jīng)歷與網(wǎng)絡(luò)相關(guān)的中斷。此外,從主數(shù)據(jù)中心切換到備份數(shù)據(jù)中心的故障轉(zhuǎn)移機制是需要數(shù)小時才能執(zhí)行的一個人工處理過程。因此,在故障轉(zhuǎn)移過程完成之前,需要解決網(wǎng)絡(luò)問題。顯然,客戶需要一種更可靠的數(shù)據(jù)中心故障轉(zhuǎn)移機制,使客戶能夠訪問高可用性應(yīng)用程序。
還有一種選擇是讓網(wǎng)絡(luò)和數(shù)據(jù)中心高度可靠,其數(shù)據(jù)中心的停機事件將非常罕見。然而,高度可靠的基礎(chǔ)設(shè)施的架構(gòu)往往也是脆弱的,并且微小的變化可能導(dǎo)致難以診斷和糾正的宕機和中斷。
彈性應(yīng)用程序體系結(jié)構(gòu)
為了避免使系統(tǒng)變得脆弱,實現(xiàn)彈性應(yīng)用程序的更好方法是部署不依賴于單個路徑或功能的雙活數(shù)據(jù)中心體系結(jié)構(gòu)。雙活(active-active)這個術(shù)語指的是至少運營兩個數(shù)據(jù)中心,其中兩個數(shù)據(jù)中心都可以在任何時間為應(yīng)用程序服務(wù),因此每個數(shù)據(jù)中心都充當(dāng)活動應(yīng)用程序的站點。客戶可以在任何一個數(shù)據(jù)中心執(zhí)行事務(wù),每個數(shù)據(jù)中心的設(shè)計和操作都比創(chuàng)建單個超級可靠的數(shù)據(jù)中心簡單得多。
請注意,彈性應(yīng)該內(nèi)置在應(yīng)用程序中,而不是網(wǎng)絡(luò)和IT基礎(chǔ)設(shè)施中。這意味著即使網(wǎng)絡(luò)或服務(wù)器的某部分意外發(fā)生故障,其應(yīng)用程序仍可繼續(xù)訪問。這種方法的核心是高可用性應(yīng)用程序體系結(jié)構(gòu)需要包含可靠的數(shù)據(jù)交換。在該體系結(jié)構(gòu)中隱含的是每個數(shù)據(jù)中心的數(shù)據(jù)庫在執(zhí)行客戶端事務(wù)時需要彼此更新。
客戶的應(yīng)用程序特性非常適合雙活架構(gòu),其中任何一個數(shù)據(jù)中心都可以執(zhí)行完整事務(wù)??蛻艚灰妆话l(fā)送到更新中央數(shù)據(jù)庫的數(shù)據(jù)中心應(yīng)用程序,然后向客戶端點發(fā)送確認。該機制保證了交易的交付。由于高可用性應(yīng)用程序是內(nèi)部開發(fā)的,因此可以在內(nèi)部進行后續(xù)修改。
用于數(shù)據(jù)傳送的TCP
傳輸控制協(xié)議(TCP)是為確保可靠的數(shù)據(jù)傳輸而設(shè)計的網(wǎng)絡(luò)機制。雖然傳輸控制協(xié)議(TCP)可以重試傳輸丟棄的數(shù)據(jù)包,但是當(dāng)其中一個端點發(fā)生故障時,它無法保證數(shù)據(jù)傳輸。傳輸控制協(xié)議(TCP)會話在兩個端點的接口之間建立。如果其中一個端點(服務(wù)器或其接口)出現(xiàn)故障,傳輸控制協(xié)議(TCP)會話將會終止。
獨角獸公司的經(jīng)驗教訓(xùn)
例如Facebook、谷歌、微軟、Netflix、亞馬遜等獨角獸公司的IT系統(tǒng),旨在讓客戶連接到他們的數(shù)據(jù)中心。如果數(shù)據(jù)中心某個部分發(fā)生故障,則嘗試使用該組件的事務(wù)將自動分配給IT基礎(chǔ)設(shè)施的不同部分。而這些行業(yè)巨頭并不希望他們的基礎(chǔ)設(shè)施部分失敗,因此他們在應(yīng)用程序本身中構(gòu)建更多的彈性。
其他公司的彈性架構(gòu)
如果組織并不是獨角獸公司,那么能做什么?可以向獨角獸公司學(xué)習(xí),并修改IT系統(tǒng),以類似的方式運作。這最適用于內(nèi)部構(gòu)建的高可用性應(yīng)用程序。
例如,客戶端可以使用具有通過域名系統(tǒng)學(xué)習(xí)的數(shù)據(jù)中心地址的循環(huán)列表的事務(wù)重傳計時器,也就是全局服務(wù)器負載平衡??蛻舳藢⒕彌_事務(wù),直到它收到來自可訪問數(shù)據(jù)中心的確認。數(shù)據(jù)庫同步會將更新分發(fā)到其他實例,因此任何數(shù)據(jù)庫都可以處理這些事務(wù)。該架構(gòu)允許組織部署多個應(yīng)用程序數(shù)據(jù)庫系統(tǒng)。這種方法甚至可以擴展到訪問云計算基礎(chǔ)設(shè)施中的數(shù)據(jù)庫實例,如Amazon和Microsoft Azure。
采用第三方應(yīng)用程序(例如電子健康記錄應(yīng)用程序)更具挑戰(zhàn)性??梢砸筌浖?yīng)商能夠使用雙活數(shù)據(jù)中心進行操作的彈性系統(tǒng)設(shè)計。如果仔細檢查應(yīng)用程序的客戶端,企業(yè)可能會發(fā)現(xiàn)添加能夠監(jiān)視數(shù)據(jù)中心連接的小型軟件模塊的機會。如果連接失敗,則軟件模塊可以自動將應(yīng)用程序切換到另一個數(shù)據(jù)中心。
另一種選擇是考慮軟件定義的WAN等技術(shù),通過使用來自不同提供商的多個鏈路來增加路徑多樣性。此方法也適用于第三方應(yīng)用程序。
隨著云計算的廣泛采用,設(shè)計系統(tǒng)以使用一個內(nèi)部數(shù)據(jù)中心和一個基于云計算的數(shù)據(jù)中心是很誘人的。