用t-io從零寫一個像微信的IM(03):網絡框架選擇
網絡框架的選擇主要指服務器端,畢竟IM的技術門檻都在服務器端(這並不是說客戶端不難,只是相對而言技術門檻不是那麼高)
這裏先給出結論,我們選擇的是t-io,這裏有一份《t-io技術白皮書》,可以參考一下
給出結論後,來說說爲什麼選擇t-io。以IM的需求來說明爲什麼說選擇t-io是個不錯的思路
1. 既要支持socket又要支持websocket
既要支持socket又要支持websocket的網絡框架很多,但是我們想的更多的是,這兩個協議能相互適配和轉換,目前市面上在框架層支持協議相互適配和轉換的,只有t-io了
2. 可以方便地進行羣組管理
IM中有大量的業務是針對羣的操作,譬如對某個羣發消息、建立羣、解散羣、離開羣、將人踢出羣… …t-io天然支持羣組綁定和消息羣發
3. 可以方便地進行用戶管理
IM中對用戶進行操作,是很常規的業務,譬如發消息給指定的用戶、將用戶踢出羣、將用戶加入羣… …t-io天然支持用戶綁定和發消息給用戶
4. 穩定、高效
滿足這一點的網絡框架很多,除了t-io還有netty,但像mina就不建議使用了(畢竟歷史太久了)
5. 易用、可駕馭
這一點,t-io基本完勝netty,僅代表個人能力特點表達的觀點,不是說netty不易、難駕馭(還是有很多人喜歡netty的)
6. 支持集羣
t-io內置了集羣能力
6. 其它錦上添花的功能
心跳檢測、半包粘包、集羣、流量監控統計… …這些t-io都有現成的了
7. 結論
結論顯而易見,我們選擇了t-io