V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
t4we
V2EX  ›  程序员

求问:关注时间线怎么实现

  •  
  •   t4we · 2021-11-08 15:52:45 +08:00 · 1586 次点击
    这是一个创建于 1102 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学怎么做关注流,网上的资料都是说根据粉丝数量,混合使用拉模型和推模型,有点细节一直困扰我:

    推模型比较容易理解,拉模型则要遍历所有关注的用户取动态,结合成时间线,但是每个用户发动态的时间是不一样的,感觉要从一个时间点开始取,比如每个关注取 1 天内的动态,最后看结果能不能构成一页,不够的话继续向前取,超出的话缓存起来。这样感觉效率很差,每个关注都要查一次,另外如果用户的关注过多,1 天内的缓存会太大,如果关注过少,会一直循环向前取,想问下拉模型的实现方式,或者还有什么更好的方法吗?

    8 条回复    2021-11-09 10:49:40 +08:00
    BBCCBB
        1
    BBCCBB  
       2021-11-08 15:56:30 +08:00
    写扩散, 一般来说发布的时候就写到你的关注者的 timeline 里去了.. 每个人实时维护一个 timeline..

    这是针对关注你的人不多的情况, 粉丝多的就麻烦了. 可能要搞推拉结合..
    Itoktsnhc
        2
    Itoktsnhc  
       2021-11-08 16:04:03 +08:00
    推的扩散太大可以考虑一下对关注的用户按照一定比例分组,实际推送到的是组这个级别。
    另外时间线这个需求一般不会要求一个页面的动态数量一定得满足一个值,基本上就是差不多就结束
    wellsc
        4
    wellsc  
       2021-11-08 16:11:39 +08:00
    推拉结合🐶
    t4we
        5
    t4we  
    OP
       2021-11-08 16:15:38 +08:00
    @BBCCBB 推扩散比较简单,但是肯定不能只推的,拉的具体逻辑感觉不好控制
    t4we
        6
    t4we  
    OP
       2021-11-08 16:18:10 +08:00
    @BBCCBB 比如长期不登陆的用户,要降到读扩散,这时候读的逻辑比较复杂
    wd
        7
    wd  
       2021-11-09 07:41:40 +08:00
    我理解每个人维护一个 timeline 应该是不行的,一来数据量会巨大且重复数据多,二来涉及到删除什么的很麻烦。

    应该是使用类似搜索引擎的思路,只有一份数据 build 索引,然后可以通过不同维度查询。
    SmiteChow
        8
    SmiteChow  
       2021-11-09 10:49:40 +08:00
    没那么复杂,活动是和人绑定的,拉朋友的活动聚合排序就可以了。

    哲学核心理念是活动分页->聚合排序->模拟的时间线
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1045 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:23 · PVG 06:23 · LAX 14:23 · JFK 17:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.