自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

細(xì)數(shù)移動IM開發(fā)中的那些坑

移動開發(fā)
移動互聯(lián)網(wǎng)時代的來臨促使我們所有的開發(fā)者都要從用戶視角出發(fā),基于某一特定場景來創(chuàng)建應(yīng)用,滿足用戶需求。通常,在這些應(yīng)用中,溝通環(huán)節(jié)都是必不可少的。這就要求創(chuàng)業(yè)者不僅要花時間和精力來琢磨用戶在某一特定場景下有何痛點需求,琢磨如何解決這一需求,并且可能還要花費更多的精力和時間來解決產(chǎn)品中“溝通”這一技術(shù)節(jié)點。

移動互聯(lián)網(wǎng)時代的來臨促使我們所有的開發(fā)者都要從用戶視角出發(fā),基于某一特定場景來創(chuàng)建應(yīng)用,滿足用戶需求。通常,在這些應(yīng)用中,溝通環(huán)節(jié)都是必不可少的。這就要求創(chuàng)業(yè)者不僅要花時間和精力來琢磨用戶在某一特定場景下有何痛點需求,琢磨如何解決這一需求,并且可能還要花費更多的精力和時間來解決產(chǎn)品中“溝通”這一技術(shù)節(jié)點。而要解決溝通問題,就需要一套IM系統(tǒng),這并不容易。當(dāng)然,假設(shè)你有100個用戶,什么都是容易的,但是假設(shè)你有了100萬、1000萬甚至1億的用戶,再簡單的技術(shù)節(jié)點解決不好,都會成為災(zāi)難,何況IM系統(tǒng)還是存在許多技術(shù)難點和坑點的。今天,我們就來梳理一下IM開發(fā)中那些可能遇到的難點及坑點。

首先,來看服務(wù)端需要考慮的問題。

1. 連接器的設(shè)計:連接器主要用來管理客戶端的長連接。目前***的連接器單臺8G8核的服務(wù)器可以做到70萬—100萬的連接,而某些開發(fā)者只能做到4000左右的連接,相差好幾個數(shù)量級。這里的奧妙在哪里呢?

2. 中間件的設(shè)計:是否采用通訊中間件?通訊中間件的好處有哪些?如果不采用中間件,連接器和邏輯服務(wù)器的連接關(guān)系如何管理呢?

3. 邏輯服務(wù)器:邏輯服務(wù)器通常簡單一點,主要是根據(jù)業(yè)務(wù)邏輯進(jìn)行最小粒度的劃分即可。但是即便如此,還是有很多的開發(fā)者把看似相關(guān)實則不相關(guān)的邏輯放在一起,如把鑒權(quán)和message服務(wù)器放在一起。

4. 狀態(tài)服務(wù)器:狀態(tài)服務(wù)器主要管理用戶在線、離線的相關(guān)狀態(tài),需要采取中心節(jié)點的方案,否則狀態(tài)就會不同步。這里主要需要考慮狀態(tài)服務(wù)器所對應(yīng)的數(shù)據(jù)存儲機制,如何進(jìn)行寫操作,如何進(jìn)行讀操作?以便***的提高狀態(tài)服務(wù)器的處理能力和響應(yīng)速度。

5. 數(shù)據(jù)庫的設(shè)計:數(shù)據(jù)庫的設(shè)計是最難的,也是做大的瓶頸。因為無論對于sql(關(guān)系型)數(shù)據(jù)庫還是nosql(非關(guān)系型)數(shù)據(jù)庫,都有讀寫處理的極限,那就需要考慮數(shù)據(jù)庫如何分區(qū)(根據(jù)什么原則、什么操作、哪些用戶訪問哪個節(jié)點上的數(shù)據(jù)庫)。同時又需要考慮每個原子操作(如登陸)需要讀哪些庫,寫哪些庫。只有這些指標(biāo)明確了,你才能在假設(shè)有100萬并發(fā)用戶,100萬條并發(fā)消息的情況下,準(zhǔn)確評估服務(wù)端需要多少臺服務(wù)器,如何部署。

6. 其他:還有設(shè)備推送的處理,何種機制能夠保證不丟消息,離線消息如何處理,等等。這些都是必備而又非常復(fù)雜的功能點和技術(shù)要求,都需要采取正確的架構(gòu)和策略才能實現(xiàn)。

其次,我們再看一下IM 協(xié)議如何選型。通常IM采取的協(xié)議有xmpp、mqtt和私有協(xié)議,我們來逐一分析他們的優(yōu)缺點。

