Redis哨兵模式下,java客戶端連接的是哨兵還是Redis的實例?Redis實例Master掛了怎么辦?哨兵實例掛了怎么辦?Redis客戶端每次都從哨兵拿master的信息嗎?
問題,一個一個解決。
java客戶端連接的是哨兵還是Redis的實例?
連接的是哨兵
Redis實例Master掛了怎么辦?
Master掛了,sentinel會進行提議,選舉出一個sentinel,讓選舉出來的sentinel去選舉新的master。
選舉sentinel代表是根據誰先提議,得票數的規則選舉。
選舉master是根據在線的、響應快的、偏移量大的,runId來決定。
哨兵實例掛了怎么辦?
此刻選舉不出來master,但是redis客戶端有緩存,還可以繼續用緩存中的master。
Redis客戶端每次都從哨兵拿master的信息嗎?
sentinel哨兵是特殊的redis服務,不提供讀寫服務,主要用來監控redis實例節點。
哨兵架構下client端第一次從哨兵找出redis的主節點,后續就直接訪問redis的主節點,不會每次都通過 sentinel代理訪問redis的主節點,當redis的主節點發生變化,哨兵會第一時間感知到,並且將新的redis 主節點通知給client端(這里面redis的client端一般都實現了訂閱功能,訂閱sentinel發布的節點變動消息)