使用者眼中的聊天系统
如果我们站在一个使用者的角度从直观体验上来看,一个简单的聊天系统大概由以下元素组成:用户账号、账号关系、联系人列表、消息、聊天会话。我在这里画了一个简单的示意图:
image.png开发者眼中的聊天系统
从一个 IM 系统开发者的角度看,聊天系统大概由这几大部分组成:客户端、接入服务、业务处理服务、存储服务和外部接口服务。
image.png为什么接入服务和业务处理服务要独立拆分呢?
-
接入服务作为消息收发的出入口,必须是一个高可用的服务,保持足够的稳定性是一个必要条件。
-
如果消息收发接入和业务逻辑处理都在一起,势必会让接入模块随着业务逻辑的变更上线,而频繁起停,导致已通过网络接入的客户端连接经常性地断连、重置、重连。
-
从业务开发人员的角度看,接入服务和业务处理服务进行拆分有助于提升业务开发效率,降低业务开发门槛。
-
模块拆分后,接入服务负责处理一切网络通信相关的部分,比如网络的稳定性、通信协议的编解码等。这样负责业务开发的同事就可以更加专注于业务逻辑的处理,而不用关心让人头痛的网络问题,也不用关心“天书般的通信协议”了。
IM 系统都有哪些特性?
-
实时性
-
可靠性
- 不丢消息
- 消息不重复
-
一致性
- 同一条消息,在多人、多终端需要保证展现顺序的一致性
- 消息序号生成器
-
安全性
- 数据传输安全
- 数据存储安全
- 消息内容安全
网友评论