IM系统设计实践(一)

一种推拉模式下的IM系统设计实践

IM系统简介

随着如今线上社交场景和社交方式愈来愈多,在社交中沟通是一个必要的环节,愈来愈多的app应用将IM功能做为必备核心功能之一,因此IM系统的设计也变得愈来愈重要,这里给你们介绍IM系统一种推拉结合方式的实现。
IM系统具备的基础功能有发送消息、查看消息、新消息推送、未读消息数,对于消息群主、消息已读、消息撤回、从新编辑、消息删除、对方正在输入中这些功能都是IM系统的业务功能,这里将会分开讨论。android

系统架构设计

图片描述

展现层
多端展现功能,咱们但愿实现最好的状况是支持web端、android端、ios端的展现,因为咱们但愿在不一样的客户端都可以接入咱们的IM系统,因此咱们在链接层会支持不一样的协议。
链接层
咱们支持web端,在链接层须要接入websocket,由于websocket推送的支持咱们才能更好地通知web端的用户。
咱们支持android端,在链接层须要接入各个主流安卓厂商的推送,由于厂商的推送相对于其余第三方推送厂商更可以保障咱们更高的推送到达率。
咱们支持ios端,在链接层须要接入苹果apns推送,由于苹果支持官方的apns推送。
咱们对于android端和ios端,除链接入厂商的推送,咱们要保障有更高的推送到达率,咱们还接入长链接推送(自开发)。
业务层
业务层主要功能是将私信复杂的业务进行聚合,与第三方服务和私信业务功能服务、私信基础功能服务进行交互。
存储接口层
存储接口层是对存储层基础功能作的一层封装,不涉及太多业务逻辑。ios

关键概念介绍

咱们这是一种推拉结合的方式实现的该系统,因此咱们这里查看消息功能(新消息订阅、历史消息查看)实现是经过拉取的方式实现,不是经过直接推送的方式实现,咱们这里以用户A与用户B的聊天场景进行简单介绍。web

消息会话列表
用户A对用户B发起聊天产生的会话咱们在这里会记录为一次会话记录,用户A对多个用户造成的多个消息会话记录造成的列表咱们这里叫作会话列表。
首屏消息列表
当用户B不在线,因为咱们这里使用的是推拉结合的方式,咱们存在用户A对用户B发送消息以后,这样怎样让用户B下次打开app的时候看到用户A给本身发送的聊天消息呢?这样就须要在用户B打开这个会话时第一时间看到用户A给本身发送的消息,看到一整屏的新消息,这里获取到的消息叫作首屏消息列表。
新消息列表
当用户B在线时,咱们收到了用户A发过来的新消息推送,这个时候用户B就会主动获取用户A发给本身的新消息,这里获取到的消息叫作新消息列表。
历史消息列表websocket

相关文章
相关标签/搜索