知識積累 (一) Redis Cluster原理

2021-08-16 20:09:46 字數 1170 閱讀 2278

問題

配置了多個客戶端,那麼呼叫setex()方法的時候,那麼資料快取到哪個伺服器呢?

實際上redis集群中內建了16384個雜湊槽,搭建集群時,每台伺服器都分配了固定數量的雜湊槽。當需要存資料時,redis對key進行出crc16演算法運算,然後對運算結果取餘,把資料對映到不同的redis伺服器。

一、redis cluster架構

redis3.0以後就支援了redis-cluster,採用無中心結構,每個節點儲存資料和整個集群的狀態,每個節點都和其他節點連線。

架構圖:

結構特點:

a、所有redis節點彼此互聯(ping-pong機制),內部使用二進位制協議優化傳輸速度和寬頻;

b、節點的fail是通過集群中超過半數的節點檢測失效時才生效;

c、客戶端和redis節點直連,不需要中間proxy層,客戶端不需要連線集群所有節點,連線集群中任何乙個可用節點即可;

d、redis-cluster把所有物理節點對映到0-16383個slot上(不一定平均),cluster負責維護node-slot-value;

e、redis將16384個slot分配好後,當需要儲存資料時,使用crc16(key) mod 16384的值,然後決定放到slot中。

d、取資料時,也是通過crc16(key) mod 16384來確定去哪台伺服器取資料。

二、節點分配

三個主節點,可以在一台伺服器,也可以多台,使用雜湊槽(hash slot)來分配16384個slot,得到如下結果:

a節點:0-5460

b節點:5461-10922

c節點:10923-16383

新增乙個節點,取各個節點前一部分的slot分配到新的節點上:

a節點:1365-5460

b節點:6827-10922

c節點:12288-16383

d節點:0-1364,5461-6826,10923-12287

三、主從模式

redis-cluster為了保證資料的高可用性,加入了主從模式,乙個主節點對應乙個或多個從節點,主節點提供資料訪問,從節點備份主節點資料,當主節點掛掉後,從從節點中選取乙個當做主節點,從而保證集群不會掛掉;

小知識積累一

最近在研究一些反映時間,突然感覺自己對時間單位了解很少,因此簡單總結下 大部分人日常用到的最小時間單位應該是秒了。那麼,比秒更小的單位還有很多。首先介紹的是釐秒 centisecond 是一秒的百分之一 0.01秒 簡稱cs。毫秒 millisecond 是一秒的千分之一 0.001秒 簡稱ms。微...

filecoin知識積累(一)

filecoin知識點積累 檢索礦工 像cdn一樣,它們獲取資料並將其提供給客戶端 儲存客戶端 想要儲存資料的使用者 檢索客戶端 想要獲取資料的使用者 2.解壓並進入目錄 3.建立工作量證明目錄 mkdir p var tmp filecoin proof parameters paramcache...

知識的積累

最初認識darwin 的時候,我還是個沒畢業的新手。那時,我在公司做畢業設計,題目就是用c 對部門內已有的一套c的庫進行封裝。那套庫就是darwin開發的,這次封裝工作也是在他的領導之下進行的。當時,我對c 有著說不清的好感,心裡認定那是成為高手的必經之路,因此很樂於參加到這個工作之中。darwin...