1. xmpp協(xié)議:

a) 優(yōu)點:基于xml協(xié)議,容易理解,使用廣泛,易于擴展。

b) 缺點:流量大,在移動終端也耗電。交互過程復(fù)雜。多被pc時代的產(chǎn)品使用,不適合移動時代的IM產(chǎn)品,即使我們基于xmpp進(jìn)行改進(jìn),簡化握手過程,改進(jìn)文件傳輸機制,但是它的基因決定了如何改進(jìn),他都不適合移動互聯(lián)網(wǎng)時代的IM產(chǎn)品。就像鳳姐無論怎么整容,也變成不了高圓圓一樣。

2. mqtt協(xié)議:

a) 優(yōu)點:適配多平臺。

b) 缺點:協(xié)議簡單,但是需要自己擴展好友,群組等功能。

3. 私有協(xié)議:

a) 優(yōu)點:隨心所欲,自己定義,流量小。

b) 缺點:工作量巨大,擴展性差,需要考慮全面。

4.protbuf協(xié)議:

a)優(yōu)點:非常小,非???,非常簡單。

b)缺點:不能表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但是對于IM來講,已經(jīng)足夠。強烈推薦此協(xié)議。

***,我們再來了解一下移動端有哪些難點需要解決。

1. 流量:采取哪種協(xié)議、圖片縮略圖、附件的壓縮三點決定了流量的大小。

2. 耗電:(1)流量越小,耗電越低。(2)心跳策略,減少心跳次數(shù),耗電量就會降低。

3. 心跳時長:wifi,2G,3G,4G,移動、電信、聯(lián)通,不同網(wǎng)絡(luò),不同運行商,NAT失效時間不一樣,因此心跳的時間也就不一樣。

4. 網(wǎng)絡(luò)連接:cmnet和cmwap下連接處理機制。

5. 網(wǎng)絡(luò)不穩(wěn)定:移動端***的特點就是網(wǎng)絡(luò)不穩(wěn)定,在不穩(wěn)定的網(wǎng)絡(luò)狀態(tài)下,如何保證消息以最快的速度到達(dá)?如何避免重聯(lián)風(fēng)暴?這些既需要從整體架構(gòu)考慮,也需要在移動端采取巧妙的策略加以避免。

這些難點寫下來只不過千把字,耗時三十幾分鐘,但是真正要解決這些難點卻要不知道花費多少日日夜夜,敲下多少行代碼。因此,對于那些在某一場景下需要溝通能力的產(chǎn)品——O2O,互聯(lián)網(wǎng)教育,互聯(lián)網(wǎng)醫(yī)療、游戲…建議這些創(chuàng)業(yè)者把精力和資源都放在自己的核心能力上,而溝通就放心的交給我們?nèi)萋?lián)云通訊IM吧——因為那些難點,我們都已經(jīng)***的干掉了他們。

還不了解云通訊IM?那就在4月21日,來參加云通訊開發(fā)者俱樂部第二期線上公開課吧,主講人云通訊IM產(chǎn)品線總監(jiān)張靖宇,屆時會為開發(fā)者詳細(xì)講解云通訊IM,開發(fā)者也可互相探討自己在開發(fā)過程中遇到的其他問題。

責(zé)任編輯:老門
相關(guān)推薦

2022-05-15 08:13:50

Mysql數(shù)據(jù)庫Mycat

2015-05-25 19:27:15

2020-09-09 07:55:51

TS開源符號

2019-06-11 10:05:27

統(tǒng)計數(shù)據(jù)平均值欺騙

2018-04-25 09:39:27

神經(jīng)網(wǎng)絡(luò)弊端缺點

2013-03-26 13:48:10

Windows 8

2015-09-17 09:25:56

Win 10開發(fā)

2020-05-28 16:15:50

HTTP暗坑前端

2013-06-21 10:45:41

Windows 8.1

2019-12-05 08:44:20

MybatisSQL場景

2016-12-28 13:19:08

Android開發(fā)坑和小技巧

2011-12-15 09:45:21

PhoneGap

2011-12-22 19:57:38

PhoneGap

2012-08-30 09:41:23

移動應(yīng)用開發(fā)

2021-03-08 08:05:05

漏洞Exchange微軟

2013-05-29 09:59:43

Opera瀏覽器

2017-08-04 17:07:32

JavaArraysList

2022-08-16 08:27:20

線程毀線程異步

2013-02-21 10:44:03

云計算云平臺云服務(wù)提供商

2012-12-27 10:22:46

大數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號