那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

業界常用的多活手段及各方案優缺點

454398 ? 來源: Chinaunix ? 作者:vivo互聯網技術 ? 2020-10-10 14:00 ? 次閱讀

采用高可用系統架構支持重要系統,為關鍵業務提供7x24的不間斷服務,已經成為眾多企業保障業務穩定、持續運轉的主要選擇。服務多活是高可用架構重要實施手段,本文介紹了一些業界常用的多活手段例如同城雙活、兩地三中心、異地多活架構設計方案并詳述了各種方案的優缺點。

一、為什么要做多活

隨著移動互聯網的深入發展,用戶增長達到一定規模后,不少企業都會面高并發業務和臨海量數據的挑戰,傳統的單機房在機器容量上存在瓶頸。在一些極端場景下,有可能所有服務器都出現故障,例如機房斷電、機房火災、地震等這些不卡抗拒因素會導致系統所有服務器都故障從而導致業務整體癱瘓,而且即使有其他地區的備份,把備份業務系統全部恢復到能夠正常提供業務,花費的時間也比較長。為了滿足中心業務連續性,增強抗風險能力,多活作為一種可靠的高可用部署架構,成為各大互聯網公司的首要選擇。

1、多活場景

多活架構的關鍵點就是指不同地理位置上的系統都能夠提供業務服務,這里的“活”是指實時提供服務的意思。與“活”對應的是字是“備”,備是備份,正常情況下對外是不提供服務的,如果需要提供服務,則需要大量的人工干預和操作,花費大量的時間才能讓“備”變成“活。單純從描述來看多活很強大,能夠保證在災難的情況下業務都不受影響,是不是意味著不管什么業務,我們都要去實現多活架構呢?其實不是,實現多活架構都要付出一定的代價,具體表現為:

不同多活方案實現復雜度不一樣,隨著業務規模和容災級別的提升,多活方案會給業務系統設計帶來更大復雜度。

不管采用哪種多活方案都難以完全避免跨機房甚至是跨地區服務調用帶來的耗時增加。

多活會帶來成本會上升,畢竟要多在一個或者多個機房搭建獨立的一套業務系統。

因此,多活雖然功能很強大,但也不是每個業務都要上多活。例如,企業內部的 IT 系統、管理系統、博客站點等,如果無法承受異地多活帶來的復雜度和成本,是可以不做異地多活的,而對于重要的業務例如核心金融、支付、交易等有必要做多活。

2、多活方案

常見的多活方案有同城雙活、兩地三中心、三地五中心、異地多活等多種技術方案,不同多活方案技術要求、建設成本、運維成本都不一樣,下面我們會逐步介紹這幾種多活方案并給出每種方案的優點和缺點。選用哪種方案要結合具體業務規模、當前基礎建設能力、投入產出比等多種因素來決定。

二、同城雙活

同城雙活是在同城或相近區域內建立兩個機房。同城雙機房距離比較近,通信線路質量較好,比較容易實現數據的同步復制 ,保證高度的數據完整性和數據零丟失。同城兩個機房各承擔一部分流量,一般入口流量完全隨機,內部RPC調用盡量通過就近路由閉環在同機房,相當于兩個機房鏡像部署了兩個獨立集群,數據仍然是單點寫到主機房數據庫,然后實時同步到另外一個機房。下圖展示了同城雙活簡單部署架構,當然一般真實部署和考慮問題要遠遠比下圖復雜。

服務調用基本在同機房內完成閉環,數據仍然是單點寫到主機房數據儲存,然后實時同步復制到同城備份機房。當機房A出現問題時候運維人員只需要通過GSLB或者其他方案手動更改路由方式將流量路由到B機房。同城雙活可有效用于防范火災、建筑物破壞、供電故障、計算機系統及人為破壞引起的機房災難。

1、服務路由

zk集群:每個機房都部署一個zk集群,機房之間zk數據進行實時雙向同步,每個機房都擁有所有機房zk注冊數據。

路由方案:條件路由 》 就近路由 》 跨機房路由,盡量避免跨機房調用。

