Redis脑裂现象
Redis腦裂現(xiàn)象
Redis腦裂現(xiàn)象
什么是Redis的腦裂現(xiàn)象
當Redis主從集群環(huán)境出現(xiàn)兩個主節(jié)點為客戶端提供服務 ,這時客戶端請求命令可能會發(fā)生數(shù)據(jù)丟失的情況。
腦裂出現(xiàn)的場景
場景一
主從哨兵集群中如果當發(fā)生主從集群切換時 ,那么一定是超過預設quorum數(shù)量的哨兵和主庫連接超時了 ,這時哨兵集群才會將主庫判斷為主觀下線,然后哨兵開始選舉新的主節(jié)點 ,進行故障轉移,轉移完畢后客戶端和新的主節(jié)點通信恢復正常請求。
如果在哨兵進行選舉,故障轉移的過程中原主節(jié)點恢復和客戶端的通信 ,那么證明原主節(jié)點沒有真正的故障,這時客戶端依舊可以向原主節(jié)點正常通信 ,這就是腦裂產生的第一個場景,示意圖如下
假故障:
1、同服務器其它進程占用大量CPU資源,導致主節(jié)點短時間無法響應心跳,CPU資源空閑后恢復正常。
2、主庫自身阻塞,如處理bigkey或者發(fā)生內存swap時,短時間無法響應心跳 ,阻塞解決后心跳恢復正常。
真故障 :
1、服務器宕機。
2 、實例進程掛了。

場景二
網(wǎng)絡分區(qū),主節(jié)點和客戶端,哨兵和從庫分割為了兩個網(wǎng)絡,主庫和客戶端處在一個網(wǎng)絡中 ,從庫和哨兵在另外一個網(wǎng)絡中,此時哨兵也會發(fā)起主從切換,出現(xiàn)兩個主節(jié)點的情況