系统设计
本节的主要目标是设计一个百万级用户同时在线的IM系统,详细描述其需要考虑的方方面面,如:
- 服务端架构如何设计,服务如何划分?
- 协议的设计有那些考量,主要流程是什么?IM消息主要包括哪些字段?
- 服务如何做到三高(高可用高并发高性能)?
- 和十万级用户的系统有哪些差异?
作者会从传统的瀑布模型去拆解和讲述,主要按照下面的顺序:
- 需求分析
- 概要设计(架构)
- 详细设计(交互、协议)
需求部分不是我们的重点,这里会以设计目标单体,单纯的按照用户量级去设计我们的架构,比如十万和百万量级用户同时在线的情况下, 他们的架构会有什么区别?
概要设计部分主要包括物理架构和逻辑架构,物理体现在服务器的整体部署,偏运费部分,能让我们对系统整体有一个更宏观的认识。逻辑部分,则强调模块的划分,系统的构成等等。
最后是详细设计,主要包含各个模块的交互图以及私有协议,实战编码中,这也是查看频率最高的2个文档。