訂閱方案:consumer訂閱所有機房服務,provider只向該機房zk集群進行注冊。

2、數據雙活

MySQL:采用MHA部署方案,主從半同步方案保證數據一致性。讀寫分離、讀就近路由到機房內數據節點、寫路由到master節點所在機房。

Redis: Redis cluster模式主從同步,就近讀、寫路由主節點機房。采用原生主從同步跨機房寫性能較低,也可以依靠CRDT理論構建多節點雙向同步,實現機房就近讀寫,但是整體實現較為復雜。

3、同城雙活方案評估

優勢

服務同城雙活,數據同城災備,同城不丟失數據情況下跨機房級別容災。

架構方案較為簡單,核心是解決底層數據雙活,由于雙機房距離近,通信質量好,底層儲存例如mysql可以采用同步復制,有效保證雙機房數據一致性。

劣勢

數據庫寫數據存在跨機房調用,在復雜業務以及鏈路下頻繁跨機房調用增加響應時間,影響系統性能和用戶體驗。

保證同城市地區容災,當服務所在的城市或者地區網絡整體故障、發生不可抗拒的自然災害時候有服務故障以及丟失數據風險。對于核心金融業務至少要有跨地區級別的災備能力。

服務規模足夠大(例如單體應用超過萬臺機器),所有機器鏈接一個主數據庫實例會引起連接不足問題。

三、兩地三中心架構

所謂兩地三中心是指 同城雙中心 + 異地災備中心。異地災備中心是指在異地的城市建立一個備份的災備中心,用于雙中心的數據備份,數據和服務平時都是冷的,當雙中心所在城市或者地區出現異常而都無法對外提供服務的時候,異地災備中心可以用備份數據進行業務的恢復。

業界常用的多活手段及各方案優缺點

兩地三中心方案評估

優勢

服務同城雙活,數據同城災備,同城不丟失數據情況下跨機房級別容災。

架構方案較為簡單,核心是解決底層數據雙活,由于雙機房距離近,通信質量好,底層儲存例如mysql可以采用同步復制,有效保證雙機房數據一致性。

災備中心能防范同城雙中心同時出現故障時候利用備份數據進行業務的恢復。

劣勢

數據庫寫數據存在跨機房調用,在復雜業務以及鏈路下頻繁跨機房調用增加響應時間,影響系統性能和用戶體驗。

服務規模足夠大(例如單體應用超過萬臺機器),所有機器鏈接一個主數據庫實例會引起連接不足問題。

出問題不敢輕易將流量切往異地數據備份中心,異地的備份數據中心是冷的,平時沒有流量進入,因此出問題需要較長時間對異地災備機房進行驗證。

同城雙活和兩地三中心建設方案建設復雜度都不高,兩地三中心相比同城雙活有效解決了異地數據災備問題,但是依然不能解決同城雙活存在的多處缺點,想要解決這兩種架構存在的弊端就要引入更復雜的解決方案去解決這些問題。

四、異地多活

異地多活指分布在異地的多個站點同時對外提供服務的業務場景。異地多活是高可用架構設計的一種,與傳統的災備設計的最主要區別在于“多活”,即所有站點都是同時在對外提供服務的。

1、異地多活挑戰

(1)應用要走向異地,首先要面對的便是物理距離帶來的延時。如果某個應用請求需要在異地多個單元對同一行記錄進行修改,為滿足異地單元間數據庫數據的一致性和完整性,需要付出高昂的時間成本。

(2)解決異地高延時即要做到單元內數據讀寫封閉,不能出現不同單元對同一行數據進行修改,所以我們需要找到一個維度去劃分單元。

(3)某個單元內訪問其他單元數據需要能正確路由到對應的單元,例如A用戶給B用戶轉賬,A用戶和B用戶數據不在一個單元內,對B用戶的操作能路由到相應的單元。

(4)面臨的數據同步挑戰,對于單元封閉的數據需全部同步到對應單元,對于讀寫分離類型的,我們要把中心的數據同步到單元。

2、單元化

所謂單元(下面我們用RZone代替),是指一個能完成所有業務操作的自包含集合,在這個集合中包含了所有業務所需的所有服務,以及分配給這個單元的數據。

