微信朋友圈高性能架构
概述
本文主要从微信朋友圈的动态、评论、点赞几个方面来分析朋友圈的高性能架构。
设计与实现
动态设计
首先我们要明确以下几个问题:
1、动态是一个读多写少的业务
2、发布的动态自己可以随时查看
3、动态对好友有可查看时效
存储高性能我们使用 mysql+influxdb 来存储,mysql 用来存储发布动态的内容,influxdb 用来存储需要推送给好友的内容。(使用 influxdb 的原因是首先从查看动态是基于时间线来查看的,而 influxdb 是一种时序数据库,同时动态是一个读夺写少的业务,因此我们采用写放大的模式,为每个好友建立一个队列,在发布动态的时候,向好友队列中写入动态,集群中使用 key 值做 hash)
动态高性能方案设计如下:
动态高性能架构方案如下:
评论点赞设计
由于评论点赞的数据量较大,并且容忍性较高,因此我们使用 NoSql 来持久化数据,redis cluster 来缓存数据
高性能设计方案:
高性能架构方案:
评论