從微信談起,如何優化互聯網APP心跳機制
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
微信的信令風暴將人們的目光導向心跳機制,那么心跳機制是怎么回事呢? 最早的心跳機制用于服務器的安全備份機制,是為了防止服務器死機,而在服務器之間采用專用的端口和線路,周期性傳送簡短的信息,心跳就是形象的比喻。一旦收不到對方的心跳信息,服務器可以接管對方的業務,避免業務的停滯。為了業務的順暢進行,服務器發送的心跳信息可以非常頻密。 這種機制被手機上的互聯網應用所借用,無論是Android的原生應用,還是QQ、微博和微信,都采用了這種心跳機制,也就是終端定時向應用服務器發送簡短的信息。但是與服務器之間的心跳機制相比,還是有一些差別: 1. 心跳信息是單方向的,只有終端發到應用服務器; 2. 心跳信息的周期比較長,比如舊版QQ的心跳周期為30s,新版QQ為180s,微信為300s,Google原生應用為1680s左右。 另外,互聯網應用的心跳包除了宣告終端在線外,還有一項重要的任務,就是提供終端的即時地址,方便應用服務器的尋址。 有了互聯網應用的心跳機制,應用服務器可以及時下發(Push)用戶相關的信息,比如微信中的短消息、圖片或者語音等。 心跳包也會帶來很多副作用,比如終端更為費電,還可能給移動通信網絡帶來信令風暴。 看起來很完美的心跳機制,為什么會給移動通信網絡帶來信令風暴呢? 原來,移動通信網絡中由于用戶眾多、資源稀缺,每個用戶都是動態占用資源,比如IP地址以及無線信道。每次發送心跳包,都需要移動通信網絡為用戶分配資源,分配的過程體現在信令的發送和接收上。一次心跳包的發送過程,牽涉的信令多達幾十條。 隨著互聯網APP的普及,大量的終端周期性地發送心跳包,效果類似于IP網絡中的DDOS,必然對移動通信網絡設備帶來沖擊,造成擁塞等情況,這種現象就是信令風暴。信令風暴不僅中國移動的GPRS網絡存在,中國聯通的WCDMA網絡、中國電信的CDMA網絡都存在。由于中國移動用戶數量龐大,因此信令風暴的影響更顯著而已,簡而言之,就是50步與100步的差別。 互聯網APP的心跳機制對移動網絡的沖擊很大,那么有什么方法可以緩解乃至解決這個問題呢? 從互聯網APP的角度看,應該區分是移動網絡接入還是WLAN接入,智能調整心跳包的發送頻率。在移動網絡接入時,降低心跳包的發送頻率,這樣雖然服務器推送的信息會有一些延遲,但是終端更省電,移動網絡更穩健。比如舊版QQ的心跳周期為30s,新版QQ為180s,微信為300s,已經呈現出逐步延長的趨勢,還可以再調整,直至接近Google原生應用的1680s左右。 目前,互聯網APP心跳包的發送頻率由APP一手包辦,這是不合理的,應該開放給用戶進行設置,允許用戶在省電和及時等多個場景間切換。 現在每個人的手機上都裝有多個互聯網APP,比如QQ、微信、微博和淘寶等,如果每個APP都發送心跳包,心跳包的發送頻率將大幅增加。像微信、QQ 等APP,可以考慮聯合發送心跳包,這樣可以減少不少心跳包。另外如果從操作系統的層面統一心跳包,效果會更好。蘋果的IOS已經做了一個很好的嘗試,建立了一個位置寄存器APNS,將所有的APP聯合起來,統一發送心跳。Android系統其實也可以如法炮制,據稱小米手機有意這樣做,像阿里OS也應該可以做。運營商自己開發的OS更加應該是這方面的表率。 終端側的這些做法,將能有效減少心跳包的發送,從而緩解信令風暴。 從網絡側的角度,如果終端發送心跳包是一個既成事實的話,及時進行設備擴容就是勢在必行的了。目前看,基站控制器以及核心網的設備受信令風暴的影響大,需要優先擴容。當然,運營商有苦衷,認為是在幫APP打工。但是,運營商也必須明白順勢而為的重要性,與其被動接招,不如早作打算。 什么打算呢?就是宣傳從移動網絡的角度看,心跳包并不是必須的。利用短消息與APP深度整合,不用心跳包也可以方便地實現APP消息的推送,又節省終端的電力,又避免對移動網絡的沖擊,兩全其美,何樂不為呢? 這樣釜底抽薪后,心跳機制對移動網絡的沖擊將是可以控制的了。 該文章在 2013/5/6 9:13:07 編輯過 |
關鍵字查詢
相關文章
正在查詢... |