• ABC
    2022-04-01
    在gitee上有一个jd-hotkey的项目,实现了热点数据推送至集群本地的功能,性能强悍。微博也可以用这种方式实现本地缓存。

    作者回复: 赞。这个方案应该可以解决前面同学 @猿人谷 提到的缓存一致性问题。

    
    12
  • neohope
    2022-05-03
    优化方面: 1、通过AI自动识别热点话题,识别地域性热点话题,热点话题加入服务端缓存 2、通过热点话题趋势预测,架构自动扩缩容 3、扛不住的时候,服务自动降级或熔断 4、跨区域多数据中心,就近访问 5、硬件方面,可以使用SSD,缓存新的非热点数据,替代内存,降低成本 功能方面: 1、热点话题管理 2、评论及转发管理 3、微博检索功能 4、微博合规性管理,包括屏蔽、删除功能 5、微博机器人识别

    作者回复: 赞

    
    4
  • 贯通
    2022-03-20
    用户 ID 分片带来的热点问题,可以通过优化缓存来改善;--老师可以再详细些么

    作者回复: 给带来热点的大V们更多的缓存,比如百万以上粉丝的大V缓存所有历史微博数据,这样就根本不会访问数据库,也就没有热点压力。

    共 2 条评论
    4
  • killer
    2022-03-19
    1.推拉模式纬度是针对粉丝查询好友发布微博构造的列表,用户如果在线采用推方式构建一个列表,用户不在线,上线后分别拉好友消息构造列表,这里有一个疑问,上线后不是用推方式吗?如果是好友发表微博再用推的方式,那么怎么保证拉的方式和推的方式平滑过度呢?2.后面有一个缓存七天微博数据是按照用户id和发表微博的id进行缓存的,纬度是针对发表者来做的缓存。所以对粉丝刷新列表并没有命中缓存呢?这两个纬度不同解决的应该是不同的问题呢?3.最后一问题是回复Geek的问题,七天内数据缓存起来不需要每个用户拉20条,如果要实现这个不是应该按照用户id缓存所有好友的微博吗?如果是这样,大v发表一篇微博要进行所有粉丝id和微博id的缓存吗?不知道我有没有理解错误

    作者回复: 1 用户上线后,先建立一个空的初始列表,如果这个时候好友发微博,就推到这个空的初始列表。然后用拉的方式构建一个拉列表,把拉列表内容接在前面的初始列表上。接的时候检查初始列表的内容是否在拉列表里,在的话,删除重复内容。 2 刷新微博就是按时间维度构建列表内容的,所以按照时间维度缓存,缓存不命中,说明关注的好友最近7天都不发微博,不活跃,大概率说明该用户自身也不活跃,符合缓存的设计目标。

    
    3
  • 猿人谷
    2022-03-22
    对于特别热门的微博内容,启用本地缓存模式后,保证一致性(本地缓存、分布式缓存、数据库),大佬是用的哪种方案?

    作者回复: 微博不能修改,只需要处理删除的情况就可以。 分布式缓存在用户删微博的时候直接删除即可,本地缓存采用过期失效,过期失效时间2分钟。过期失效会导致明星删除微博后,失效到期前还能刷出微博内容,但这是运营方可以接受的,甚至是期望的。

    共 2 条评论
    2
  • peter
    2022-03-18
    请教老师几个问题啊: Q1:反向代理和负载均衡都用Nginx吗? 文中有反向代理和负载均衡两个功能实体,它们是分别用一个组件来实现吗?比如用A来完成反向代理,用B来实现负载均衡。 Nginx既可以做反向代理,又可以做负载均衡,所以,会采用Nginx来完成这两项功能吗? Q2:用什么实现分布式文件系统?FastDFS?HDFS? Q3:用什么表示“最新微博”?时间吗?还是设置一个标记? Q4:新浪微博用了AI吗? Q5:微博的信息会一直存吗? 比如新浪微博,每一年都会有大量的消息需要存储。二十年后数据会积累很多。这些数据会一直保存吗?会根据一定策略删除老数据吗?

    作者回复: 1 不是,我们这个设计里,反向代理用nginx,负载均衡用lvs。也有反向代理和负载均衡都用nginx的,这种一般系统规模比较小,反向代理同时承担负载均衡的职责,画在架构图里,只画一个组件。 2 这里存储的是图片小文件,HDFS不合适,FastDFS或者Ceph都可以。 3 用,所有有广告推荐的都有AI。 4 Witter会存储,存储的成本是逐年下降的,数据很重要。新浪微博会不会存储看用户协议。

    
    2
  • 👽
    2022-03-18
    我觉得这篇专栏,高并发的设计已经相对比较全了:消息队列,缓存。 如果问我还有什么地方可以进一步优化的话,我觉得可以考虑的点: 1. 多地部署,就近访问。就近地区的用户请求,尽可能就近处理。同时,用户的相关信息是否可以就近访问,优先访问同一个数据中心的数据,然后再进行跨地域访问。个人理解,微博有一定地域性。比如,南方地区的人,是不是关注南方地区的博主就会多一些。东北,西北,以及国外,同理。(当然,这一点的可行性还没有深入分析,只是初步想法)。 2. 进一步深度定制。据我查询资料的结果来看的话呢,新浪微博的Redis组件和硬件搭配是经过定制的。Redis对于热点信息的存取做了优化,硬件方面使用SSD对于高频读写的数据做存储。 3. 就是通用类型的高可用保障,多地多可用区多副本的集群部署,个人认为,这个也可以结合数据优先就近访问。

    作者回复: 赞,新浪微博在很早的时候就部署了北京、上海、广州三个数据中心。

    
    1
  • 冷杉
    2022-08-29 来自北京
    请问一下李老师,您文稿中的图片用的是什么软件画的呀?

    作者回复: 亿图

    
    
  • Li Yao
    2022-07-01
    如果一个大V有1000万粉丝,其中有100万粉丝在线,当大V发微博时,会触发给100万人的缓存中新增数据吗?

    作者回复: 是的

    
    
  • 江楠大盗
    2022-04-08
    不理解为什么要用应用服务器的本地缓存,把这部分内容也放到CDN可以吗?

    作者回复: 每种缓存都有不命中的情况,热点内容在各种缓存都有。

    
    