Redis的幾種集群方式分析


一 單機版

 

 

分析:

無論多少用戶,都訪問這一台服務器 。服務器一旦掛了,所有用戶都無法訪問。風險很大,一般不會有人使用。

二 主從模式(master/slaver)

分析:

主從模式中,

無論多少用戶,都訪問這一台服務器。主服務器有讀寫的能力,從服務器一般只有讀的能力。從服務器會定時或在滿足一定條件時同步主服務器的數據。這樣可以保證數據的安全性。

主服務器一旦崩潰。將不再向用戶提供服務。從服務器如果崩潰,將不會影響主服務器和其他從服務器的正常運行。

三 sentinel模式

 

 

 分析:

哨兵服務器作用:

  通過發送命令,讓Redis服務器返回監控其運行狀態,包括主服務器和從服務器。  

  當哨兵監測到master宕機,會自動將slave切換成master,然后通過發布訂閱模式通知其他的從服務器,修改配置文件,讓它們切換主機。

通俗一點將:就是將上面的主從模式加了一個或多個監工(哨兵服務器),哨兵服務器會定時監測各台服務器的運行狀態,一旦有服務器下線了,哨兵會將其標記為主觀下線。當

一定數量的哨兵都監測到此主機下線后,哨兵們會進行一次投票。重新選舉出一個主服務器。並修改各個redis服務器的配置信息。

四 cluster模式

 

 

 分析: 

首先需要引入一個叫【槽位】的名詞,槽位的范圍是0~16384。每個key都會通過計算規則得到唯一的槽位值。

如上圖所示,redis一共有兩台主服務器,每台主服務器有兩台從服務器。

redis1的槽位值為0~100,redis2的槽位值為101~16384。

舉個例子 ,用戶做了sey(k1,v1);的操作。 服務器的處理過程是:先計算k1的槽位置,得到結果為4568。根據此槽位置所處的服務器。服務器會將此操作分配到Redis2的主服務器上。所以redis2上會執行sey(k1,v1)的操作,redis2下面的從服務器會進行同步數據的操作。

其他分析:

此模式支持靈活擴展,可以添加或移除redis主服務器。主服務器之間不允許存在相同的槽位值。所有主服務器槽位值的並集應該是0~16384;

每台redis主服務器和其從服務器都是一個小集群。當一台主服務器崩潰時。系統會選擇一個從服務器將其升級為redis主服務器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM