画板

1.设计新闻feed

参考上面的4s法则

pull模式

主要思路就是进行拉取最新的朋友动态,然后进行排序

1
2
3

1.数据库读取所有的好友动态,然后k路排序,选择最新的100条返回
2.写入的时候直接进行写入

总体流程图如下

画板

缺陷

n次db查询太慢了,


push模式

用户推送过来,不要自己去拉

这样就要进行修改schema,加入一个toid,contentid,

分析

这样就会直接一次查询id,然后排序就行,但是写入就要多次写入

画板

缺陷

插入太多

2.scale

优化

加入更多功能,like,点赞

优化pull的局限性

可以加入到redis缓存,作为直接进行提取,ncidb直接访问,n次的cache

cache缓存自己的最近news feed,不必要每次都进行排序

解决push的局限性

插入到disk还好,但是有僵尸粉太多了,也会写入的,所以可以直接不用写入他们,让他们来进行拉取操作

优化可以是明星不用push,直接使用pull操作,不然太多了

总结

  1. 4s法则
  2. 查询需要的场景和具体功能,计算qps
  3. 然后分析主要有的服务
  4. 之后输出储存结构
  5. 最后是优化方案