單元化架構就是把單元作為系統部署的基本單位,在全站所有機房中部署數個單元,每個機房里的單元數目不定,任意一個單元都部署了系統所需的所有的應用。單元化架構下,服務仍然是分層的,不同的是每一層中的任意一個節點都屬于且僅屬于某一個單元,上層調用下層時,僅會選擇本單元內的節點。

選擇什么維度來進行流量切分,要從業務本身入手去分析。例如電商業務和金融的業務,最重要的流程即下單、支付、交易流程,通過對用戶id進行數據切分拆分是最好的選擇,買家的相關操作都會在買家所在的本單元內完成。對于商家相關操作則無法進行單元化,需要按照下面介紹的非單元化模式去部署。當然用戶操作業務并非完全能避免跨單元甚至是跨機房調用,例如兩個買家A和B轉賬業務,A和B所屬數據單元不一致的時候,對B進行操作就需要跨單元去完成,后面我們會介紹跨單元調用服務路由問題。

3、非單元化應用和數據

對于無法單元化的業務和應用,會存在下面兩種可能性:

(1)延時不銘感但是對數據一致性非常銘感,這類應用只能按照同城雙活方式部署。其他應用調用該類應用的時候會存在跨地區調用可能性,要能容忍延時,這類應用我們稱為MZone應用。

(2)對數據調用延時銘感但是可以容忍數據短時間不一致,這類應用和數據可以保持一個機房一份全量數據,機房之間以增量的方式實時同步,這類應用我們暫時稱為QZone。

加上兩種以上非單元化應用我們的機房部署可能是下面這樣,每個機房有兩個RZone,MZone保持類似兩地三中心部署方式,異地機房調用MZone服務需要跨地區、跨機房調用。而QZone每個機房都保持一份完整數據,機房之間通過數據鏈路實時相互同步。

4、請求路由

(1)Api入口網關

為了保證用戶請求能正確進入自己所屬單元,每一個機房都會部署流量入口網關集群。當用戶請求到達進入機房內最先進入到流量網關,流量網關能感知全局的流量分片情況,計算用戶所處流量單元并將流量轉發到對應的單元,這樣就可以將用戶請求路由到對應的單元內。

業界常用的多活手段及各方案優缺點

采用GateWayr轉發方式可以確定用戶單元從而將用戶流量路由到正確位置,但是HTTP轉發也會造成一定性能損耗。為了減少HTTP流量轉發量,可以在在用戶請求返回的時候在cookie上帶上該用戶的路由標識信息。當用戶下次在請求的時候請求的時候可以提前獲取到路由標識直接請求到對應的單元,這種方式可以大幅度減少HTTP流量轉發。

(2)服務路由

雖然應用已經進行了單元化,但是依然無法避免跨單元調用,例如A用戶給B用戶轉賬,如果A和B所處單元不同,對B用戶操作需要跨單元去調用,這個時候需要能將請求路由到B用戶數據所在的單元。異地多活情況下RPC、MQ、DB等等中間件都需要提供路由能力,將請求能正確路由到對應的單元。下面以RPC路由為例說明異地多活下中間件是如何進行路由的,對于其他中間件(數據庫中間件、緩存中間、消息中間件等)也是一樣方法。

public interface ManualInterventionFacade {

@ZoneRoute(zoneType= ZoneType.RZone,uidClass = UidParseClass.class)

ManualRecommendResponse getManualRecommendCommodity(ManualRecommendRequest request);

}

上面展示了多活下的RPC接口定義方法,需要注明該RPC類型,如果是RZone服務必須要提供解析uid方法。下圖展示了RPC注冊中心路由尋址過程,和同城雙活有一定的差異性。

業界常用的多活手段及各方案優缺點

5、數據同步

(1)QZone類型數據:這種數據只需要保證最終一致性,對于短暫不一致無影響,但是對延時非常銘感,例如一些算法、風控、配置等數據。這類數據基本上都是每個機房部署一套QZone,然后機房之間相互同步。

業界常用的多活手段及各方案優缺點

