03 redis發布訂閱原理(《Redis設計與實現》pdf下載在線閱讀,求百度網盤云資源)

时间:2024-05-29 09:56:10 编辑: 来源:

是待處理消息( PEL ),只有消費者處理完畢之后使用 ack 指令告知redis服務器,數據才會從 PEL 中移除,確認后的消息就無法再次消費。

如果接收到的消息比較多,為了避免Stream過長,可以選擇指定Stream的最大長度,一旦到達了最大長度,就會從最早的消息開始清除,保證Stream中最新的消息。

Redis哨兵模式的實現原理

Redis哨兵模式的實現原理。

關于哨兵的原理,關鍵是了解以下幾個概念:

定時任務:每個哨兵節點維護了3個定時任務。定時任務的功能分別如下:通過向主從節點發送info命令獲取最新的主從結構;通過發布訂閱功能獲取其他哨兵節點的信息;通過向其他節點發送ping命令進行心跳檢測,判斷是否下線。

主觀下線:在心跳檢測的定時任務中,如果其他節點超過一定時間沒有回復,哨兵節點就會將其進行主觀下線。顧名思義,主觀下線的意思是一個哨兵節點“主觀地”判斷下線;與主觀下線相對應的是客觀下線。

客觀下線:哨兵節點在對主節點進行主觀下線后,會通過sentinel is-master-down-by-addr命令詢問其他哨兵節點該主節點的狀態;如果判斷主節點下線的哨兵數量達到一定數值,則對該主節點進行客觀下線。

需要特別注意的是,客觀下線是主節點才有的概念;如果從節點和哨兵節點發生故障,被哨兵主觀下線后,不會再有后續的客觀下線和故障轉移操作。

選舉領導者哨兵節點:當主節點被判斷客觀下線以后,各個哨兵節點會進行協商,選舉出一個領導者哨兵節點,并由該領導者節點對其進行故障轉移操作。

監視該主節點的所有哨兵都有可能被選為領導者,選舉使用的算法是Raft算法;Raft算法的基本思路是先到先得:即在一輪選舉中,哨兵A向B發送成為領導者的申請,如果B沒有同意過其他哨兵,則會同意A成為領導者。選舉的具體過程這里不做詳細描述,一般來說,哨兵選擇的過程很快,誰先完成客觀下線,一般就能成為領導者。

搜索关键词: