偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

數(shù)據(jù)庫高可用架構了解一下

開發(fā) 前端
數(shù)據(jù)存儲高可用的方案本質都是通過將數(shù)據(jù)復制到多個存儲設備,通過數(shù)據(jù)冗余的方式來實現(xiàn)高可用。常見的高可用架構有主備、主從、主主、集群、分區(qū)等,接下來我們聊聊每種架構的優(yōu)缺點。

 看多了應用服務的高可用架構,我們來看看數(shù)據(jù)庫的高可用吧。

數(shù)據(jù)存儲高可用的方案本質都是通過將數(shù)據(jù)復制到多個存儲設備,通過數(shù)據(jù)冗余的方式來實現(xiàn)高可用。常見的高可用架構有主備、主從、主主、集群、分區(qū)等,接下來我們聊聊每種架構的優(yōu)缺點。

主備架構

1. 基本架構拓撲圖如下

整體架構簡單,幾乎所有的數(shù)據(jù)庫都提供了主備復制的功能,例如Mysql、Oracle、MongoDB等。在這種架構中備庫主要承擔數(shù)據(jù)備份的作用,不參與實際業(yè)務讀寫操作,如果把備機改成主機需要人工操作。

2. 優(yōu)缺點分析

  • 對于客戶端來說,不需要感知備機的存在,即使災難恢復后,原來的備機被人工干預修改為主機,客戶端只需要簡單修改連接地址即可,應用架構不需要做任何改動;

  • 主機和備機只需要進行數(shù)據(jù)復制,不需要進行狀態(tài)判斷和主備切換這類復雜操作。

這種架構的缺點也比較明顯:

  • 備機主要是用于數(shù)據(jù)備份,如果應用架構沒有讀寫分離設計時會造成成本浪費

  • 故障后需要人工干預,無法自動恢復,而人工處理效率又比較低,恢復過程也容易出錯。

主從架構

主從架構與主備架構只有一字之差,但是對于實際應用架構差距卻很大。在主備架構中備庫不參與業(yè)務操作,而在主從架構中從庫是需要參與業(yè)務操作的,應用架構需要做讀寫分離,將寫操作寫入主庫,而讀操作從從庫讀。

1. 主從基本架構拓撲圖如下

2.優(yōu)缺點分析

相比于主備架構,它有如下優(yōu)點:

  • 在主庫故障時,讀操作相關業(yè)務可以繼續(xù)運行

  • 從庫對外提供讀能力,發(fā)揮了硬件的性能

  • 可以為不同的角色提供不同的從庫

缺點:

  • 主從架構中從庫需要提供讀業(yè)務,如果主從復制延遲大,數(shù)據(jù)會出現(xiàn)不一致情況;

  • 應用架構需要做修改,一般會加入讀寫分離,復雜度比主備高;

  • 故障后需要人工干預,無法自動恢復,而人工處理效率又比較低,恢復過程也容易出錯。

主從切換

上面兩種架構都存在兩個共同問題:

  • 主庫故障后,無法進行寫操作

  • 主庫出了問題后需要人工干預才能將從庫切換到主庫,而人工切換又可能出現(xiàn)不及時或者切換故障的問題。

基于以上兩個問題我們需要一個能自動切換的架構,當主庫出了故障后能自動將從庫切換成主庫,無需運維人員干預。

要實現(xiàn)主從切換架構必須要考慮一個關鍵點:必須要有一個機制能監(jiān)測到數(shù)據(jù)庫節(jié)點的運行狀態(tài),以此來決定是否切換。

這種架構我們一般會引入一個第三方中介,數(shù)據(jù)庫節(jié)點定時向第三方中介匯報自己的狀態(tài)信息;或者第三方中介定時去數(shù)據(jù)庫節(jié)點拉取數(shù)據(jù)庫狀態(tài);

優(yōu)點:

  • 解決了人工干預的問題,大大減少了故障時間,一定程度上保護了運維人員的人生安全 缺點:

  • 架構復雜,引入了第三方中介后又需要保證第三方中介的高可用。

這里推薦大家了解一下mysql的 MHA 架構,或者使用ZK、Keepalived自己搭建主從切換架構。

主主架構

主主架構又叫主主復制,兩臺數(shù)據(jù)庫都是主庫,互相將數(shù)據(jù)復制給對方,客戶端可以挑選任意一臺數(shù)據(jù)庫進行讀寫操作。

相比于主從切換,主主架構有如下優(yōu)點:

  • 兩臺數(shù)據(jù)庫都是主庫,不存在切換的概念

  • 客戶端無需區(qū)分不同角色的主機,隨便將讀寫操作發(fā)給哪臺數(shù)據(jù)庫。

  • 架構簡單

但是允許向兩臺主數(shù)據(jù)庫寫入是一件很危險的事:

  • AB兩臺數(shù)據(jù)庫采用自增長主鍵,A庫插入用戶后id是1,B庫插入用戶后id也是1,數(shù)據(jù)沖突

  •  
    1. tb 
    2. update tb set col = col +1 
    3. update tb set col = col * 2 

以上,希望對你有所幫助!

責任編輯:張燕妮 來源: JAVA日知錄
相關推薦

2018-10-16 16:00:39

數(shù)據(jù)庫鎖舞MySQL

2011-03-09 08:53:02

MySQL優(yōu)化集群

2024-09-13 08:59:20

2015-05-04 14:17:16

數(shù)據(jù)庫架構高可用

2010-10-28 15:37:36

高可用架構

2024-03-27 12:14:56

數(shù)據(jù)庫高可用GDS

2023-11-27 07:23:39

2024-04-11 12:19:01

Rust數(shù)據(jù)類型

2013-09-13 09:31:09

MongoDBZardosht KaTokutek

2025-01-15 10:53:54

2020-03-01 17:53:38

Excel大數(shù)據(jù)微軟

2020-12-10 08:44:35

WebSocket輪詢Comet

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2018-09-10 15:55:01

數(shù)據(jù)庫UCloud架構設計

2018-03-21 09:08:06

超融合架構本質

2023-01-05 07:52:36

高可用架構消息隊列

2019-12-26 15:33:57

RedisHash架構

2011-08-03 15:14:17

Excel XP數(shù)據(jù)庫功能

2023-12-05 09:31:46

數(shù)據(jù)庫架構

2017-07-03 15:32:49

數(shù)據(jù)庫MySQL架構
點贊
收藏

51CTO技術棧公眾號