现如今的互联网产品中,即时通讯技术已经不仅限于传统IM聊天工具本身,它早已通过有形或无形的方式嵌入到了各种形式的互联网应用当中。IM技术(或者说即时通讯技术)对于很多开发者来说,确实是必不好可少的领域知识,不可或缺。
典型的IM系统通常需要满足四点能力:高可靠性、高可用性、实时性和有序性。
架构设计
以我的这个项目来说,架构设设计要点主要是:
1)微服务:拆分为用户微服务 &消息连接服务 &消息业务服务;
2)存储架构:兼容性能与资源开销,选择 reids&mysql;
3)高可用:可以支撑起高并发场景,选择 Spring 提供的 websocket;
4)支持多端消息同步:app 端、web 端、微信公众号、小程序消息;
5)支持在线与离线消息场景。
理解读扩散和写扩散
我们举个例子说明什么是读扩散,什么是写扩散:
一个群聊“相亲相爱一家人”,成员:爸爸、妈妈、哥哥、姐姐和我(共 5 人)。
因为你最近交到女朋友了,所以发了一条消息“我脱单了”到群里面,那么自然希望爸爸妈妈哥哥姐姐四个亲人都能收到了。
正常逻辑下,群聊消息发送的流程应该是这样: