相關(guān)資訊
- 谷歌放出Android M開(kāi)發(fā)者預(yù)覽版2更
- 有道云筆記Android版升級(jí) 密碼保護(hù)
- Eclipse開(kāi)發(fā)Android程序在手機(jī)上運(yùn)
- 在eclipse中查看android源代碼的兩
- android開(kāi)發(fā)eclipse alt+“/”自動(dòng)
- eclipse怎么導(dǎo)入項(xiàng)目 eclipse導(dǎo)入A
- android迅雷看看怎么刪除本地視頻
- 迅雷android pad能播放xv格式嗎 迅
- 什么手機(jī)是用的安卓5.0 使用Androi
- 安卓5.0八大強(qiáng)悍功能是什么 Androi
本類常用軟件
-
福建農(nóng)村信用社手機(jī)銀行客戶端下載下載量:584212
-
Windows優(yōu)化大師下載量:419723
-
90美女秀(視頻聊天軟件)下載量:366966
-
廣西農(nóng)村信用社手機(jī)銀行客戶端下載下載量:365708
-
快播手機(jī)版下載量:325898
每日一囧
microsoft Yahei', Simsun; font-size: 14px; line-height: 21px; ">在 Android 上,因?yàn)?Google 自己實(shí)現(xiàn)的 Android 標(biāo)配的 GCM (Google Cloud Messaging,原來(lái)叫 C2DM) 在國(guó)內(nèi)基本不可用,所以,對(duì)于開(kāi)發(fā)者來(lái)說(shuō),如果需要 Push功能,怎么樣選擇成為了一個(gè)問(wèn)題。
到目前為止,國(guó)內(nèi)尚沒(méi)有完全向開(kāi)發(fā)者免費(fèi)、開(kāi)放的 Push 服務(wù)可用。國(guó)外有幾家第三方推送服務(wù),但一般都要收費(fèi)。所以一般來(lái)說(shuō),國(guó)內(nèi)的開(kāi)發(fā)者不得不考慮自己來(lái)搭建 Push服務(wù)。
自己構(gòu)建 Push服務(wù)時(shí),一個(gè)比較自然的選擇就是,基于開(kāi)源的現(xiàn)在方案來(lái)做。
使用 Google或者百度搜索 “Android Push 推送”等關(guān)鍵詞,表明已經(jīng)有不少人研究過(guò)。排在前邊的是這樣幾篇文章:
androidpn 它本質(zhì)上服務(wù)器端基于 Openfire,客戶端基于 asmack,這二者都最 XMPP IM 開(kāi)源實(shí)現(xiàn)里的二個(gè)基本組件,應(yīng)該說(shuō) androidpn 只是把二者更多地結(jié)合起來(lái)用于做 Push的場(chǎng)景。
筆者做過(guò)聊天App,愿意在這里,把基于 XMPP開(kāi)源系統(tǒng)做 IM 的實(shí)踐經(jīng)驗(yàn)分享給大家。
我們做聊天類App,比較自然地,剛開(kāi)始時(shí)也是從研究開(kāi)源的 XMPP IM 系統(tǒng)入手。
先說(shuō)服務(wù)器端選擇。Openfire 是一個(gè) XMPP 最古老的開(kāi)源 IM Server,幾乎所有做 IM 的都應(yīng)該有研究過(guò)。但是,它也是最不合適運(yùn)用到生產(chǎn)的 IM Server,因?yàn)椋簡(jiǎn)螜C(jī)并發(fā)很有限,集群方案不成熟,代碼古老而缺乏及時(shí)更新。舉個(gè)具體的例子:Openfire 的集群組件叫 Connection Manager,但是,你在 Openfire官方網(wǎng)站可以看到,最近一個(gè)版本是 2009 年 2 月份發(fā)布的?梢(jiàn),基于 Openfire 實(shí)現(xiàn)的 androidpn 的根基是不夠穩(wěn)的。
更新:與一個(gè)基于 Openfire 做聊天App的朋友交流,他們的用戶量比較大,有多個(gè) Openfire 節(jié)點(diǎn)做集群。他們對(duì) Openfire 做了很多改造,比如 XMPP 協(xié)議交互復(fù)雜,要簡(jiǎn)化;XMPP 協(xié)議文本臃腫,則轉(zhuǎn)換為二進(jìn)制。集群方面,則完全是自己重新開(kāi)發(fā)的。他們最多單點(diǎn)負(fù)載 30 萬(wàn)用戶。
還有另外二個(gè)其實(shí)相對(duì)好一點(diǎn)的選擇: ejabberd, tigase。ejabberd 是用 Erlang語(yǔ)言實(shí)現(xiàn)的,懂 Erlang 的用戶很少,所以一般不會(huì)選。我們當(dāng)時(shí)初步的聊天服務(wù)器端選擇是 tigase (Java實(shí)現(xiàn)的)。
tigase 作者維護(hù)很活躍,集群測(cè)試結(jié)果能夠支撐比較大的容量,這是吸引我們的地方。但經(jīng)過(guò)實(shí)際生產(chǎn)運(yùn)營(yíng)情況來(lái)看,由于其集群方案實(shí)現(xiàn)的復(fù)雜性,以及單節(jié)點(diǎn)容量的有限,我們對(duì)支撐到 50 萬(wàn)用戶在集群節(jié)點(diǎn)上沒(méi)有信心,所以在到達(dá) 50 萬(wàn)用戶之前,趕快自己開(kāi)發(fā)了替代方案。
再來(lái)說(shuō) XMPP 協(xié)議與客戶端的問(wèn)題:對(duì)于移動(dòng)客戶端來(lái)說(shuō),原始的 XMPP 有些復(fù)雜而且流量消耗大。XMPP 本質(zhì)上協(xié)議體都在字符串的 xml 結(jié)構(gòu)上,每個(gè)協(xié)議都量一堆的字符串,xml里還有很多無(wú)意義的結(jié)構(gòu)。另外,XMPP為了其靈活性,就登錄這個(gè)事情都需要有 N 個(gè)來(lái)回。對(duì)于手機(jī)客戶端很在乎流量與電量來(lái)說(shuō),XMPP 比較笨重。
我們的作法是:協(xié)議格式上改為二進(jìn)制,協(xié)議內(nèi)容上簡(jiǎn)化交互,但保留對(duì)原始 XMPP的兼容。
androidpn 是開(kāi)源的 Push 實(shí)現(xiàn),是基于 XMPP 開(kāi)源組件集成的,它沒(méi)有為手機(jī)應(yīng)用場(chǎng)景做必要的優(yōu)化。另外,XMPP 本質(zhì)上雙向 IM 協(xié)議,而直接基于 XMPP 來(lái)實(shí)現(xiàn) Push 功能,也是沒(méi)有特別地為 Push 的特點(diǎn)優(yōu)化的,比如客戶端網(wǎng)絡(luò)連接的策略等。
總結(jié)一下以 androidpn 為典型的開(kāi)源 Android Push 方案會(huì)存在的問(wèn)題:
1)容量大了開(kāi)源服務(wù)器實(shí)現(xiàn)頂不住,還是需要自己去改進(jìn)開(kāi)源實(shí)現(xiàn),或者完全重新用新方案,開(kāi)發(fā)投入與高成本是不可避免的。
2)協(xié)議與實(shí)現(xiàn)上如流量消耗、網(wǎng)絡(luò)連接策略等,不是專門(mén)為移動(dòng) Push 優(yōu)化過(guò)的,是不經(jīng)濟(jì)的。
基于我們團(tuán)隊(duì)基于 XMPP開(kāi)源系統(tǒng)實(shí)現(xiàn)聊天App的實(shí)踐經(jīng)驗(yàn),我們得出的結(jié)論是,在移動(dòng)端的 IM場(chǎng)景里,開(kāi)源方案不是個(gè)可用好用的方案。后來(lái)我們自己完全重新架構(gòu)了整套系統(tǒng)。之后,正是基于這套全新架構(gòu)的 IM 系統(tǒng),演變出來(lái)了極光推送。
極光推送專門(mén)為移動(dòng)場(chǎng)景下的實(shí)時(shí) Push 來(lái)研發(fā),我們想要去解決國(guó)內(nèi) Android 開(kāi)發(fā)者沒(méi)有可用、好用的 Push方案的問(wèn)題,是免費(fèi)的,完全向普通開(kāi)發(fā)者開(kāi)放。如果你也有這個(gè) Android Push 的需求,不妨到極光推送官方網(wǎng)站進(jìn)一步地了解。
到目前為止,國(guó)內(nèi)尚沒(méi)有完全向開(kāi)發(fā)者免費(fèi)、開(kāi)放的 Push 服務(wù)可用。國(guó)外有幾家第三方推送服務(wù),但一般都要收費(fèi)。所以一般來(lái)說(shuō),國(guó)內(nèi)的開(kāi)發(fā)者不得不考慮自己來(lái)搭建 Push服務(wù)。
自己構(gòu)建 Push服務(wù)時(shí),一個(gè)比較自然的選擇就是,基于開(kāi)源的現(xiàn)在方案來(lái)做。
使用 Google或者百度搜索 “Android Push 推送”等關(guān)鍵詞,表明已經(jīng)有不少人研究過(guò)。排在前邊的是這樣幾篇文章:
- Android實(shí)現(xiàn)推送方式解決方案
- 用androidpn來(lái)實(shí)現(xiàn)推送
- Android上實(shí)現(xiàn)Push
- Android Push Notification實(shí)現(xiàn)信息推送使用
androidpn 它本質(zhì)上服務(wù)器端基于 Openfire,客戶端基于 asmack,這二者都最 XMPP IM 開(kāi)源實(shí)現(xiàn)里的二個(gè)基本組件,應(yīng)該說(shuō) androidpn 只是把二者更多地結(jié)合起來(lái)用于做 Push的場(chǎng)景。
筆者做過(guò)聊天App,愿意在這里,把基于 XMPP開(kāi)源系統(tǒng)做 IM 的實(shí)踐經(jīng)驗(yàn)分享給大家。
我們做聊天類App,比較自然地,剛開(kāi)始時(shí)也是從研究開(kāi)源的 XMPP IM 系統(tǒng)入手。
先說(shuō)服務(wù)器端選擇。Openfire 是一個(gè) XMPP 最古老的開(kāi)源 IM Server,幾乎所有做 IM 的都應(yīng)該有研究過(guò)。但是,它也是最不合適運(yùn)用到生產(chǎn)的 IM Server,因?yàn)椋簡(jiǎn)螜C(jī)并發(fā)很有限,集群方案不成熟,代碼古老而缺乏及時(shí)更新。舉個(gè)具體的例子:Openfire 的集群組件叫 Connection Manager,但是,你在 Openfire官方網(wǎng)站可以看到,最近一個(gè)版本是 2009 年 2 月份發(fā)布的?梢(jiàn),基于 Openfire 實(shí)現(xiàn)的 androidpn 的根基是不夠穩(wěn)的。
更新:與一個(gè)基于 Openfire 做聊天App的朋友交流,他們的用戶量比較大,有多個(gè) Openfire 節(jié)點(diǎn)做集群。他們對(duì) Openfire 做了很多改造,比如 XMPP 協(xié)議交互復(fù)雜,要簡(jiǎn)化;XMPP 協(xié)議文本臃腫,則轉(zhuǎn)換為二進(jìn)制。集群方面,則完全是自己重新開(kāi)發(fā)的。他們最多單點(diǎn)負(fù)載 30 萬(wàn)用戶。
還有另外二個(gè)其實(shí)相對(duì)好一點(diǎn)的選擇: ejabberd, tigase。ejabberd 是用 Erlang語(yǔ)言實(shí)現(xiàn)的,懂 Erlang 的用戶很少,所以一般不會(huì)選。我們當(dāng)時(shí)初步的聊天服務(wù)器端選擇是 tigase (Java實(shí)現(xiàn)的)。
tigase 作者維護(hù)很活躍,集群測(cè)試結(jié)果能夠支撐比較大的容量,這是吸引我們的地方。但經(jīng)過(guò)實(shí)際生產(chǎn)運(yùn)營(yíng)情況來(lái)看,由于其集群方案實(shí)現(xiàn)的復(fù)雜性,以及單節(jié)點(diǎn)容量的有限,我們對(duì)支撐到 50 萬(wàn)用戶在集群節(jié)點(diǎn)上沒(méi)有信心,所以在到達(dá) 50 萬(wàn)用戶之前,趕快自己開(kāi)發(fā)了替代方案。
再來(lái)說(shuō) XMPP 協(xié)議與客戶端的問(wèn)題:對(duì)于移動(dòng)客戶端來(lái)說(shuō),原始的 XMPP 有些復(fù)雜而且流量消耗大。XMPP 本質(zhì)上協(xié)議體都在字符串的 xml 結(jié)構(gòu)上,每個(gè)協(xié)議都量一堆的字符串,xml里還有很多無(wú)意義的結(jié)構(gòu)。另外,XMPP為了其靈活性,就登錄這個(gè)事情都需要有 N 個(gè)來(lái)回。對(duì)于手機(jī)客戶端很在乎流量與電量來(lái)說(shuō),XMPP 比較笨重。
我們的作法是:協(xié)議格式上改為二進(jìn)制,協(xié)議內(nèi)容上簡(jiǎn)化交互,但保留對(duì)原始 XMPP的兼容。
androidpn 是開(kāi)源的 Push 實(shí)現(xiàn),是基于 XMPP 開(kāi)源組件集成的,它沒(méi)有為手機(jī)應(yīng)用場(chǎng)景做必要的優(yōu)化。另外,XMPP 本質(zhì)上雙向 IM 協(xié)議,而直接基于 XMPP 來(lái)實(shí)現(xiàn) Push 功能,也是沒(méi)有特別地為 Push 的特點(diǎn)優(yōu)化的,比如客戶端網(wǎng)絡(luò)連接的策略等。
總結(jié)一下以 androidpn 為典型的開(kāi)源 Android Push 方案會(huì)存在的問(wèn)題:
1)容量大了開(kāi)源服務(wù)器實(shí)現(xiàn)頂不住,還是需要自己去改進(jìn)開(kāi)源實(shí)現(xiàn),或者完全重新用新方案,開(kāi)發(fā)投入與高成本是不可避免的。
2)協(xié)議與實(shí)現(xiàn)上如流量消耗、網(wǎng)絡(luò)連接策略等,不是專門(mén)為移動(dòng) Push 優(yōu)化過(guò)的,是不經(jīng)濟(jì)的。
基于我們團(tuán)隊(duì)基于 XMPP開(kāi)源系統(tǒng)實(shí)現(xiàn)聊天App的實(shí)踐經(jīng)驗(yàn),我們得出的結(jié)論是,在移動(dòng)端的 IM場(chǎng)景里,開(kāi)源方案不是個(gè)可用好用的方案。后來(lái)我們自己完全重新架構(gòu)了整套系統(tǒng)。之后,正是基于這套全新架構(gòu)的 IM 系統(tǒng),演變出來(lái)了極光推送。
極光推送專門(mén)為移動(dòng)場(chǎng)景下的實(shí)時(shí) Push 來(lái)研發(fā),我們想要去解決國(guó)內(nèi) Android 開(kāi)發(fā)者沒(méi)有可用、好用的 Push方案的問(wèn)題,是免費(fèi)的,完全向普通開(kāi)發(fā)者開(kāi)放。如果你也有這個(gè) Android Push 的需求,不妨到極光推送官方網(wǎng)站進(jìn)一步地了解。
熱門(mén)評(píng)論
最新評(píng)論