用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协议设计


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