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