一、redis-cluster架構圖
redis-cluster把所有的物理節點映射到[0-16383]slot上,cluster 負責維護node<->slot<->value
Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣
每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點
Key:a
計算a的hash值,例如值爲100,100這個槽在server1上,所以a應該放到server1.
Key:hello
Hash值:10032,此槽在server2上。Hell可以應該存在server2.
(1)領着投票過程是集羣中所有master參與,如果半數以上master節點與master節點通信超過(cluster-node-timeout),認爲當前master節點掛掉.
(2):什麼時候整個集羣不可用(cluster_state:fail)?
a:如果集羣任意master掛掉,且當前master沒有slave.集羣進入fail狀態,也可以理解成集羣的slot映射[0-16383]不完成時進入fail狀態. ps : redis-3.0.0.rc1加入cluster-require-full-coverage參數,默認關閉,打開集羣兼容部分失敗.
b:如果集羣超過半數以上master掛掉,無論是否有slave集羣進入fail狀態.
ps:當集羣不可用時,所有對集羣的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)錯誤
以上是redis的簡單介紹,下面我們開始搭建集羣環境
下次寫