A. 什麼是網路心跳啊
就是為了證明對方還在線,所以隔一段時間就發一次消息
有時用於維持到NAT的UDP映射。
一般UDP用,主要是UDP是無連接的.
如果我想知道你還在不在線 怎麼弄呢?
一個時間間隔 發一次數據,然後看你返不返回..
網路心跳,很形象~
B. 如何高效維持網路長連接:手把手教你實現 自適應的心跳保活機制
通過 長時間保持雙方連接 ,從而:
下面,我將對每種原因進行分析
當進程被殺死後,長連接也會隨之斷開
當移動客戶端網路狀態發生變化時(如移動網路 & Wifi切換、斷開、重連),也會使長連接斷開
如網路狀態差、 DHCP 的租期到期等等,都會使得長連接發生 偶然的斷開
其實,說得簡單點: 高效維持長連接的關鍵在於
整體概括如下:
這是本文的重點,下節開始會詳細解析
對國、內外主流的移動 IM 產品( WhatsApp 、 Line 、微信)進行了心跳機制的簡單分析 & 對比,具體請看下圖
下面,將根據市面上主流的心跳機制,設計 一套心跳機制方案
在下面的方案設計中,將針對這3個問題給出詳細的解決方案。
為了減少流量 & 提高發送效率,需要精簡心跳包的設計
主要從心跳包的內容 & 大小入手,設計原則具體如下
心跳包 = 1個 攜帶少量信息 & 大小在10位元組內 的信息包
為了 防止 NAT 超時 & 減少設備資源的消耗(網路流量、電量、CPU等等), 心跳發送的間隔時間 是 整個 心跳機制方案設計的重點。
心跳發送間隔時間的設計原則如下
下面,我將詳細講解 自適應心跳間隔時間 的設計方案
1.如何自適應計算心跳間隔 從而使得心跳間隔 接近 當前 NAT 超時時間?
註:只有當心跳間隔 接近 NAT 超時時間 時, 才能最大化平衡 長連接不中斷 & 設備資源消耗最低的問題 。
2.如何檢測 當前網路環境的 NAT 超時時間 發生了變化 ?
註:在檢測到 NAT 超時時間 發生變化後,重新自適應計算心跳間隔 從而使得心跳間隔 接近 NAT 超時時間
該機制的核心在於, 如何 判斷長連接的有效性
在網上流傳著一些用於判斷長連接是否有效的方案,具體介紹如下
至此,關於心跳保活機制已經講解完畢。
很多人認為, TCP 協議自身就有 KeepAlive 機制,為何基於它的通訊鏈接,仍需 在應用層實現額外的心跳保活機制 ?
先來看看 KeepAlive 機制 是什麼
KeepAlive 的機制 不可 替代心跳機制 的具體原因如下:
KeepAlive 機制無法代替心跳機制, 需要在應用層 自己實現心跳機制以檢測長連接的有效性,從而高效維持長連接
不定期分享關於 安卓開發 的干貨,追求 短、平、快 ,但 卻不缺深度 。
C. 什麼是心跳伺服器IP,有什麼作用
心跳網路。伺服器組機器之間私網
一般存在於伺服器集群、多機並行時用的。
是伺服器組各個機器之間傳遞信息用的。
比如故障轉移集群伺服器的心跳。集群網路是對外正常工作通訊的,心跳網路就是A\B機之間傳遞信息,相互驗證對方是否還在正常運行用的。比如平時是A機在運行服務,A、B機之間會每隔一段時間通過心跳網詢問對方是否還正常,如果A伺服器宕機了,B得不到回應,就行把集群資源拿過來繼續運行服務。