redis集羣三種解決方案

redis 主從

redis sentinel

  • sentinel模式是建立在主從模式的基礎上,解決了主從模式下master掛掉後,不會自動故障轉移的缺點,當master節點掛了以後,sentinel會在slave中選擇一個做爲master,並修改它們的配置文件,其他slave的配置文件也會被修改,比如slaveof屬性會指向新的master,當master節點重新啓動後,它將不再是master而是做爲slave接收新的master節點的同步數據。

  • sentinel因爲也是一個進程有掛掉的可能,所以sentinel也會啓動多個形成一個sentinel集羣,當主從模式配置密碼時,sentinel也會同步將配置信息修改到配置文件中。

  • 一個sentinel或sentinel集羣可以管理多個主從Redis。sentinel最好不要和Redis部署在同一臺機器,不然Redis的服務器掛了以後,sentinel也掛了

  • sentinel監控的Redis集羣都會定義一個master名字,這個名字代表Redis集羣的master Redis。當使用sentinel模式的時候,客戶端就不要直接連接Redis,而是連接sentinel的ip和port,由sentinel來提供具體的可提供服務的Redis實現,這樣當master節點掛掉以後,sentinel就會感知並將新的master節點提供給使用者。

  • sentinel模式基本可以滿足一般生產的需求,具備高可用性。但是當數據量過大到一臺服務器存放不下的情況時,主從模式或sentinel模式就不能滿足需求了,這個時候需要對存儲的數據進行分片,將數據存儲到多個Redis實例中。

redis cluster

  • redis cluster 是redis官方提供的分佈式解決方案,在3.0版本後推出的,有效地解決了redis分佈式的需求,當一個redis節點掛了可以快速的切換到另一個節點。當遇到單機內存、併發等瓶頸時,可以採用分佈式方案要解決問題。

  • redis cluster採用虛擬槽分區,共16384個槽位,每個節點維護部分槽及槽所映射的鍵值數據

  • 如果一個集羣裏面有M1、M2、M3三個節點,其中節點 M1包含 0 到 5500號哈希槽,節點M2包含5501 到 11000 號哈希槽,節點M3包含11001 到 16384號哈希槽。如果M2宕掉了,就會導致5501 到 11000 號哈希槽不可用,從而使整個集羣不可用。

  • 如果一個集羣裏面有M1-S1、M2-S2、M3-S3六個主從節點,其中節點 M1包含 0 到 5500號哈希槽,節點M2包含5501 到 11000 號哈希槽,節點M3包含11001 到 16384號哈希槽。如果是M2宕掉,集羣便會選舉S2爲新節點繼續服務,整個集羣還會正常運行。當M2、S2都宕掉了,這時候集羣就不可用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章