(本图引用自《现代IM系统中聊天消息的同步和存储方案探讨》一文)
存储是IM系统的基石,以下文章可以深入阅读:
《微信后台基于时间序的海量数据冷热分级架构设计实践》
《现代IM系统中聊天消息的同步和存储方案探讨》
《社交软件红包技术解密(六):微信红包系统的存储层架构演进实践》
▶ 6)消息未读数:
消息未读数?看起来也就是那个所有IM应用都有的未读小红点嘛。是的,看起来也好简单!
然而,消息未读数功能的实现也一样不简单:
1)未读数是客户端实现还是服务端实现?
2)会话未读和总未读怎么保持一致?
3)多终端情况下,怎么保证未读数的一致性(我在这台设备上读没读,那台设备怎么知道的?)?
是的,看起来就这么简简单单的3件事,但深入思考一下,还真的简单不起来。
8、本文小结IM系统的应用场景已经不单单是IM聊天应用这一种形态,它已经融入到互联网应用的方方面面,必竟谁都想自已的应用具备“实时”交互这种能力,因为体验太好了。
IM系统典型架构无非就是网络接入层、业务逻辑层、数据存储层,除开网络接入层,其它各层其实跟普通的应用系统看起来差别并不是太大。
IM系统的技术特点来说,就是实时性、可靠性、一致性、安全性,除了实时性对于多数应用来说并不关心,其它的指标也很好理解。
IM系统的功能组成上,联系人列表用于数据模型的建立、聊天界面承载了IM系统的终端展现、消息的收发通道用于实现“实时”这个特性、存储和未读数看似不是必须但用户体验上确必不可少。(本文同步发布于:http://www.52im.net/thread-3065-1-1.html)