(2)MZone數據:這類數據對一致性非常銘感,不能出現不一致,只能采用同城雙活部署方式,業務需要能容忍異地調用延時。

(3)RZone數據:這類數據每個Zone都有自己的主節點,如果數據不在該單元內需要路由到對應的節點去寫。這類數據部署情況像下面這樣

6、方案評估

優勢

容災能力大幅度提高,服務異地多活,數據異地多活。

理論上系統服務可以水平擴展,異地多機房突破大幅度提升整體容量,理論上不會有性能擔憂。

將用戶流量切分到多個機房和地區去,有效能減少機房和地區級別的故障影響范圍。

劣勢

架構非常復雜,部署和運維成本很高,需要對公司依賴的中間件、儲存做多方面能力改造。

對業務系統有一定的侵入性,由于單元化影響服務調用或者寫入數據要路由到對應的單元,業務系統需要設置路由標識(例如uid)。

無法完全避免跨單元、跨地區調用服務,例如上面的轉賬業務。我們要做的是盡力避免跨地區的服務調用。

五、總結

本文討論了一些多活建設的大體思路以及一些關鍵技術點的解決方案,各種不同方案對比。要建立起完整的異地多活能力遠遠比上面討論的要復雜的多,需要對依賴的各種中間件、儲存等做相應的單元化改造并配套完整的流量調度和運維管控能力 。

由于篇幅限制本文并未詳細介紹各種儲存(例如Redis、MySQL)在多活下數據同步復制以及高可用方案,有興趣的同學可以去深入了解這方面知識。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9303

    瀏覽量

    86059
  • 移動互聯網
    +關注

    關注

    5

    文章

    599

    瀏覽量

    34126
  • 系統架構
    +關注

    關注

    1

    文章

    70

    瀏覽量

    23587
