專訪極光王豐:解讀高質(zhì)量智能推送的秘密
2015-05-12 09:35:00 來源:北青網(wǎng)
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)終端數(shù)量已超過11億。如何實(shí)現(xiàn)大量用戶的即時(shí)推送,成為開發(fā)者們不可小覷的問題。極光推送作為領(lǐng)先的推送服務(wù)提供商,即時(shí)推送業(yè)務(wù)的成功率達(dá)到百分之九十九以上。因此51CTO專訪極光推送首席架構(gòu)師王豐,為大家解讀極光的高質(zhì)量推送背后的秘密。
以下是采訪錄音整理:
記者:極光推送的這款產(chǎn)品的初衷是什么?主要覆蓋什么樣的用戶群?
王豐:隨著移動(dòng)互聯(lián)網(wǎng)的持續(xù)火熱,手機(jī)APP已經(jīng)成為剛需。此時(shí),開發(fā)者和用戶之間需要一座溝通的橋梁。推送服務(wù)對(duì)于大公司來說,無異于一種重復(fù)勞動(dòng),而小的開發(fā)者又沒有能力和精力去投資機(jī)房,搭建系統(tǒng)。所以極光推送應(yīng)運(yùn)而生想要為開發(fā)者減輕一些負(fù)擔(dān)。
記者:中小開發(fā)者如果選擇自己做推送服務(wù),會(huì)遇到哪些困難?
王豐:首先中小開發(fā)者需要一個(gè)后臺(tái)團(tuán)隊(duì)來搭建系統(tǒng),其次需要耗費(fèi)很大精力與各個(gè)IDC和運(yùn)營商聯(lián)系。第三中國的網(wǎng)絡(luò)環(huán)境很復(fù)雜,需要考慮在什么地方去布服務(wù)器,以及如何進(jìn)行性能調(diào)優(yōu),甚至如果機(jī)房的光纜被挖斷,因此產(chǎn)生的斷網(wǎng)情況如何處理?這些都是非常復(fù)雜的問題,中小開發(fā)者很難憑借一己之力來完成。
記者:作為國內(nèi)最早做推送服務(wù)的公司,極光在技術(shù)選型,以及在協(xié)議架構(gòu)方面有哪些考慮?
王豐:在技術(shù)選型方面,極光推送立足于自主研發(fā)。其中把開源的Rabbit MQ作為消息隊(duì)列,Couch base做緩存。在這兩種技術(shù)中,Erlang都扮演了非常重要的角色。
在協(xié)議方面,極光團(tuán)隊(duì)參考了開源的AMQP協(xié)議,TCP/IP以及一些電子郵件的協(xié)議。我們把各種協(xié)議綜合起來,借鑒他們的實(shí)現(xiàn)理念,最大程度的滿足我們的需求。
在系統(tǒng)架構(gòu)方面,我們采用分布式架構(gòu)的方式。其優(yōu)點(diǎn)在于,系統(tǒng)架構(gòu)好之后如果用戶 數(shù)量突然增大,導(dǎo)致機(jī)器不夠,那么直接增加機(jī)器的數(shù)量就可以保證系統(tǒng)的正常運(yùn)行。這樣可以避免單點(diǎn)錯(cuò)誤,舉個(gè)例子來說,北京和廣州的機(jī)房部署了同一個(gè)服務(wù),如果廣州的機(jī)房掛了,網(wǎng)絡(luò)用戶直接使用北京的機(jī)房而不影響用戶體驗(yàn)。在兩個(gè)機(jī)房都正常運(yùn)行時(shí),還可以做到負(fù)載均衡,提升用戶體驗(yàn)。
記者:在容災(zāi)方面極光是如何做的?
王豐:以SDK的用戶接入為例,極光在北京、香港、廣州,都有機(jī)房。如果訪問北京或廣州的機(jī)房訪問失敗,那么我們會(huì)有一個(gè)消息通知SDK,告訴SDK下一個(gè)最優(yōu)訪問的機(jī)房,所以當(dāng)一個(gè)機(jī)房出現(xiàn)問題時(shí),對(duì)用戶的體驗(yàn)是沒有影響的。
記者:Erlong這種語言并不是很流行,為什么極光推送的很多主要模塊都是基于這種語言開發(fā)的?
王豐:Erlang語言在國內(nèi)不是很出名,但在國外卻是家喻戶曉。Erlang最初是愛立信為其電信業(yè)務(wù)所研發(fā)—因?yàn)殡娦艠I(yè)務(wù)需要極高的可靠性。之所以選擇Erlang,我們也是看中了它的可靠性。
第二我們選中的Rabbit MQ,Couch base都是用Erlang開發(fā)的。所以我們只能去研究Erlang,然后進(jìn)一步地去和官方溝通,提一些修改意見。
第三Erlang很適合我們的后臺(tái)推送業(yè)務(wù),因?yàn)樗_發(fā)效率非常高,而且對(duì)開發(fā)人員的要求也比較低,從JAVA或者C到Erlang的學(xué)習(xí)成本也幾乎沒有。
記者:極光團(tuán)隊(duì)如何保障推送的到達(dá)率?
王豐:我們有在線推送和離線推送兩種方式。如果用戶在線,那么我們會(huì)立即推送出去。一旦因?yàn)榫W(wǎng)絡(luò)原因或者用戶手機(jī)緩存導(dǎo)致消息丟失,那么就沒有送達(dá)通知反饋回來,因此我們會(huì)在他下一次上線或者下一次滿足觸發(fā)條件時(shí),收到一個(gè)通知,立即在后臺(tái)再發(fā)送一次,這樣推送成功率在99%以上。
記者:您對(duì)于一些剛?cè)胄械墓こ處煹某砷L,有沒有一些建議?
王豐:現(xiàn)在我在帶團(tuán)隊(duì)、觀察新人,也有一些感觸。我個(gè)人建議,如果想走技術(shù)這條路,應(yīng)該扎實(shí)一點(diǎn),先沉下去,先在底層做一些事情。
第二,學(xué)習(xí)技術(shù)的時(shí)候,不要學(xué)的太雜,多看一些國外原版的技術(shù)書籍、技術(shù)文獻(xiàn),要對(duì)自己的領(lǐng)域要有很深的了解。
記者:現(xiàn)在互聯(lián)網(wǎng)上的各種語言也非常多,包括swift,還有Java、C,以及Erlang,您工程師在語言的選擇方面應(yīng)該注意哪些?
王豐:如果用大而化之的一句話來講,要實(shí)現(xiàn)一個(gè)功能,跟語言沒有關(guān)系。
對(duì)于計(jì)算機(jī)專業(yè)來說,C語言一定是要掌握好的。 例如Linux和Windows,蘋果,這些操作系統(tǒng)都是用C語言編寫的.此外一些非常高性能的庫,也離不開C語言。所以想走技術(shù)這條路,C語言是必不可少的,否則你就讀不懂操作系統(tǒng),無法與機(jī)器交互。
結(jié)語
在王豐看來,未來的推送服務(wù)應(yīng)該是按照二八原則來劃分,80%的用戶會(huì)選擇第三方的服務(wù),20%的用戶會(huì)選擇自己做!妒Э亍返淖髡邉P文·凱利也曾說過:“互聯(lián)網(wǎng)企業(yè)向巨頭聚集,巨頭體量越來越大,在短時(shí)間內(nèi)自然是有利的,但長期看,還是會(huì)有一些邊緣化的公司顛覆產(chǎn)業(yè)!
通常這樣的邊緣產(chǎn)業(yè),就是巨頭不夠注意的小眾市場,但是積累到一定程度,它就可能會(huì)爆發(fā)。
編輯:殷雨婷
關(guān)鍵詞:極光推送;王豐
2015-05-07 16:39:00
2014-01-17 09:25:20
2013-03-18 15:56:23
參與討論
我想說
央廣網(wǎng)官方微信
手機(jī)央廣網(wǎng)
