别瞎搞了!微博、知乎就是这么设计Feed流系统的~

本文探讨了Feed流系统的设计,包括其特点、数据分类、存储选择、同步模式和元数据处理。核心在于理解产品类型、用户规模、关注关系和排序方式,以及如何在亿级用户规模下保证系统的稳定性和扩展性。存储库选择考虑了可靠性、水平扩展能力,推荐使用分布式NoSQL。同步模式中,推模式适用于单向关注关系,而推拉结合模式用于平衡资源浪费和系统复杂性。元数据处理涉及用户详情、关注关系和推送session池,确保信息推送的高效和系统稳定性。
摘要由CSDN通过智能技术生成

# Feed流系统特点

Feed流本质上是一个数据流,是将 “N个发布者的信息单元” 通过 “关注关系” 传送给 “M个接收者”。

Feed流系统是一个数据流系统,所以我们核心要看数据。从数据层面看,数据分为三类,分别是:

  • 发布者的数据:发布者产生数据,然后数据需要按照发布者组织,需要根据发布者查到所有数据,比如微博的个人页面、朋友圈的个人相册等。

  • 关注关系:系统中个体间的关系,微博中是关注,是单向流,朋友圈是好友,是双向流。不管是单向还是双向,当发布者发布一条信息时,该条信息的流动永远是单向的。

  • 接收者的数据:从不同发布者那里获取到的数据,然后通过某种顺序(一般为时间)组织在一起,比如微博的首页、朋友圈首页等。这些数据具有时间热度属性,越新的数据越有价值,越新的数据就要排在最前面。

针对这三类数据,我们可以有如下定义:

  • 存储库:存储发布者的数据,永久保存。

  • 关注表:用户关系表,永久保存。

  • 同步库:存储接收者的时间热度数据,只需要保留最近一段时间的数据即可。

  • 设计Feed流系统时最核心的是确定清楚产品层面的定义,需要考虑的因素包括:

  • 产品用户规模:用户规模在十万、千万、十亿级时,设计难度和侧重点会不同。

  • 关注关系(单向、双向):如果是双向,那么就不会有大V,否则会有大V存在。

上述是选择数据存储系统最核心的几个考虑点,除此之外,还有一些需要考虑的:

  • 如何实现Meta和Feed内容搜索?

虽然Feed流系统本身可以不需要搜索,但是一个Feed流产品必须要有搜索,否则信息发现难度会加大,用户留存率会大幅下降。

  • Feed流的顺序是时间还是其他分数,比如个人的喜好程度?

双向关系时由于关系很紧密,一定是按时间排序,就算一个关系很紧密的人发了一条空消息或者低价值消息,那我们也会需要关注了解的。

单向关系时,那么可能就会存在大V,大V的粉丝数量理论极限就是整个系统的用户数,有一些产品会让所有用户都默认关注产品负责人,这种产品中,该负责人就是最大的大V,粉丝数就是用户规模。

接下来,我们看看整个Feed流系统如何设计。

# Feed流系统设计

上一节,我们提前思考了Feed流系统的几个关键点,接下来,在这一节,我们自顶向下来设计一个Feed流系统。

1. 产品定义

第一步,我们首先需要定义产品,我们要做的产品是哪一种类型,常见的类型有:

  • 微博类

  • 朋友圈类

  • 抖音类

  • 私信类

接着,再详细看一下这几类产品的异同:

上述对比中,只对比各类产品最核心、或者最根本特点,其他次要的不考虑。比如微博中互相关注后就是双向关注了,但是这个不是微博的立命之本,只是补充,无法撼动根本。

从上面表格可以看出来,主要分为两种区分:

  • 关注关系是单向还是双向:

如果是单向,那么可能就会存在大V效应,同时时效性可以低一些,比如到分钟级别;

如果是双向,那就是好友,好友的数量有限,那么就不会有大V,因为每个人的精力有限,他不可能主动加几千万的好友,这时候因为关系更精密,时效性要求会更高&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值