推薦學習:Redis影片教學
redis主從複製
redis 的複製分為兩部分操作同步(SYNC)和命令傳播(command propagate)
#上面介紹了redis複製的兩種操作,而redis得主則從複製正式基於同步和命令傳播來實現得。下面兩張圖展示了redis複製的流程:
優點:
1、實作讀寫分離,提高了可用性,解決了單機故障2、主從複製期間master和slave都是非阻塞方式,仍然可用。
缺點:
1、master宕機期間,需要手動切換主機,同時會有部分資料無法及時同步從伺服器,造成資料不一致(需要手動手動介入)
2、slave宕機後,多個slave恢復後,大量的SYNC同步會造成master IO壓力倍增(可以手動規避啟動時間)
3、線上擴容較複雜。
總結:
redis主從複製的優點主要是提高了可用性缺點
Sentinel 哨兵Sentinel 哨兵介紹
Sentinel 哨兵本質上是一個運行在特殊模式下的Redis實例,只是初始化的過程和工作與普通的Redis不同,本質上也是一個單獨的進程。
Sentinel 哨兵是Redis的高可用解決方案:一個或多個Sentinel實例(instance)組成的Sentinel系統(system)可以監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,並在主伺服器下線時可自動切換從伺服器升級為主伺服器。
下圖是一個簡單的Sentinel系統架構圖,一個Sentinel系統監視一個主從集群,其中server1是Redis主伺服器,server2 /3/4是Redis 從伺服器。主從之間利用上面的主從複製來達到主從一致。而Sentinel系統監視整個主從集群。
當Sentinel系統察覺到Server1主機伺服器離線時,就會終止server2/3 /4的複製。
同時Sentinel將server2升級為主伺服器,server3/4從新的主伺服器複製。同時等待server1的再次上線。
Sentinel系統也可以主動降級主服務為從伺服器,將從伺服器升級為主伺服器。
Sentinel 哨兵監控叢集過程:
Sentinel 故障轉移:
優點:
1.哨兵模式基於主從複製,因此主從複製的優點哨兵都具備2、哨兵具備了主從切換和故障轉移,因此集群有了更高的可用性
缺點:
1、Redis較難支援線上擴容,線上擴容較複雜。
總結:
sentinel 哨兵主要用來監控redis主從集群,提高了redis 主從集群的可用性。
redis cluster
Redis Cluster是一種伺服器Sharding技術,redis 3.0版本開始正式提供。
Sentinel基本上已經實現了高可用,但是每台機器都儲存相同內容,很浪費內存,所以Redis Cluster實現了分散式儲存。每台機器節點上儲存不同的內容。
redis 資料分片使用的是hash slot, redis集群有16384個哈希槽,每個Key透過CRC16校驗後對16384取模來決定放置哪一個槽。
當訪問redis key時候,redis會根據CRC16演算法得到一個結果,然後把結果和16384求餘,透過這個值去對應節點取得資料。
這個時候,應用程式客戶端其實只需要連接其中任何一個節點即可,然後Redis Cluster 中每個節點都保存了其他節點得槽資訊。這樣當存取key計算完槽之後,透過儲存槽資訊從配置中取得節點信息,然後再去對應節點獲取資料。
redis-cluster叢集引入了主從複製模型,一個主節點對應一個或多個從節點,當主節點宕機的時候,就會啟用從節點。當其它主節點 ping 一個主節點 A 時,如果半數以上的主節點與 A 通訊逾時,那麼就認為主節點 A 宕機了。如果主節點 A 和它的從節點 A1 都宕機了,那麼該叢集就無法再提供服務了
推薦學習:Redis影片教學
#以上是總結分享之Redis三種集群模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!