个人知乎 ##功能九-timeline/新鲜事推送

来源:互联网 发布:华为推送 java服务端 编辑:程序博客网 时间:2024/05/01 08:28

个人知乎

功能九-timeline/新鲜事推送

基础知识

不同用户不同的内容推:    事件触发后广播给所有粉丝,异步实现简单    粉丝量大时,后台压力大拉:    登录时主动拉取关注内容    读取压力大推拉:    活跃/在线用户推    其他/僵尸拉大型网站技术架构    按时间分表    异步处理    分库分表,比如按尾号    分级缓存,热门数据存在内存    多机房数据同步人人网    推送为主,新鲜事合并    内存缓存关系链    数据压缩缓存    异步线程池

业务分析

模型:feed新鲜事拉模式:读取数据库推模式:

Model

feed:id,type,userId,createdDate    data: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