1.设计news feed
1.设计新闻feed
参考上面的4s法则
pull模式
主要思路就是进行拉取最新的朋友动态,然后进行排序
1 |
|
总体流程图如下
缺陷
n次db查询太慢了,
push模式
用户推送过来,不要自己去拉
这样就要进行修改schema,加入一个toid,contentid,
分析
这样就会直接一次查询id,然后排序就行,但是写入就要多次写入
缺陷
插入太多
2.scale
优化
加入更多功能,like,点赞
优化pull的局限性
可以加入到redis缓存,作为直接进行提取,ncidb直接访问,n次的cache
cache缓存自己的最近news feed,不必要每次都进行排序
解决push的局限性
插入到disk还好,但是有僵尸粉太多了,也会写入的,所以可以直接不用写入他们,让他们来进行拉取操作
优化可以是明星不用push,直接使用pull操作,不然太多了
总结
- 4s法则
- 查询需要的场景和具体功能,计算qps
- 然后分析主要有的服务
- 之后输出储存结构
- 最后是优化方案
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.