浅谈IM系统的架构设计
选择困难症1:网络传输协议的选择
目前我知晓的所有IM系统传输即时消息无外乎使用UDP、TCP、基于TCP的http这几种协议中的一种或几种。比如QQ主要采用UDP协议,MSN主要采用TCP协议,而且他们也都支持HTTP协议的代理模式。更多资料,请参加这篇文章《即时通讯等通信软件的网络协议和端口收集整理》。
我们该如何选择呢?
- UDP协议实时性更好,但是如何处理安全可靠的传输并且处理不同客户端之间的消息交互是个难题,实现起来过于复杂;
- HTTP协议属于扩展支持,我们在产品的初始阶段可以不用支持;
- 那就非TCP协议莫属了,要考虑的同样也有很多,特别是如果有海量用户的需求。如何保证单机服务器高并发量,如何做到灵活,扩展的架构。
选择困难症2:数据通信格式(协议)的选择
二进制格式?文本格式?这个话题转到这篇文章《如何选择即时通讯应用的数据传输格式》,从我们当前的需求和产品周期上我觉得选择JSON形式的数据协议是最好的。