第76篇
極客時間《從0開始學架構(gòu)》課程筆記撼短。
存儲高可用方案的本質(zhì):數(shù)據(jù)冗余,即把數(shù)據(jù)復制到多個存儲設備
存儲高可用方案的復雜性:如何應對復制延遲和中斷導致的數(shù)據(jù)不一致問題
常見高可用存儲架構(gòu)有3類:
1挺勿、雙機高可用:主備、主從喂柒、主備/主從切換不瓶、主主
2禾嫉、數(shù)據(jù)集群:3臺以上機器組合成一個系統(tǒng)
3、數(shù)據(jù)分區(qū):不同分區(qū)的數(shù)據(jù)分布在不同的地理位置蚊丐,每個分區(qū)存儲一部分數(shù)據(jù)
一熙参、雙機高可用架構(gòu)
主備復制
定義:備機只備份數(shù)據(jù),不進行讀寫麦备,切換需要人工操作
優(yōu)點:簡單
1孽椰、客戶端無需知道備機升級為主機,備機修改為主機通過人工操作
2凛篙、主機備機只需要進行數(shù)據(jù)復制黍匾,不用判斷服務狀態(tài)
缺點:
1、備機未提供讀寫操作呛梆,只進行數(shù)據(jù)備份锐涯,硬件成本有浪費
2、故障恢復時需要人工干預填物,無法自動恢復
應用場景:公司內(nèi)部的后臺管理系統(tǒng)纹腌。如學生管理系統(tǒng)、員工管理系統(tǒng)滞磺、文檔管理系統(tǒng)
主從復制
定義:主機負責讀寫操作升薯,從機只負責讀操作,不負責寫操作
優(yōu)點:與主備相比
1击困、主機故障時涎劈,讀操作相關(guān)業(yè)務正常運行
2、從機提供讀操作沛励,發(fā)揮了硬件性能
缺點:
1责语、客戶端需要感知主從關(guān)系,復雜度比主備復制要高
2目派、如果主從復制延遲比較大坤候,業(yè)務會出現(xiàn)數(shù)據(jù)不一致問題
3、出現(xiàn)故障時需要人工干預
應用場景:寫少讀多的業(yè)務企蹭。如論壇白筹、BBS、新聞網(wǎng)站谅摄、政府門戶
雙機切換
定義:
主備復制和主從復制在主機出現(xiàn)故障時存在兩個問題:
1徒河、無法進行寫操作;2送漠、需要人工指定新的主機
雙機切換就是在原方案基礎上增加『切換』功能顽照,由系統(tǒng)自動決定主機角色并完成切換。雙機切換包括主備切換個主從切換兩種方案。
設計關(guān)鍵:
1代兵、主備間狀態(tài)判斷:狀態(tài)傳遞的渠道尼酿,以及狀態(tài)檢測的內(nèi)容
2、切換決策:切換時機植影、切換策略裳擎、自動程度
3、數(shù)據(jù)沖突解決:新舊主機之間可能存在數(shù)據(jù)沖突
常見的3種切換架構(gòu):互連式思币、中介式和模擬式
互連式
定義:主備機直接建立狀態(tài)傳遞的渠道
缺點:狀態(tài)傳遞的通道本身有故障時備機自動升級為主機鹿响,出現(xiàn)兩個主機
中介式
定義:在主備兩者之外引入第三方中介,通過中介來傳遞狀態(tài)信息
優(yōu)點:主備機的連接管理和狀態(tài)決策都更簡單
缺點:中介本身需要高可用谷饿,否則會進入雙備機狀態(tài)
應用:推薦基于 ZooKeeper 搭建中介式切換架構(gòu)
模擬式
定義:主備機之間不傳遞任何狀態(tài)數(shù)據(jù)惶我,備機模擬成一個客戶端,向主機發(fā)起模擬的讀寫操作各墨,根據(jù)讀寫操作的響應情況來判斷主機的狀態(tài)
優(yōu)點:實現(xiàn)更加簡單指孤,省去了狀態(tài)傳遞通道的建立和管理工作
缺點:狀態(tài)信息只有響應信息,基于有限的狀態(tài)來做狀態(tài)決策贬堵,可能出現(xiàn)偏差
主主復制
定義:兩臺機器都是主機恃轩,互相將數(shù)據(jù)復制給對方
優(yōu)點:無須狀態(tài)信息傳遞,也無須狀態(tài)決策和狀態(tài)切換
缺點:如果采取主主復制架構(gòu)黎做,必須保證數(shù)據(jù)能夠雙向復制叉跛,而很多數(shù)據(jù)是不能雙向復制的,如用戶ID蒸殿、庫存數(shù)據(jù)筷厘、余額數(shù)據(jù)等
應用場景:適合于那些臨時性、可丟失宏所、可覆蓋的數(shù)據(jù)場景酥艳。如用戶登錄產(chǎn)生的 session 數(shù)據(jù)(可以重新登錄生成)、用戶行為的日志數(shù)據(jù)(可以丟失)爬骤、論壇的草稿數(shù)據(jù)(可以丟失)等
二充石、數(shù)據(jù)集群
定義:單臺(主機)服務器無法存儲和處理大量的業(yè)務數(shù)據(jù),必須使用多臺服務器來存儲數(shù)據(jù)霞玄。集群可以分為兩類:數(shù)據(jù)集中集群骤铃、數(shù)據(jù)分散集群
數(shù)據(jù)集中集群:一主多備或者一主多從
復雜度體現(xiàn):
1、主機如何將數(shù)據(jù)復制給備機:存在多條復制通道坷剧、可能會導致多個備機之間數(shù)據(jù)不一致
2惰爬、備機如何檢測主機狀態(tài):如何處理不同備機對主機狀態(tài)的不同判斷
3、主機故障后惫企,如何決定新的主機:只能允許一臺備機升級為主機撕瞧,選擇哪一臺
應用場景:適合數(shù)據(jù)量不大,集群機器數(shù)量不多的場景。例如风范,ZooKeeper 集群咨跌,一般推薦 5 臺機器左右
數(shù)據(jù)分散集群
復雜點:如何將數(shù)據(jù)分配到不同的服務器上沪么,算法需要考慮均衡性硼婿、容錯性和可伸縮性
特點:
1、數(shù)據(jù)分散集群中的每臺服務器都可以處理讀寫請求禽车,客戶端可以向任意服務器中讀寫數(shù)據(jù)
2寇漫、必須有一個角色來負責執(zhí)行數(shù)據(jù)分配算法,這個角色可以是獨立的一臺服務器殉摔,也可以是集群自己選舉出的一臺服務器
應用場景:適合業(yè)務數(shù)據(jù)量巨大州胳、集群機器數(shù)量龐大的業(yè)務場景。例如逸月,Hadoop 集群栓撞、HBase 集群,可以達到上百臺甚至上千臺服務器
三碗硬、數(shù)據(jù)分區(qū)
定義
將數(shù)據(jù)按照一定的規(guī)則進行分區(qū)瓤湘,不同分區(qū)分布在不同的地理位置上,每個分區(qū)存儲一部分數(shù)據(jù)恩尾,目的是規(guī)避地理級別的故障所造成的巨大影響
設計關(guān)鍵
1弛说、數(shù)據(jù)量
- 數(shù)據(jù)量大小決定分區(qū)的規(guī)則復雜度
- 服務器越多運維復雜度越高
- 增加新服務器時分區(qū)相關(guān)配置和規(guī)則需要修改
- 分區(qū)規(guī)則需考慮地理容災
2、分區(qū)規(guī)則
- 根據(jù)地理位置遠近可分為洲際分區(qū)翰意、國家分區(qū)木人、城市分區(qū)
- 洲際分區(qū)主要用于面向不同大洲提供服務,可以不互通或者僅僅作為備份
- 國家分區(qū)主要用于面向不同國家的用戶提供服務冀偶,一般也僅作為備份
- 城市分區(qū)同時對外提供服務醒第,可以滿足業(yè)務異地多活之類的需求
3、復制規(guī)則
- 常見的3種分區(qū)復制規(guī)則:集中式进鸠、互備式稠曼、獨立式
- 集中式備份:存在一個總的備份中心,所有的分區(qū)都將數(shù)據(jù)備份到備份中心
- 集中式備份架構(gòu)優(yōu)缺點:設計簡單堤如、擴展容易蒲列、成本較高
- 互備式備份:每個分區(qū)備份另外一個分區(qū)的數(shù)據(jù)
- 互備式備份架構(gòu)優(yōu)缺點:設計較復雜、擴展麻煩搀罢、成本低
- 獨立式備份:每個分區(qū)有自己的異地獨立備份中心
- 獨立式備份架構(gòu)優(yōu)缺點:設計簡單蝗岖、擴展容易、成本很高