redis中主從、哨兵和集群cluster介紹


  1. standalone類型架構
用於可穿透業務場景,如后端有DB存儲,脫機影響不大的應用。
 
 
 

2、redis主從

    假設我們生產環境使用了一台redis,redis掛了怎么辦?如果等到運維重啟redis,並恢復好數據,可能需要花費很長時間。那么在這期間,我們的服務是不可用的,這應該是不能容忍的。假設我們做了主從,主庫掛了之后,運維讓從庫接管,那么服務可以繼續運行,正所謂有備無患。
    是備份關系, 我們操作主庫,數據也會同步到從庫。 如果主庫機器壞了,從庫可以上。就好比你 D盤的片丟了,但是你移動硬盤里邊備份有。
 
 
 
 
3、sentinel類型架構
    用於高可用需求場景,可用於高可用Cache,存儲等場景。內存/QPS受限於單機。
    從庫作為一個“傀儡”,可以在需要的時候“頂上來”,”接盤“。我們配置的主從是為了”有備無患“,在主redis掛了之后,可以立馬切換到從redis上,可能只需要花幾分鍾的時間,但是仍然是需要人為操作。假設主redis在晚上23點掛了,10分鍾之后你接到電話,老板讓你趕緊修復,於是你從被窩爬起來整,豈不是很頭疼。假如你關機了,又其他人知道服務器密碼,那系統豈不是要停機一晚上?太可怕了。
    這個時候redis sentinel 就派上用場了。sentinel 通常翻譯成哨兵,就是放哨的,這里它就是用來監控主從節點的健康情況。客戶端連接redis主從的時候,先連接 sentinel,sentinel會告訴客戶端主redis的地址是多少,然后客戶端連接上redis並進行后續的操作。當主節點掛掉的時候,客戶端就得不到連接了因而報錯了,客戶端重新想sentinel詢問主master的地址,然后客戶端得到了[新選舉出來的主redis],然后又可以愉快的操作了。
 
 
 
4、cluster類型架構
    用於高可用需求場景,可用於大數據量高可用Cache/存儲等場景。內存/QPS不受限於單機,可受益於分布式集群高擴展性。
    我們分別學習了redis 單點,redis主從,並增加了高可用的 sentinel 哨兵模式。我們所做的這些工作只是保證了數據備份以及高可用,目前為止我們的程序一直都是向1台redis寫數據,其他的redis只是備份而已。實際場景中,單個redis節點可能不滿足要求,因為:
  •  單個redis並發有限
  •  單個redis接收所有的數據,最終回導致內存太大,內存太大回導致rdb文件過大,從很大的rdb文件中同步恢復數據會很慢。
    所以,我們需要redis cluster 即redis集群。
    Redis 集群是一個提供在多個Redis間節點間共享數據的程序集。
    Redis集群並不支持處理多個keys的命令,因為這需要在不同的節點間移動數據,從而達不到像Redis那樣的性能,在高負載的情況下可能會導致不可預料的錯誤.
    Redis 集群通過分區來提供一定程度的可用性,在實際環境中當某個節點宕機或者不可達的情況下繼續處理命令. Redis 集群的優勢:
  •  自動分割數據到不同的節點上。
  •  整個集群的部分節點失敗或者不可達的情況下能夠繼續處理命令。
    為了配置一個redis cluster,我們需要准備至少6台redis,為啥至少6台呢?我們可以在redis的官方文檔中找到如下一句話:
Note that the minimal cluster that works as expected requires to contain at least three master nodes.
    因為最小的redis集群,需要至少3個主節點,既然有3個主節點,而一個主節點搭配至少一個從節點,因此至少得6台redis。


免責聲明!

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



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