redis主從哨兵模式搭建 redis有了集群還需要主從哨兵嗎?
redis有了集群還需要主從哨兵嗎?即使使用了Sentry,redis的每個實例都是滿存儲,每個redis中存儲的內(nèi)容都是完整的數(shù)據(jù),浪費內(nèi)存,有桶裝效應(yīng)。為了最大限度地利用內(nèi)存,我們可以使用集群,即
redis有了集群還需要主從哨兵嗎?
即使使用了Sentry,redis的每個實例都是滿存儲,每個redis中存儲的內(nèi)容都是完整的數(shù)據(jù),浪費內(nèi)存,有桶裝效應(yīng)。為了最大限度地利用內(nèi)存,我們可以使用集群,即分布式存儲。也就是說,每個redis存儲不同的內(nèi)容,總共有16384個插槽。每個redis得到一些Slot,hash_uslot=CRC16(key)mod 16384找到對應(yīng)的Slot,key是available key,如果有{},則取{}作為available key,否則整個key是available key,集群至少需要3個master和3個slave,每個實例使用不同的配置文件,master和slave不需要要進行配置,集群將自行選擇。因此,這仍然是必要的,因為redis集群將內(nèi)容存儲到每個節(jié)點,Sentinel的角色是監(jiān)視redis主、從數(shù)據(jù)庫是否正常運行。如果主數(shù)據(jù)庫出現(xiàn)故障,它會自動將從數(shù)據(jù)庫轉(zhuǎn)換為主數(shù)據(jù)庫。
redis高可用實現(xiàn)原理?
redis的高可用性主要包括主從模式、哨兵模式和集群模式。這些模式的具體實現(xiàn)原則和演進思路可以參考:【redis高可用架構(gòu)演進——今日頭條】https://m.toutiao.com/is/eejkhKG/
redis是如何實現(xiàn)主從同步機制的?
Redis支持主從同步。數(shù)據(jù)可以從主服務(wù)器同步到任意數(shù)量的從服務(wù)器,同步采用發(fā)布/訂閱機制。
按同步內(nèi)容分為完全同步和部分同步;
按同步時序分為初始化同步和實時數(shù)據(jù)同步;
初始化同步通常是為完全同步添加子節(jié)點。
1. 從機啟動時,向主機發(fā)送同步指令,主機接收并調(diào)用sync的synccommand功能進行同步。
2. synccommand函數(shù)將啟動rdbsavebackgroundbackup進程(如果該進程存在,則不需要創(chuàng)建啟動)來執(zhí)行備份操作。備份過程啟動rdbsave函數(shù)來保存?zhèn)浞菸募DB。
3. 主節(jié)點監(jiān)控備份程序后,將RDB文件發(fā)送給從節(jié)點。
在通用redis主從模式下,主節(jié)點為寫入節(jié)點,從節(jié)點為讀取節(jié)點。主節(jié)點收到用戶寫操作后,通過內(nèi)部函數(shù)通知從節(jié)點數(shù)據(jù)變化,數(shù)據(jù)同步為部分數(shù)據(jù)同步。
應(yīng)該注意的是,主從復制不會阻止主機。同步數(shù)據(jù)時,主機可以繼續(xù)處理客戶端請求。同時,在主從模式下,只有一個主節(jié)點,可以有多個從節(jié)點。當運行狀況檢查發(fā)現(xiàn)主節(jié)點不可用時,其中一個從節(jié)點將升級到主節(jié)點。通常,這種主從模式是通過哨兵模式實現(xiàn)的。