内容型产品架构:推模型还是拉模型?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 内容型产品架构:推模型还是拉模型?

无论是信息流、论坛、信箱,还是私聊、群聊、通知,推拉模型是内容型(包括:社交型)产品架构的核心。做出正确选择的关键在于对 产品形态 和系统组件 清晰的认识

模型

推模型(写扩散)

为每个内容消费者维护订阅列表,记录订阅的内容索引(一般为内容ID、类型、发表时间等索引数据)。每当内容生产者发布内容时,都会写入所有内容消费者的订阅列表。

  • 优点:读很轻。仅需要读取订阅列表即可。
  • 缺点:写很重。内容生产者每发布一条内容,会导致大量的写操作。

拉模型(读扩散)

为每个内容生产者维护一个内容列表,记录该用户所有生产的内容索引。

  • 优点:写很轻,节省空间。内容生产者每发布一条内容,仅需写入自己的内容列表。
  • 缺点:读很重,计算量大。假设内容消费者订阅了 1k 个生产者,则每次读取都需要从 1k 个生产者的内容列表拉取内容,以获得最新的 n 条内容。

产品形态

产品形态 粉丝数量上限 时间线 排序方式
微博 秒~分 时间
短视频推荐,例如 TikTok 秒~分 推荐
社交分享,例如 微信朋友圈 5000 秒级 时间
私信,例如 微信聊天 1 秒级 时间

所有该类型的产品,都有三个核心的角色:内容生产者、内容、内容消费者。后台系统要做的事情就是保障内容从内容生产者快速、可靠的分发给内容消费者。系统架构的难点在于:

  1. 将一条内容投递给一个消费者,还是投递给亿级的消费者(例如,微博、抖音)
  2. 投递数条内容,还是投递数亿条内容(例如,微信群聊)

产品形态不同,会放大一些技术方案的缺点,最终导致难以扩展或者成本难以接受。对于推模型

  • 订阅上限过高,则会放大写扩散的问题
  • 内容顺序不确定,写扩散同样毫无意义

存储系统

内容生成之后要首先通过写入落地到存储系统中,然后当内容消费者需要的时候再读取出来。不同的存储系统使用了不同的存储模型,首先看下常见的存储模型:

  • B-tree:读取友好,数据有序。LIRS算法,将缓冲池分为两级,数据首先进入第一级,如果数据在较短的时间内被访问两次或者以上,则成为热点数据进入第二级,每一级内部还是采用LRU替换算法。例如:关系型数据库
  • Bitcask:写入友好,数据无序。在内存中存储了主键和value的索引信息,磁盘文件中存储了主键和value的实际内容。需要定期执行合并(Compaction)操作以实现垃圾回收。Bitcask通过索引文件(hint file)来提高重建哈希表的速度。例如:Beandb
  • LSM:写入友好,数据有序。将对数据的修改增量保持在内存中,达到指定的大小限制后将这些修改操作批量写入磁盘,读取时需要合并磁盘中的历史数据和内存中最近的修改操作,需要定期执行合并(Compaction)操作以实现垃圾回收。例如:LevelDB、RocksDB、Bigtable

回过头再看推模型和拉模型,两者对读写性能的要求大不相同:

类型 推模型 拉模型 推-拉模型
读延迟 毫秒
读写比 1:99 99:1 50:50
系统要求 健壮的写入能力 健壮的读取能力 平衡的读写能力
常见系统 采用 LSM 架构的分布式 NoSQL,如 Bigtable 缓存系统如 Redis 和 Memcached 或 搜索系统(推荐场景) 两者结合
架构复杂度 简单 复杂 更复杂

除此之外,由于数据量快速增涨,内容存储还需要方便进行快速的扩容,而不同的存储系统对扩展性的支持存在较大的差异:

特点 分布式 NoSQL 关系数据库 (分库/分表)
扩展性 线性 需要重构
扩展速度 毫秒 N/A
常见系统 Table Store、Bigtable MySQL

总结

选择推模型还是拉模型,需要考虑产品特征,以及存储系统。放眼业界

