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