高可用性H.A.(High Availability)指的是通過盡量縮短因日常維護操作(計划)和突發的系統崩潰(非計划)所導致的停機時間,以提高系統和應用的可用性。HA系統是企業防止核心計算機系統因故障停機的最有效手段。
高可用性在日常的工作中接觸到的比較多,比如數據庫的高可用、存儲的高可用等等。
下面對實現高可用性的主主、主從、主備模式進行簡單的介紹。
一、主備、主從、主主
1、主備
1)簡介
主:主機,備:備機。
主機的意思當然是以它為主了,讀寫都是主機上,而備機呢就是備用,默默的在背后吸收主機的數據,時刻待命着等待主機掛了之后取而代之(沒這么壞哈哈)。因此在主機還活着的情況下,備機的唯一使命就是同步主機的數據,不對外提供服務。
2)優點:簡單,主備之間只有數據同步,不需要考慮別的情況。
3)缺點:備機等於就拿來備份,備機一直處於備用狀態形成資源浪費。
4)主備切換方式:主要的實現方式為引入一些中間件比如 Zookeeper、keepalived等等
2、主從
1)簡介
主:主機,從:從機
從機和備機的區別在於它得除了同步數據之外還得干活,對外提供讀的操作,主機掛掉從機翻身做主。
2)優點:充分利用了資源,從機提供可讀操作。
3)缺點:
①客戶端需要多個判斷,也就是不同操作需要發放給不同服務器,我上圖主機提供讀寫,有時候讀寫分離了,主機就提供寫。
②主從延遲,讀操作分配給從庫,就會存在數據同步的延遲問題,比如某個人注冊了賬號之后,登錄走的是從機,這時候數據還未從主機同步過來,那可不讓人很難受了。有關主從延遲問題的一些解決辦法
3、主主
1)簡介
主主就是兩台都是主機,同時對外提供讀寫操作
2)優點:主主的好處就是可以把寫操作也分擔一下,但是問題恰恰就出在寫操作上,導致主主的架構有很大的局限性。
3)缺點:例如主機A有個注冊的插入操作,生成的id是50,同一時刻主機B也有個插入操作生成的id也是50。數據重復、覆蓋情況
因此主主只適用於可以雙向復制,覆蓋的數據(例如用戶登錄生成的token)。但是我們平日里絕大部分的數據都不允許。