如何设计消息频率,可以让用户体验(实时性、可靠性、完整性)与服务器压力达到一个完美的平衡?
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
如何设计消息频率,可以让用户体验(实时性、可靠性、完整性)与服务器压力达到一个完美的平衡?
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
我们实现消息功能一般有两种做法
ajax 轮询(客户端主动)
为了时效问题,我们肯定会上 websocket 的,这样有了新消息服务端可以主动推送。
但是因为 websocket 的一些问题,比如说应答机制、兼容性等等,我们其实还会有一套基于 http 的降级服务。当然,也会对 websocket 进行一些包装,扩展 timeout、应答、重发等多种逻辑。
这里我们会使用推拉结合架构
然后我们会对于一些极端情况做处理
经过上面的方案,我们就可以实现一个实时的、可靠的im消息了