用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
下集预告
用t-io从零写一个像微信的IM(04):IM协议设计