微信朋友圈架构设计
复杂度分析
微信朋友圈的总体复杂度属于业务复杂度和质量复杂度都比较高的业务;
涉及发朋友圈、看朋友圈、评论、回复、朋友圈权限等众多业务功能
微信朋友圈一上线就受到大量用户的青睐
服务不允许 down 机,否则会有公关危机,给公司带来负面影响
本次重点分析发朋友圈、看朋友圈业务复杂度
架构设计
基于业务复杂度,架构设计三原则,设计了单机集群架构和异地双活架构
单机集群架构
设计理由:
在业务初期,用户体量尚未爆发式增长前,基于演化原则,先采用单机集群架构即可
朋友圈业务无特殊的负载需求,则负载均衡直接采用 nginx 论策略即可
根据用户使用场景,发朋友圈和看朋友圈无需单独拆分服务,只需要做好集群负载即可
由于朋友圈的数据量非常大,则可根据用户进行数据分片
用户刷朋友圈的频率高,则可对近期可见的朋友圈内容进行缓存,提升访问速度,降低数据库查询压力
异地双活架构
设计理由:
当用户体量达到一定程度,为了尽可能的保证服务高可用,则可采用异地双活架构,保证不会因为单机房 down 机而导致服务不可用
流量通过 nginx 可以分发到两个机房
由于机房跨两地,数据库需要进行双向同步,为了降低数据同步延迟,最好是能有有通信专线
数据缓存则可以直接使用本地机房的缓存
版权声明: 本文为 InfoQ 作者【风行】的原创文章。
原文链接:【http://xie.infoq.cn/article/5f337eb7b9177a3421e361f41】。文章转载请联系作者。
评论