加個星標,第一時間獲取推送的文章哦
一、雙機高可用
1、主備方式
主機和備機雙方只需要進行數據複製即可,無須進行狀態判斷和主備切換這類複雜的操作
應用場景:內部的後臺管理系統
2、主從複製
從機需要提供讀操作,需要考慮主從複製延遲、客戶端感知主從關係等問題
應用場景:寫少讀多的新聞網站
3、雙機切換
設計要點:
1)主備間的狀態傳遞的內容 和渠道
2)切換時機和切換策略
3)如何解決數據衝突
常見架構
1)互聯式
主備機直接建立狀態傳遞的渠道
設計須知:通道故障問題比較難處理
2)模擬式
備機模擬成客戶端,根據讀寫操作的響應情況來判斷主機狀態
設計須知:判斷有限,可能出現雙主
3)中階式
引入zookeeper 或keepalived 這樣的第三方中介,主備上報狀態到中介,中介最終決策 ,例如mongodb
設計須知: 必須保證中介的高可用
4、主主複製
兩臺服務器都是主機,相互之間複製,客戶端任意選擇讀寫
設計須知:不適用註冊,庫存等數據
二、集羣高可用
1、數據集中集羣
設計要點:
1)主機如何將數據複製給備機
消息隊列同步、 備機相互複製
2)備機如何檢測主機狀態
通過中介zookeeper等
3) 主機故障後,如何選擇新主機
通過中介zookeeper等
適用場景:數據量不大,集羣機器數量不多,例如zookeeper集羣
2、數據分散集羣
設計要點:
1)均衡性
2) 容錯性
3) 可伸縮性
適用場景: 數據量巨大,集羣機器數量龐大,例如 hbase集羣、Elasticsearch集羣、gossip協議集羣
三、分區高可用
不同分區處於不同地理位置,每個分區儲存一部分數據,降低故障影響比例
設計要點
1)分區規則
國家間的分區僅用於數據備份,城市分區用於解決業務上的異地多活
2)數據量
數據量越大,設計複雜越大
3)複製規則
集中式: 備份儲存在總的備份中心
互備式:每個分區隨機儲存另外一個分區的備份數據
獨立式:每個分區有自己獨立的備份中心,規則已提前指定好
限時分享面試&學習福利資源
好資料第一時間分享,中華石杉老師的分佈式面試突擊視頻教程,最清晰整體的微服務全面解讀的PDF,體系化的Java路線資料整理的Github,億級電商架構的視頻實戰課程,你值得擁有
獲取方式: 關注公衆號喬志勇筆記, 後臺回覆"學習資料" !!!