关于微信架构
微信的技术设计上有很多微创新,看起来都很小,但是对于系统的稳定性、用户体验及开发敏捷都具有重要作用。
前轻后重由于客户端升级不便,从技术设计上尽量利用后端的设计来减少依赖客户端升级的方法。如某个版本新增了群聊功能,按常规思路,需要所有客户端升级才能全部打通。微信采用服务器兼容的方法,在老客户端不升级情况下让其增加群聊的功能,通过在服务端将群聊协议转换成之前旧版兼容的协议返回给老的客户端。
客户端辅助设计微信客户端做了很多非常规的功能,比如常规的客户端测速方法是登录阶段轮询测试多个 IP 来选择服务器,这样会带来流量及登录速度双方面的开销,因此微信选择的方法是服务端返回最佳的 IP(可能是通过历史数据分析)。客户端另外实现了一些容灾能力的配合,当一个 IDC 访问出现异常自动选择另外一个 IDC。
流量控制由于大部分无线用户对流量非常敏感,为了防止由于客户端不可预知的 bug 如死循环导致“偷流量”,服务端增加用户流量实时分析的方法,可以在海量数据下找出流量异常的用户,并给这些用户强制下行终止连接信号。
版权声明: 本文为 InfoQ 作者【俞嘉彬】的原创文章。
原文链接:【http://xie.infoq.cn/article/c0059ee17ca0b172e9cc7ba13】。未经作者许可,禁止转载。
评论