正式13-timeline实现
timeline跟传统网站的挑战在于每个人看到的都不同,
给每一个人实时生成他所感兴趣的时期。
timeline技术上的实现,推拉模式
flyweight 享元模式
feed流
推拉模式:
推的定义:事件触发后广播给所有的粉丝。
优缺点:对于粉丝过多的事件后台压力大,浪费存储空间。
拉的定义:登录打开页面的时候根据关注的实体动态生成timeline内容。
优缺点:读取压力小,存储空间小
推拉的定义:活跃/在线用户推,
其他用户拉
优缺点:降低存储空间,又满足大部分用户的读取需求。
新鲜事存储/渲染
timeline统一存储,用户保存新鲜事id列表,用户
根据id就能找到新鲜事核心数据。找到核心数据就知道
新鲜事的是属于什么类型的,类型就会对应一个模板,有了
数据和模板就可以生成卡片。一条新鲜事就可以渲染出一张卡片来。
用户的timeline有若干个这样的卡片,每一个都是这样渲染出来。
flyweight模式,享元模式,底层数据都是一份的,都是公共的去引用它,
这就是享元模式,
微博的架构演化:
第一版:
1、纯推送,推送延迟,压力大,数据存储浪费。