在开始打造我们自己的实时聊天系统之前,我们需要先思考🤔几个问题:
- 用户体量大概多少?如何扩容?
- 用户分布的区域?
- 如何保证消息(低延时、必)送达?
做过 IM 或信令的小伙伴都知道,实时传输对服务端有着颇高的要求。就以社交 APP 为例,每秒种要处理成百上千甚至更多的文字和图片的传输;弱网丢包的情况要保证消息的完整性的同时还要确保消息已送达;这其中的技术原理和解决方案不是一个 WebSocket
所能涵盖的。
就消息必达而言,系统除了要有择优链路能力以外,还要具备多活链路。比如:一旦有一条链路出现问题,那么该消息就不一定能够送达。然而现实环境往往必我们想象中理想环境来的更糟糕和残酷,与此同时我们还要面对:网络丢包、用户量指数上升并发上不去,甚至系统宕机等等。
因此,要打造一个怎样的聊天系统,取决于我们产品的需求,根据需要选择集群部署的数量、节点的分布等诸多因素。
实时聊天系统应具备的特性
- 高并发
- 低延时
- 消息必达
- 弱网抗性
- 集群部署
- 消息推送(可选)
实时聊天系统应具备的功能
- 点对点消息
- 群组消息
- 呼叫邀请
现在的社交 APP 玩法十分丰富,提供图文传输还加入了实时通讯模块,衍