redis集群学习一些记录
疑問1:主節點掛掉后,從節點頂上,那么掛掉的主節點會怎樣?
解答:當S1成為了新的Master之后,S2和節點3該如何處理?顯然并不是篡位之后就殺掉hh。實際上我們是讓S2和節點3成為新的主節點S1的Slave節點,去備份S1節點的數據。
在https://zhuanlan.zhihu.com/p/106110578?utm_source=wechat_session這篇文章找到了答案。
疑問2:槽位是什么
Redis 集群并沒有使用一致性hash,而是引入了哈希槽的概念。Redis 集群有16384個哈希槽,每個key通過CRC16校驗后對16384取模來決定放置哪個槽,集群的每個節點負責一部分hash槽。哈希槽的數量是16384(2^14)個。
為什么是16384(2^14)個?
在redis節點發送心跳包時需要把所有的槽放到這個心跳包里,以便讓節點知道當前集群信息,16384=16k,在發送心跳包時使用char進行bitmap壓縮后是2k(2 * 8 (8 bit) * 1024(1k) = 16K),也就是說使用2k的空間創建了16k的槽數。
雖然使用CRC16算法最多可以分配65535(2^16-1)個槽位,65535=65k,壓縮后就是8k(8 * 8 (8 bit) * 1024(1k) =65K),也就是說需要需要8k的心跳包,作者認為這樣做不太值得;并且一般情況下一個redis集群不會有超過1000個master節點,所以16k的槽位是個比較合適的選擇
目標3:了解哨兵機制
哨兵模式
該模式是從Redis的2.6版本開始提供的,但是當時這個版本的模式是不穩定的,直到Redis的2.8版本以后,這個哨兵模式才穩定下來,無論是主從模式,還是哨兵模式,這兩個模式都有一個問題,不能水平擴容,并且這兩個模式的高可用特性都會受到Master主節點內存的限制。
Sentinel(哨兵)進程是用于監控redis集群中Master主服務器工作的狀態,在Master主服務器發生故障的時候,可以實現Master和Slave服務器的切換,保證系統的高可用。
Sentinel(哨兵)進程的作用
Sentinel(哨兵)進程的工作方式
哨兵模式的優缺點
優點:
缺點:
目標4:三種集群模式
主從模式、哨兵模式、Cluster集群模式。詳見上一篇文章
目標5:集群搭建
環境:
一臺虛擬機Centos7
redis 5.0.5
Cluster集群模式,參考《redis 5.0.5 5分鐘搭建redis集群》文章完成cluster集群搭建。
主從+哨兵模式,參考《在一臺centos7服務器上搭建redis集群以及哨兵》文章
Redis Cluster 是在Redis 3.0開始支持的,3.0主要是更新了多機方面的功能,在5.0之前Redis Cluster 主要是采用 Redis提供的 redis-trib.rb(Ruby實現的腳本,需要安裝相應的依賴環境)這個管理工具。5.0版本開始支持 --cluster 參數來進行管理。
總結
以上是生活随笔為你收集整理的redis集群学习一些记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis集群的几种模式
- 下一篇: 设计模式之七大原则