作者回复: 赞。这个方案应该可以解决前面同学 @猿人谷 提到的缓存一致性问题。
作者回复: 赞
作者回复: 给带来热点的大V们更多的缓存,比如百万以上粉丝的大V缓存所有历史微博数据,这样就根本不会访问数据库,也就没有热点压力。
作者回复: 1 用户上线后,先建立一个空的初始列表,如果这个时候好友发微博,就推到这个空的初始列表。然后用拉的方式构建一个拉列表,把拉列表内容接在前面的初始列表上。接的时候检查初始列表的内容是否在拉列表里,在的话,删除重复内容。 2 刷新微博就是按时间维度构建列表内容的,所以按照时间维度缓存,缓存不命中,说明关注的好友最近7天都不发微博,不活跃,大概率说明该用户自身也不活跃,符合缓存的设计目标。
作者回复: 微博不能修改,只需要处理删除的情况就可以。 分布式缓存在用户删微博的时候直接删除即可,本地缓存采用过期失效,过期失效时间2分钟。过期失效会导致明星删除微博后,失效到期前还能刷出微博内容,但这是运营方可以接受的,甚至是期望的。
作者回复: 1 不是,我们这个设计里,反向代理用nginx,负载均衡用lvs。也有反向代理和负载均衡都用nginx的,这种一般系统规模比较小,反向代理同时承担负载均衡的职责,画在架构图里,只画一个组件。 2 这里存储的是图片小文件,HDFS不合适,FastDFS或者Ceph都可以。 3 用,所有有广告推荐的都有AI。 4 Witter会存储,存储的成本是逐年下降的,数据很重要。新浪微博会不会存储看用户协议。
作者回复: 赞,新浪微博在很早的时候就部署了北京、上海、广州三个数据中心。
作者回复: 亿图
作者回复: 是的
作者回复: 每种缓存都有不命中的情况,热点内容在各种缓存都有。