本文主要是介绍个人知乎 ##功能九-timeline/新鲜事推送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
个人知乎
功能九-timeline/新鲜事推送
基础知识
不同用户不同的内容
推:事件触发后广播给所有粉丝,异步实现简单粉丝量大时,后台压力大
拉:登录时主动拉取关注内容读取压力大
推拉:活跃/在线用户推其他/僵尸拉
大型网站技术架构按时间分表异步处理分库分表,比如按尾号分级缓存,热门数据存在内存多机房数据同步
人人网推送为主,新鲜事合并内存缓存关系链数据压缩缓存异步线程池
业务分析
模型:feed新鲜事
拉模式:读取数据库
推模式:
Model
feed:id,type,userId,createdDatedata:json格式
数据表
根据模型建表
DAO
注解实现简单sql插入
xml实现动态sql查询和userId相关的新鲜事
Service
查询list<userId>对应的新鲜事
Controller
拉模式feedHandler当如评论,关注等Event事件发生时,生成一个feed并入数据库getPullFeeds:拉模式根据登录用户取出关注的人,得到id列表list<userId>调用Service从数据库得到所有的新鲜事用macro宏在模板根据type中渲染出不同样式
推模式feedHandler当把feed存入库时,还需要推入到粉丝的reids.<timelinekey,list>中用户登录时根据自己的timelinekey直接从redis取出所有feed注意当取消关注或者取消事件是需要同步redis
这篇关于个人知乎 ##功能九-timeline/新鲜事推送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!