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