收藏 人收藏

    評論

    相關推薦

    香港主機托管和國內主機的優缺點比較

    香港主機托管和國內主機(以大陸主機為例)的優缺點比較,主機推薦小編為您整理發布香港主機托管和國內主機的優缺點比較,希望對您有幫助。
    的頭像 發表于 02-05 17:42 ?38次閱讀

    東京站群服務器有哪些優缺點

    東京站群服務器,作為部署在東京地區的服務器集群,專為站群優化而建,其優缺點如下,主機推薦小編為您整理發布東京站群服務器有哪些優缺點
    的頭像 發表于 02-05 17:39 ?35次閱讀

    光譜傳感器的優缺點

    光譜傳感器是一種能夠檢測并響應光譜范圍內不同波長光線的傳感器。以下是對其優缺點的詳細分析:
    的頭像 發表于 01-27 15:28 ?95次閱讀

    開環和閉環功放的區別,優缺點,應用場合有什么不同?

    問下TI的工程師,開環和閉環功放的區別,優缺點,應用場合有什么不同?請解釋下,謝謝!
    發表于 11-04 06:33

    雪崩晶體管有哪些優缺點

    雪崩晶體管作為一種特殊的半導體器件,在電子領域具有其獨特的優缺點
    的頭像 發表于 09-23 18:05 ?375次閱讀

    運放恒流源有哪些優缺點

    運放恒流源,即利用運算放大器(Operational Amplifier,簡稱運放)構成的恒流源電路,具有一系列獨特的優點和缺點。以下是對其優缺點的詳細分析。
    的頭像 發表于 08-28 10:18 ?1410次閱讀

    GaN HEMT有哪些優缺點

    GaN HEMT(氮化鎵高電子遷移率晶體管)作為一種先進的功率半導體器件,在電力電子、高頻通信、汽車電子等多個領域展現出了顯著的優勢,但同時也存在一些缺點。以下是對GaN HEMT優缺點的詳細分析:
    的頭像 發表于 08-15 11:09 ?1744次閱讀

    AI大模型與小模型的優缺點

    在人工智能(AI)的廣闊領域中,模型作為算法與數據之間的橋梁,扮演著至關重要的角色。根據模型的大小和復雜度,我們可以將其大致分為AI大模型和小模型。這兩種模型在定義、優缺點及應用場景上存在著顯著的差異。本文將從多個維度深入探討AI大模型與小模型的特點,并分析其各自的優缺點
    的頭像 發表于 07-10 10:39 ?3591次閱讀

    同步整流的優缺點有哪些

    同步整流是一種在數字電路設計中常用的技術,它通過將電路中的所有信號同步到一個共同的時鐘信號上,來實現信號之間的同步。這種技術在數字電路設計中具有重要的作用,但同時也存在一些優缺點。以下是對同步整流
    的頭像 發表于 07-09 09:09 ?1250次閱讀

    通道數據采集系統的優缺點

    通道數據采集系統是一種廣泛應用于工業、科研、醫療等領域的技術,它能夠同時采集多個通道的信號,實現對多種物理量的實時監測和分析。本文將詳細介紹通道數據采集系統的優缺點,以及其在不同領域的應用情
    的頭像 發表于 07-01 15:58 ?1884次閱讀

    nbiot和lora的優缺點是什么?

    nbiot和lora的優缺點
    發表于 06-04 06:37

    常用的無損檢測方法有哪些?有何優缺點

    、建筑、電力、交通等領域。以下是一些常用的無損檢測方法及其優缺點: 超聲波檢測(Ultrasonic Testing,簡稱UT) 優點: a. 檢測速度快,效率高。 b. 對材料的厚度和形狀適應性強。 c. 能檢測到材料內部的缺陷,如裂紋、氣孔、夾雜等。 d. 可實現自動
    的頭像 發表于 05-24 15:15 ?1405次閱讀

    常用的交換芯片的優缺點有哪些

    常用的交換芯片在網絡通信中扮演著至關重要的角色,它們負責高速、高效地處理數據轉發和交換任務。然而,每種交換芯片都有其獨特的優缺點,這取決于其設計、制造工藝以及應用場景。
    的頭像 發表于 03-22 16:36 ?1075次閱讀

    日本大帶寬服務器優缺點分析

    日本大帶寬服務器是很多用戶的選擇,那么日本大帶寬服務器優缺點都是什么?Rak部落小編為您整理發布日本大帶寬服務器優缺點分析。
    的頭像 發表于 03-22 10:08 ?523次閱讀

    開關電源的工作模式有什么區別和優缺點

    有什么優缺點? 主要不理解的就是開關電源主要儲能器件磁芯的設計,哪種工作模式會導致磁芯在多次開關管儲能釋放能量之后會導致飽和,影響開關電源工作? 臨界模式對磁芯的設計有什么要求,與連續模式有什么區別? 斷續工作模式是否是最常用的工作模式,在反激式開關電源中是否經
    發表于 03-06 21:47
    一起pk棋牌游戏下载| 狮威百家乐娱乐城| 夜总会百家乐的玩法技巧和规则 | 转载24山五行相克| 澳门百家乐现场游戏| 黄金城百家乐手机版| 大发888娱乐场图标| 优博国际娱乐城| 新2百家乐官网娱乐城| 济州岛百家乐官网的玩法技巧和规则| 百家乐大眼仔用法| 百家乐娱乐平台开户| 网上娱乐城排名| 百家乐官网必胜下注法| 新锦江百家乐官网的玩法技巧和规则| 圣淘沙百家乐游戏| 速博百家乐的玩法技巧和规则 | 百家乐平六亿财富| 威尼斯人娱乐城活动| 澳门线上赌场| 百家乐官网投注很不错| 至尊百家乐官网于波| 蓝盾百家乐赌场娱乐网规则| bet365备用网址器| 万年县| 百家乐官网博弈指数| 如何看百家乐路| 九游棋牌游戏大厅| 百家乐官网单机游戏免费| 百家乐稳赢玩法| 月亮城百家乐的玩法技巧和规则| 澳门赌场图片| 大连百家乐官网食品| 威尼斯人娱乐城送钱| 百家乐官网怎么看门路| 百家乐有方法赚反水| 在线玩轮盘| 回力百家乐官网的玩法技巧和规则| 在线玩百家乐的玩法技巧和规则| 集安市| 网上百家乐作弊下载|