semot926 發(fā)布于 2014/3/19 16:12
瀏覽: 1420
回復(fù): 0
所在分類:軟件開發(fā)技術(shù)
tag:聊天工具開發(fā) 網(wǎng)店即時通訊 電商im工具
隨著統(tǒng)一通信的發(fā)展,聊天工具有了更好的發(fā)展,其中要算手機和網(wǎng)上的即時聊天工具的發(fā)展了。手機主要是3G的開發(fā),有了統(tǒng)一通信技術(shù)的支持,我們才可以實現(xiàn)第三代的通信,但是這里要說的另一個方面,關(guān)于聊天工具的。
下面就
聊天工具開發(fā)聊聊現(xiàn)有聊天工具的架構(gòu),需要先說明的是TCP和UDP這兩個協(xié)議,因為只有先確定了這兩個最重要的協(xié)議,才可以確定一個即時聊天軟件的架構(gòu)。首先舉兩個例子,即時聊天軟件MSN使用的就是TCP,然而QQ使用的是UDP協(xié)議。其實這兩者的最大區(qū)別就是TCP的可靠保證,是它的三次握手機制,這一機制保證校驗了數(shù)據(jù),保證了他的可靠性。而UDP就沒有了,所以不可靠。比如說,在MSN上,要傳輸文件,首先是發(fā)送文件,對方確定接受,然后再發(fā)送,這樣,三次握手。但是UDP不同,它是直接發(fā)送,不管對方是否同意,還是會發(fā)送,所以很不安全,但是這是由于這樣,也保證了傳輸?shù)乃俣龋粫艿桨踩缘南拗?。而TCP一般會保證發(fā)送和收到,更適合一些對安全性質(zhì)需要較高的工具軟件。但是為什么同樣是即時聊天性質(zhì)的軟件,MSN使用的是TCP,而QQ的則是UDP呢?通過思考,我認為,國外的網(wǎng)絡(luò)環(huán)境相對國內(nèi)的好很多,安全性也有保證,而國內(nèi)的網(wǎng)絡(luò)環(huán)境不如國外,還有很多代理服務(wù)器,再加上網(wǎng)通和電信,造成了很多不便,如果使用的是TCP的話,那么我們很多用戶將無法使用這個軟件,或者是在傳輸文件和數(shù)據(jù)的時候?qū)龅胶芏嗟睦щy,甚至無法傳送文件,所以QQ使用了UDP。其實呢,大多聊天軟件例如QQ,不光是使用了UDP,在某些方面也用到了TCP,就像QQ的文字聊天協(xié)議。
統(tǒng)一通信中即時
聊天軟件的架構(gòu),由三部分組成,DispatchServer(DS) Notification Server (NS)和Switchboard Server (SB)。
DS采用的負載均衡方式應(yīng)該比較簡單,通過DNS解析來做負載均衡。并且由于在DS上的連接都是短連接,保持時間非常短,所以應(yīng)該DS服務(wù)器的數(shù)量應(yīng)該不會很多。由于DS必須要返回一個可用的NS IP,那么內(nèi)部應(yīng)該還有其他種類的服務(wù)器來保存當(dāng)前所有可用的NS服務(wù)器,以及這些NS服務(wù)器上的負載。通過DS這一層來為接下來的NS做負載均衡。NS連接均為長連接,所以在這一層上的負載由DS來調(diào)節(jié)。如果NS負載太大,新客戶連接上DS時會返回其他相對空閑的NS服務(wù)器。當(dāng)然NS服務(wù)器之間也有相互通訊的機制也是少不了的,比如上下線通知、對話發(fā)起等等。SB連接的時間介于NS和DS之間,其負載由NS來作控制。對話完成后和SB之間的連接就關(guān)閉了。不過由于所有的對話都在SB上進行,MS的服務(wù)器資源再強也會吃緊,所以現(xiàn)在新版的MSN Messenger都加入了P2P Message類型,在發(fā)起對話的時候會判斷如果雙方都支持sustain ,則會直接點對點連接連接,繞過SB這一層。
在及時軟件的交互過程中,首先客戶端向服務(wù)器發(fā)送一個請求登錄令牌的數(shù)據(jù)包,服務(wù)器返回登錄令牌。這個令牌是在服務(wù)器端生成的,和客戶端的IP地址,版本信息等數(shù)據(jù)相關(guān)。在客戶端得到登錄令牌后,就會向服務(wù)器發(fā)送一個包含登錄信息的登錄請求,服務(wù)器首先會查看客戶端的號碼、IP地址和版本是否可以在本服務(wù)器上進行登錄,如果可以就驗證客戶端的登錄信息是否與服務(wù)器上保存的登錄信息一致,如果一致就向客戶端返回一個連接成功的數(shù)據(jù)包,不匹配則返回登錄失敗。這就是整個的登錄的實現(xiàn)過程。