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