- 刘文
- 平台用户关系组
- liuwen6@staff.weibo.com
- 要求:
- 允许评论(每条消息平均300byte)
- 每秒只需显示最新的5条消息
- ⽤户发⾔实时性(5s之内)
- 视频平均⻓度1个⼩时,⽤户平均观看时⻓为5分钟,⽤户点击打开视频的qps为100
- ⽉活⽤户数:3亿
- 平均关注⼈数:200⼈
- feed晚⾼峰峰值:2W QPS
- ⽇均内容发布⼈数:50W
- ⽇均内容发布总量:100W
- 假设发布直播⽤户数为关注⼈数的10%
- 公式:
- 读 直播:2W * 200 QPS * 10%= 40wQPS
- 写评论:
- 假设有200个粉丝评论:200QPS
- 读评论,出story的同时,出评论,因此读评论和读直播的QPS一致。
- 40W QPS
-
mysql
MySQL单实例最高的读QPS为6k,假设穿透DB的概率为5%,请求量为2w/s。
按uid划分,4个端口,每个端口5000QPS读取,因此需12个从。故 2主4从。
-
memcached
按uid划分,4个端口。L1,Master,Slave三层缓存。
每个端口10wQPS读,写QPS几乎可以忽略不计,因此需要8台L1,1台Master,2台Slave。
- 数据表设计
- 评论表
- liveId
- commentId
- commentUid
- commentTime
- commentContent
- 评论表
- 评论发布接口,用户发布评论
- 传入参数:用户uid,直播id,评论内容,评论时间
- 返回值:true/false
- 用户发布评论时调用该接口
- 评论获取接口,用于获取最新的评论信息
- 传入参数:当前时间
- 返回值:true/false
- 每秒只需显示最新的5条消息,系统每秒钟调用一次该接口,每秒钟内最新的5条评论展示出来
- 评论删除接口,保证用户发言的实时性。
- 传入参数:当前时间
- 返回值:true/false
- 根据传入时间,将前15秒钟内用户发布的评论删除,保证用户发言的实时性。