信息流系统

作者: Cathy 分类: 编程开发 发布时间: 2023-06-19 13:59

类似于朋友圈,推送信息的数据流

  • 实时性:关注的人发布信息后,信息需要短时间内出现信息流中
  • 高并发:例如微博,信息流是主体模块,并发请求量是最高的
  • 性能:信息流拉取性能直接影响用户的使用的体验,信息流需要聚合的数据非常多,而聚合数据需要查询多次缓存、数据库、计数器,需要在高并发请求下,快速完成查询操作

以微博关注者动态为例:

Feed 流的 3 种推送模式:

  • 推模式:用户发送动态后,需要将动态推送给其他粉丝,推模式下,需要将动态插入到每位粉丝对应的 feed 表中,存储成本非常高,写入数据库的操作太高
  • 拉模式:粉丝主动去拉取动态,将动态根据时间等指标进行实时聚合,降低了存储成本,但是查询和聚合的成本很高,且实时性过差
  • 推拉结合模式:针对大 V 和不活跃用户进行特殊处理,只将动态写入活跃用户,不活跃用户需要手动拉取

通常使用的存储方案是 MySQL + Redis,MySQL 永久保存数据,Redis 作为缓存提高热点数据的访问速度,如果缓存的数据量太大,可以考虑使用 Redis 集群

为了提高系统的并发,可以考虑对数据进行读写分离和分库分表
读写分离主要是将数据库的读写操作分到不同的数据库节点,主服务器负责写,从服务器负责读,读写分离可以大幅提高读性能,小幅度提高写的性能,适合单机并发读请求多的场景
分库分表是为了解决数据库表数据量过大,而导致数据库性能持续下降的问题

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注