编辑
2023-11-11
IM即时通讯
00
请注意,本文编写于 594 天前,最后修改于 594 天前,其中某些信息可能已经过时。

目录

读扩散(拉模式)
写扩散(推模式)

读扩散和写扩散是在信息推流系统中常用的两种策略,用于处理用户关注的内容的传播和推送。下面将详细解释这两个概念。

读扩散(拉模式)

读扩散是一种基于拉取的策略,主要用于获取用户关注的内容。在读扩散中,用户需要主动拉取数据来获取最新的信息。以下是读扩散的实现方式和特点:

  1. 发布内容:在读扩散中,用户发布内容的过程相对简单。用户只需将自己发布的内容添加到自己的信息队列中即可。

  2. 关注/取关:用户在读扩散中取消关注或添加关注的流程也相对简单。取消关注只需从关注列表中删除对应用户,添加关注只需将对应用户添加到关注列表中。

  3. 个人主页feed流:在读扩散中,用户获取由其他用户发布的内容组成的个人主页的过程相对复杂。用户需要获取自己关注的用户列表,然后获取这些用户发布的内容,并对内容进行排序,最后取出一页的内容。

读扩散的优点:

  • 存储结构简单,数据存储量较小。
  • 关注、取关和发布内容的流程简单。
  • 适合项目早期用户量、数据量和并发量不大的情况下快速实现。

读扩散的缺点:

  • 获取个人主页feed流列表的流程复杂。
  • 需要多次数据访问和大量的内存计算、网络传输,性能较低。

写扩散(推模式)

写扩散是一种基于推送的策略,主要用于将用户关注的内容推送给用户。在写扩散中,系统会将用户关注的内容直接推送到用户的接收队列中。以下是写扩散的实现方式和特点:

  1. 发布内容:在写扩散中,用户发布内容的流程相对复杂。用户需要将自己发布的内容添加到自己的发布队列中,并查询所有关注自己的用户,将内容添加到这些用户的接收队列中。

  2. 关注/取关:在写扩散中,添加关注和取消关注的流程也相对复杂。添加关注需要在关注列表中添加对应用户,并在被关注用户的粉丝列表中添加自己。取消关注需要从关注列表和粉丝列表中删除对应用户,并从接收队列中删除对应用户发布的内容。

  3. 个人主页feed流:在写扩散中,获取个人主页的过程变得异常简单。用户只需直接返回自己接收队列中的内容即可。

写扩散的优点:

  • 消除了读扩散中的IO集中点,每个用户只需读取自己的数据,减少了锁竞争。
  • 获取个人主页feed流列表的流程简单,速度快。
  • 不需要进行大量的内存计算和网络传输,性能较高。

写扩散的缺点:

  • 写扩散需要将内容推送到多个用户的接收队列中,增加了系统的负载。

综上所述,读扩散和写扩散是信息推流系统中常用的两种策略,各自具有不同的实现方式和特点。根据具体的业务需求和系统规模,选择合适的策略可以提高系统的性能和用户体验。


Learn more:

  1. 读扩散,写扩散,终于终于讲清楚了!-腾讯云开发者社区-腾讯云
  2. IM开发技术学习:揭秘微信朋友圈这种信息推流背后的系统设计 - 知乎
  3. 简单理解feed、读扩散和写扩散

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!