微信朋友圈使用写扩散:

  • 产品层面:订阅者最多只有5000 (最多 5000 好友)
  • 存储层面:分布式 NoSQL QuorumKVPaxosStore

微博使用读扩散:

  • 产品层面:订阅数没有上限
  • 存储层面:Redis + MySQL

推特

最终,微信很多时间都花费到在了写扩散带来的成本问题;微博很多时间都在应对关系型数据库导致的扩展性问题,以及读扩散导致的”挂了又挂”。Twitter 很多时间都在“纠结”,前期使用写扩散,最后不得不结合读扩散,拥抱 Nosql 最终又回到 MySQL。

推拉模型对于互联网产品的影响至此,重要程度可见一斑

本文作者 : cyningsun

本文地址https://www.cyningsun.com/04-19-2021/content-products-push-or-pull.html

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


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
机器学习/深度学习 计算机视觉 iOS开发
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
31 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
|
3月前
|
机器学习/深度学习 自然语言处理 分布式计算
大规模语言模型与生成模型:技术原理、架构与应用
本文深入探讨了大规模语言模型(LLMs)和生成模型的技术原理、经典架构及应用。介绍了LLMs的关键特点,如海量数据训练、深层架构和自监督学习,以及常见模型如GPT、BERT和T5。同时,文章详细解析了生成模型的工作原理,包括自回归模型、自编码器和GANs,并讨论了这些模型在自然语言生成、机器翻译、对话系统和数据增强等领域的应用。最后,文章展望了未来的发展趋势,如模型压缩、跨模态生成和多语言多任务学习。
428 3
|
11天前
|
机器学习/深度学习 算法 文件存储
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
37 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
7天前
|
机器学习/深度学习 算法 文件存储
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
19 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
22天前
|
自然语言处理 算法 JavaScript
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架通过生成和评估两个步骤处理长文档,支持集中式和分散式两种策略。每个LLM独立生成文本摘要,集中式方法由单一LLM评估并选择最佳摘要,而分散式方法则由多个LLM共同评估,达成共识。论文提出两阶段流程:先分块摘要,再汇总生成最终摘要。实验结果显示,多LLM框架显著优于单LLM基准,性能提升最高达3倍,且仅需少量LLM和一轮生成评估即可获得显著效果。
56 10
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
|
11天前
|
机器学习/深度学习 计算机视觉 iOS开发
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构
52 12
|
1月前
|
机器学习/深度学习 编解码 vr&ar
NeurIPS 2024最佳论文,扩散模型的创新替代:基于多尺度预测的视觉自回归架构
本文详细解读NeurIPS 2024最佳论文《视觉自回归建模:基于下一尺度预测的可扩展图像生成》。该研究提出VAR模型,通过多尺度token图和VAR Transformer结构,实现高效、高质量的图像生成,解决了传统自回归模型在二维结构信息、泛化能力和计算效率上的局限。实验表明,VAR在图像质量和速度上超越现有扩散模型,并展示出良好的扩展性和零样本泛化能力。未来研究将聚焦于文本引导生成和视频生成等方向。
159 8
NeurIPS 2024最佳论文,扩散模型的创新替代:基于多尺度预测的视觉自回归架构
|
27天前
|
搜索推荐 架构师 数据挖掘
架构实操:画好一张业务模型图
本文以SDK设计的角度分析了如何构建一张属于SDK的各个业务的模型图。
|
4月前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
180 0
|
2月前
|
机器学习/深度学习 测试技术 定位技术
新扩散模型OmniGen一统图像生成,架构还高度简化、易用
近期,一篇题为“OmniGen: Unified Image Generation”的论文介绍了一种新型扩散模型OmniGen,旨在统一图像生成任务。OmniGen架构简洁,无需额外模块即可处理多种任务,如文本到图像生成、图像编辑等。该模型通过修正流优化,展现出与现有模型相当或更优的性能,尤其在图像编辑和视觉条件生成方面表现突出。OmniGen仅含3.8亿参数,却能有效处理复杂任务,简化工作流程。尽管如此,OmniGen仍存在对文本提示敏感、文本渲染能力有限等问题,未来研究将继续优化其架构与功能。
86 16

热门文章

最新文章