關於心跳 Heartbeat

2021-10-08 22:36:54 字數 479 閱讀 6609

最近做了一些服務軟體冗餘的工作。

其中的一點就是實現服務冗餘的切換機制,通常採用心跳來實現,我這裡採用的是應用層的自定義心跳協議。

心跳協議(heartbeat protocol)是用來監控網路中的節點及確認其正常工作。
「監控」 倆字就要求了 心跳協議的資訊必須包含 狀態描述 和 切換機制描述。

在服務冗餘心跳切換機制的具體實現過程中,主要定義和實現了3個類,

心跳報文約定

心跳物件定義

心跳處理過程:報文的傳送、接收、報文解析並判別狀態。

該心跳機制的具體實現可不限於兩個服務,支援n臺伺服器之間的狀態檢查和主備狀態切換。

由於通訊協議挺多的,tcp、udp、http、mqtt,,,甚至可以用訊息中介軟體,如各種訊息佇列等等,心跳的處理過程就有很多選擇了,具體選擇可以按實際的需求來吧。

冗餘裝置之間協同工作,要避免不必要的主備切換,迅速有效的識別服務狀態並進行服務狀態切換。似乎有點矛盾。

關於心跳包

tcp連線在預設的情況下就是所謂的長連線,也就是說連線雙方都不主動關閉連線,這個連線就應該一直存在.明確一點,tcp長連線本質上不需要心跳包來維持,大家可以試一試,讓兩台電腦連上同乙個wifi,然後讓其中一台做伺服器,另一台用乙個普通的沒有設定keepalive的socket連上伺服器,只要兩台電腦...

關於心跳包的實現手法

根據心跳包的理論機制來實現 udp篇 public class udpconnected system.timers.timer timer null 設定狀態過期時間 private void waitresponse timer.enabled true timer.start public b...

集群基礎 (heartbeat心跳元件)

集群間心跳 heartbeat heartbeat 3.0 4 2.el6.x86 64.rpm heartbeat devel 3.0 4 2.el6.x86 64.rpm heartbeat libs 3.0 4 2.el6.x86 64.rpmyum install y heartbeat 2...