網盤download:架構師訓練營 算法
(提娶瑪:5kkx)服務器
海量分佈式存儲系統Doris 的高可用架構設計分析網絡
Doris 是一個海量分佈式 KV 存儲系統,其設計目標是支持中等規模高可用可伸縮的 KV 存儲集羣。跟主流的 NoSQL 系統 HBase 相比較(Doris0.1 VS HBase0.90),Doris 具備類似的性能和線性伸縮能力,並具備更好的可用性以及更友好的圖形用戶管理界面。對於一個數據存儲系統而言,高可用意味着兩個意思:
高可用的服務:任什麼時候候,包括宕機、硬盤損壞、系統升級、停機維護、集羣擴容等各類狀況下,均可以對系統進行讀寫訪問操做。
高可靠的數據:任何狀況下,數據可靠存儲,不丟失。
那麼高可用的架構設計也就主要是在各類軟硬件故障狀況下,系統如何保障數據可靠存儲,服務可用。架構
1 分佈式存儲系統的高可用架構併發
對於一個大規模集羣的存儲系統而言,服務器宕機、交換機失效是常態,架構師必須爲這些故障發生時,保證系統依然可用而進行系統設計。系統架構層面,保證高可用的主要手段是――冗餘:服務器熱備,數據多份存儲。使整個集羣在部分機器故障的狀況下能夠進行靈活的失效轉移(Failover),保證系統總體依然可用,數據持久可靠。Doris 系統架構如圖 11.1 所示。運維
圖 11.1 Doris 的總體架構
系統總體上可分爲三個部分分佈式
一、應用程序服務器:它們是存儲系統的客戶,對系統發起數據操做請求。ide
二、數據存儲服務器:存儲系統的核心,負責存儲數據、響應應用服務器的數據操做請求。性能
三、管理中心服務器:這是一個由兩臺機器組成的主-主熱備的小規模服務器集羣,主要負責集羣管理, 對數據存儲集羣進行健康心跳檢測;集羣擴容、故障恢
復管理;對應用程序服務器提供集羣地址配置信息服務等。spa
其中數據存儲服務器又根據應用的可用性級別能夠設置數據複製份數,即每一個數據
實際物理存儲的拷貝數目,複製份數越多,可用性級別越高,固然須要的服務器也越多。
爲了便於管理和訪問數據的多個拷貝,交流V(cmL46679910)將存儲服務器劃分爲多個序列,數據的多個拷貝
存儲在不一樣的序列中(序列能夠理解爲存儲集羣中的子集羣)。
應用服務器寫入數據的時候,根據集羣配置和應用可用性級別使用路由算法在每一個
序列中計算獲得一臺服務器,而後同時併發寫入這些服務器中;應用服務器讀取數據的
時候,只須要隨機選擇一個序列,根據相同路由算法計算獲得服務器編號和地址,便可
讀取。一般狀況下,系統最少寫入的拷貝份數是兩份。如圖 11.2 所示。
圖 11.2 Doris 系統調用時序模型
在正常狀態下,存儲服務器集羣中的服務器互不感知,不進行任何通信;應用服務
器也只在啓動的時候從管理中心服務器獲取存儲服務器集羣信息,除非集羣信息發生變
化(故障、擴容),不然應用服務器不會和管理中心服務器通信。通常而言,服務器之
間通信越少,就越少依賴,發生故障時候互相影響就越少,集羣的可用性就越高。
2 不一樣故障狀況下的高可用解決方案
高可用的系統須要解決在不一樣故障狀況下都保持較高的系統可用性,可是不一樣故障類型帶來的問題複雜性不一樣,不可能使用一種解決方案處理全部狀況,須要針對各類故障提供具體解決方案。
分佈式存儲系統的故障分類:
在討論解決方案以前,咱們先對故障進行分類,針對不一樣故障狀況,分別處理對待。
對於一個分佈式存儲系統而言,影響系統總體可用性的故障能夠分紅三類:
一、瞬時故障:引發這類故障的主要緣由是網絡通信瞬時中斷;服務器內存垃圾回收或後臺線程繁忙中止數據訪問操做響應。其特色是故障時間短,在秒級甚至毫秒級系統便可自行恢復正常響應。
二、臨時故障:引發這類故障的主要緣由是交換機宕機、交流V(cmL46679910)網卡鬆動等致使的網絡通信中斷;系統升級、停機維護等通常運維活動引發的服務關閉;內存損壞、CPU
過熱等硬件緣由致使的服務器宕機;這類故障的主要特色是須要人工干預(更換硬件、重啓機器等)才能恢復正常。一般持續時間須要幾十分鐘甚至幾小時。故障時間可分爲兩個階段:臨時故障期間,臨時故障恢復期間。
3永久故障:引發這類故障主要緣由只有一個:硬盤損壞,數據丟失。雖然損壞硬盤和損壞內存同樣,能夠經過更換硬盤來從新啓動機器,可是丟失的數據卻永遠找不回來,所以其處理策略也和前面兩種故障徹底不一樣,恢復系統到正常狀態也須要更長的時間。故障時間可分爲兩個階段:永久故障期間,永久故障恢復期間。
正常狀況下系統訪問結構在只使用兩份拷貝做爲高可用策略的狀況下,系統訪問結構如圖 11.3 所示。
圖 11.3 正常狀況下 Doris 訪問模型
應用程序在寫數據的時候,須要路由計算得到兩臺不一樣的服務器,同時將數據寫入
兩臺服務器;而讀數據的時候,只須要到這兩臺服務器上隨機一臺服務器讀取便可。
瞬時故障的高可用解決方案
瞬時故障是一種嚴重性較低的故障,通常系統通過較短暫的時間便可自行恢復,遇
到瞬時故障,只須要通過屢次重試,就能夠從新鏈接到服務器,正常訪問。如圖 11.4
所示。
圖 11.4 Doris 瞬時故障解決方案
若是應用屢次重試後,仍然失敗,那麼有可能不是瞬時故障,而是更嚴重的臨時故障,這時候須要執行臨時故障處理策略。 固然也有多是應用服務器本身的故障,好比系統文件句柄用光致使鏈接不能創建等,這時候須要請求管理中心服務器進行故障仲裁,以斷定故障種類。瞬時故障,系統訪問模型。