架构与特性:一个完整的IM系统是怎样的?

使用者眼中的聊天系统

如果我们站在一个使用者的角度从直观体验上来看,一个简单的聊天系统大概由以下元素组成:用户账号、账号关系、联系人列表、消息、聊天会话。我在这里画了一个简单的示意图:

image.png

开发者眼中的聊天系统

从一个 IM 系统开发者的角度看,聊天系统大概由这几大部分组成:客户端、接入服务、业务处理服务、存储服务和外部接口服务。

image.png

为什么接入服务和业务处理服务要独立拆分呢?

  • 接入服务作为消息收发的出入口,必须是一个高可用的服务,保持足够的稳定性是一个必要条件。

  • 如果消息收发接入和业务逻辑处理都在一起,势必会让接入模块随着业务逻辑的变更上线,而频繁起停,导致已通过网络接入的客户端连接经常性地断连、重置、重连。

  • 从业务开发人员的角度看,接入服务和业务处理服务进行拆分有助于提升业务开发效率,降低业务开发门槛。

  • 模块拆分后,接入服务负责处理一切网络通信相关的部分,比如网络的稳定性、通信协议的编解码等。这样负责业务开发的同事就可以更加专注于业务逻辑的处理,而不用关心让人头痛的网络问题,也不用关心“天书般的通信协议”了。

IM 系统都有哪些特性?

  • 实时性

  • 可靠性

    • 不丢消息
    • 消息不重复
  • 一致性

    • 同一条消息,在多人、多终端需要保证展现顺序的一致性
    • 消息序号生成器
  • 安全性

    • 数据传输安全
    • 数据存储安全
    • 消息内容安全
公众号:码农架构

你可能感兴趣的:(架构与特性:一个完整的IM系统是怎样的?)