用t-io從零寫一個像微信的IM(03):網絡框架選擇

用t-io從零寫一個像微信的IM(03):網絡框架選擇

網絡框架的選擇主要指服務器端,畢竟IM的技術門檻都在服務器端(這並不是說客戶端不難,只是相對而言技術門檻不是那麼高)

這裏先給出結論,我們選擇的是t-io,這裏有一份《t-io技術白皮書》,可以參考一下

給出結論後,來說說爲什麼選擇t-io。以IM的需求來說明爲什麼說選擇t-io是個不錯的思路

1. 既要支持socket又要支持websocket

既要支持socket又要支持websocket的網絡框架很多,但是我們想的更多的是,這兩個協議能相互適配和轉換,目前市面上在框架層支持協議相互適配和轉換的,只有t-io
dbe4a5d53870c815ad0249157816163b.jpeg

2. 可以方便地進行羣組管理

IM中有大量的業務是針對羣的操作,譬如對某個羣發消息、建立羣、解散羣、離開羣、將人踢出羣… …t-io天然支持羣組綁定和消息羣發
7e6aac98e4bdad8d106d23b6a33affc9.jpeg

3. 可以方便地進行用戶管理

IM中對用戶進行操作,是很常規的業務,譬如發消息給指定的用戶、將用戶踢出羣、將用戶加入羣… …t-io天然支持用戶綁定和發消息給用戶
7e22d17f709694eb8e3d2665377edb59.jpeg

4. 穩定、高效

滿足這一點的網絡框架很多,除了t-io還有netty,但像mina就不建議使用了(畢竟歷史太久了)
56b603e4d7ed49200f854a65bafe0c77.jpeg
98b984f5c74b7288200af45a3775a7df.jpeg

5. 易用、可駕馭

這一點,t-io基本完勝netty,僅代表個人能力特點表達的觀點,不是說netty不易、難駕馭(還是有很多人喜歡netty的)

6. 支持集羣

t-io內置了集羣能力
930f0f344e253c6cd8e2ca8640d9d1bc.jpeg

6. 其它錦上添花的功能

心跳檢測、半包粘包、集羣、流量監控統計… …這些t-io都有現成的了
da26119f700f926895efc6f9310b9f5d.jpeg
360723ec08ea847b08b0b8abe0f80f8c.jpeg
a512482644b836e36a390008bfbf2625.jpeg
1c5e6d7a46bd64e76db5f71d45e492bf.jpeg
b0270d5586282c66c110d68b9645d0f4.jpeg
f014af9d940fb993c1dcad66b6268206.jpeg





7. 結論

結論顯而易見,我們選擇了t-io

下集預告

用t-io從零寫一個像微信的IM(04):IM協議設計


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章