Redis(九)高可用專欄之《簡介篇》

在互聯網的大趨勢下,用戶體驗、服務的可用性日趨重要。任何一個服務的不可用,均可能致使連鎖式功能故障。mysql

前言

高可用模型的已經逐漸造成一種套路:nginx

  • 主備/主從模式
  • 集羣模式
主備/主從模式

至少有兩臺服務節點master和backup/slave。同一時刻只有一臺服務節點對外提供服務——master,backup/slave之一做爲備/從機。當master宕機後,當即切換至backup/slave之一,backup/slave之一成爲master,對外提供服務。redis

從主備/主從有無交互的角度能夠劃分:算法

  • 主從交互:如mysql主從維持心跳,同步數據
  • 主從不交互模式:nginx主備不交互,keepalive保證vip綁定

從故障轉移方式角度劃分:sql

  • 利用第三方組件實現故障自動轉移/主從切換:如使用keepalive實現主從切換
  • 主從服務器軟件自故障自動轉移:如Redis Sentinel主從模式由Redis自實現
  • 手動切換,轉移故障:運維人員介入,通過操做實現切換
集羣模式

至少有兩臺服務節點組成服務節點的羣體,客戶端常藉助各類路由算法:  服務器

  • 輪循
  • 權重
  • 隨機
  • 一致性hash

使得羣體中的每一個服務節點都對外提供一致性協同服務。便是集羣的某一個或者某一些服務節點宕機,正常的節點仍能對外提供可用性服務,保證服務的高可用。集羣模式自然的具備高可用特徵。運維

Redis中的高可用

讓Redis用戶慶幸的是Redis中對這兩種高可用模式都作了相應的實現。ip

Redis提供了Sentinel哨兵模式,便是主從模式的標準實現。Sentinel哨兵模式中,分爲哨兵和存儲兩種類型節點。哨兵節點負責維護、監控、切換存儲節點,存儲節點主要負責提供數據管理能力——即單機Redis能力。路由

同時Redis還提供了集羣模式,Redis的集羣模式是Redis 3.0引入的新特徵。整個集羣中每一個節點都做爲存儲節點,對外協同服務。同步

同時用戶還能夠簡單的利用SHELL和Keepalive實現Redis的主從模式,不過在Redis完善的Sentinel模式下,這種方式就相形見絀了。