我們?nèi)绾卧O(shè)計(jì)高可用架構(gòu)
1. 高可用復(fù)雜度模型
- 核心思想:遵循“冗余法則”,通過(guò)集群化實(shí)現(xiàn)高可用,避免單點(diǎn)故障。
a.單機(jī)高可用不存在:?jiǎn)螜C(jī)無(wú)法冗余,高可用必須依賴集群。
b.復(fù)雜度本質(zhì):冗余帶來(lái)的復(fù)雜性,包括狀態(tài)同步、故障切換、數(shù)據(jù)一致性等。
2. 計(jì)算高可用
2.1 任務(wù)分配
- 核心設(shè)計(jì):通過(guò)任務(wù)分配器(獨(dú)立服務(wù)器或SDK)將任務(wù)分發(fā)到多個(gè)服務(wù)器。
- 復(fù)雜度分析:
a.任務(wù)分配器需管理服務(wù)器列表(配置文件或ZooKeeper)。
b.需動(dòng)態(tài)監(jiān)控服務(wù)器狀態(tài),故障時(shí)快速切換。
c.算法選擇(輪詢、哈希、權(quán)重等)影響負(fù)載均衡。
- 關(guān)鍵點(diǎn):高性能架構(gòu)關(guān)注正常處理,高可用架構(gòu)關(guān)注異常容錯(cuò)。
2.2 任務(wù)分解
- 核心設(shè)計(jì):按業(yè)務(wù)邏輯拆分服務(wù)器角色(如接入層、邏輯層、存儲(chǔ)層)。
- 復(fù)雜度分析:
a.任務(wù)分解器需記錄任務(wù)與服務(wù)器的映射關(guān)系。
b.局部故障隔離,避免業(yè)務(wù)互相影響。
- 案例:微信服務(wù)拆分(獨(dú)立接入服務(wù)器+業(yè)務(wù)集群)。
3. 存儲(chǔ)高可用
3.1 數(shù)據(jù)復(fù)制格式
- 命令復(fù)制(如Redis AOF):
a.優(yōu)點(diǎn):數(shù)據(jù)量小,實(shí)現(xiàn)簡(jiǎn)單。
b.缺點(diǎn):可能不一致(依賴SQL函數(shù))。
c.場(chǎng)景:增量復(fù)制。
- 文件復(fù)制(如MySQL Row格式):
- 優(yōu)點(diǎn):數(shù)據(jù)一致性強(qiáng)。
- 缺點(diǎn):流量大。
- 場(chǎng)景:全量復(fù)制。
- 混合復(fù)制(如Redis RDB+AOF):
- 折衷方案,平衡一致性與性能。
3.2 數(shù)據(jù)復(fù)制方式
- 同步復(fù)制:
a.強(qiáng)一致性,但寫入性能低(需所有節(jié)點(diǎn)確認(rèn))。
b.場(chǎng)景:主備架構(gòu)。
- 異步復(fù)制:
a. 高性能,容忍節(jié)點(diǎn)故障,但可能數(shù)據(jù)丟失。
b.場(chǎng)景:數(shù)據(jù)存儲(chǔ)集群。
- 半同步復(fù)制(如MySQL半同步):
a. 折衷方案,部分節(jié)點(diǎn)確認(rèn)即可。
- 多數(shù)復(fù)制(如ZooKeeper):
a.強(qiáng)一致性+高可用性,但實(shí)現(xiàn)復(fù)雜。
b.場(chǎng)景:分布式一致性系統(tǒng)(OceanBase)。
3.3 狀態(tài)決策模式
- 獨(dú)裁式(如Redis Sentinel):
a.決策者單點(diǎn)需高可用(依賴ZooKeeper/Raft)。
b.一致性中等,適用于通用業(yè)務(wù)。
- 協(xié)商式(如心跳檢測(cè)):
a.簡(jiǎn)單但易雙主(需雙通道緩解)。
b.一致性弱,適合內(nèi)部系統(tǒng)。
- 民主式(如Raft/ZAB算法):
a.高一致性+高可用,但可能腦裂(需Quorum控制)。
b.場(chǎng)景:余額、庫(kù)存等高一致性需求。
4. 案例與模式
- Redis:命令復(fù)制(AOF)+文件復(fù)制(RDB),異步+半同步。
- MySQL:命令復(fù)制(Statement)+數(shù)據(jù)復(fù)制(Row),異步+半同步。
- Hadoop/ZooKeeper:獨(dú)裁式?jīng)Q策(依賴ZooKeeper集群)。
- MongoDB:民主式選舉(Raft算法)。
5. 核心結(jié)論
- 高可用本質(zhì):通過(guò)冗余應(yīng)對(duì)故障,集群是必然選擇。
- 設(shè)計(jì)核心:狀態(tài)決策機(jī)制(獨(dú)裁/協(xié)商/民主)決定架構(gòu)復(fù)雜度。
- 數(shù)據(jù)復(fù)制權(quán)衡:一致性、性能、故障容忍度需平衡。
- 與高性能對(duì)比:高可用更復(fù)雜(需冗余管理、狀態(tài)決策、異常處理)。
圖片