AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

国外知名互联网公司的系统设计和推荐算法汇总

  • 2021-07-08
  • 本文字数:3744 字

    阅读完需:约 12 分钟

国外知名互联网公司的系统设计和推荐算法汇总

今天,我们会讨论一些不同的东西,例如 Spotify、YouTube、Signal Messenger、Amazon 等科技巨头的推荐算法,以及像 Uber、Twitter、Netflix、Airbnb、Dropbox、Google Docs、Zoom 之类企业的系统设计。


说明:本文基于我的个人研究。有些东西可能不是 100%准确,但我已经尽力保证它的准确性、信息和价值。

Uber 系统设计



图片来源:Geeks for Geeks


Uber 的技术可能看起来很简单,但当一个用户从应用程序发起一次乘车请求,一名司机到达将他们送往目的地的场景,这背后其实并不简单。


Uber 的基础设施由成千上万个服务和数兆字节的数据组成,来支持平台上的每次旅行。


这个系统主要是用 Python 编写的,使用 SQLAIchemy 作为数据库的 ORM 层。实际的架构对于少数城市中相对少量的旅行来说是不错的。


这个公司的后端现在不仅仅被设计来处理出租车,它还可以处理食品外卖、货物快递等等。


了解更多:https://medium.com/@narengowda/uber-system-design-8b2bc95e2cfe

YouTube 视频推荐算法



图片来源:KDNuggets


当用户看 YouTube 上的视频时,会在设备下方或右侧抛出一个推荐清单,用户可能会按照一定的顺序喜欢这些视频。


本文所描述的模型着重于两个主要目标。采用的广度+深度模型架构,结合了广度模型线性模型(记忆)的功能以及深度神经学习(泛化)的功能。广度+深度模型将为每个定义(参与度和满意度)的目标生成预测。


了解更多:https://www.kdnuggets.com/2019/10/youtube-recommending-next-video.html

Twitter 系统设计


图片来源:code karle


通过视频解说来获取更多细节:https://youtu.be/EkudBdvbDhs

Spotify 音乐推荐算法



图片来源:Harvard Business School


Spotify 是如何使用机器学习来推荐音乐的呢?


该公司同时使用了三种推荐模型和其它技术。哈佛商学院描述的这三种模型是:


  • CF 又名协作过滤(Collaborative Filtering)模型: 分析你的行为并与其它用户的行为进行比较

  • NLP 又名自然语言处理模型(Natural Language Processing Models)- 扫描互联网并分析有关 Spotify 的目录的文本

  • 音频分析(Audio Analysis)模型: 分析原始音频文件


了解更多:https://digital.hbs.edu/platform-rctom/submission/discover-weekly-how-spotify-is-changing-the-way-we-consume-music/

Netflix 系统设计



图片来源:Medium / Narendra L


Netflix 运行在两种云上:AWS 和 Open Connect。这两种云必须毫无差错地协同工作,从而提供无休止的让用户满意的视频。


三个主要的组件扮演了主要角色:CDN、后端和客户端。


任何不涉及视频服务的事务都在 AWS 中处理。在你点击播放之后发生的任何事都由 Open Connect 处理。Open Connect 是 Netflix 的定制全球化内容交付网络(CDN)。


了解更多:https://medium.com/@narengowda/netflix-system-design-dbec30fede8d

Netflix 针对个性化和推荐的系统架构


图片来源:Netflix Tech Blog


Netflix 使用了论文中提到的各种排名模型,但是没有具体说明每种模型的架构。下面是对它们的总结:


个性化视频排名(Personalised Video Ranking, PVR) — 这个算法是一种通用算法,通常根据特定标准(例如暴力电视节目、美国电视节目、浪漫爱情等)过滤目录,并结合用户特性和流行度等辅助特性。


Top-N 视频排名 — 与 PVR 类似,只是它只查看排名的最前面和整个目录。它用一些指标(即查看目录排名的头部,例如 MAP@K、 NDCG)进行优化。


了解更多:https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Fnetflixtechblog.com%2Fsystem-architectures-for-personalization-and-recommendation-e081aa94b5d8

Flipkart / Amazon System Design



图片来源:code karle


设计类似 Amazon 或 flipkart 这样的平台时的功能要求:


  • 应该提供一个用交货时间(delivery ETA)进行搜索的功能

  • 应该提供一个所有产品的目录

  • 应该提供购物车和愿望清单功能

  • 应该顺畅处理支付流程

  • 应该提供一个显示所有之前订单的页面

  • 还有许多其它功能


非功能性要求:


  • 低延迟

  • 高可用性

  • 高一致性


通过视频解释查看更多细节:https://youtu.be/EpASu_1dUdE

Signal 系统架构



图片来源:scc


Signal 是一个用于 Android 和 iOS 的端到端加密通信应用程序,有点儿像 WhatsApp,但是是开源的。它使用 TCP/IP(互联网)来发送一对一和群组消息,包括文本、文件、语音信息、图片和视频,以及一对一语音和视频通话。使用标准蜂窝移动电话号码进行用户识别。


了解更多:https://sorincocorada.ro/signal-messanger-architecture/)

Book My Show 系统设计


图片来源:GFG


在这篇文章中,我们将了解“如何设计一个类似 BookMyShow 的在线订票系统”。


BookMyShow 基于微服务架构构建。我们可以单独查看各个组件。在我们开始设计一个在线订票系统之前,可以先看看 Book My Show 使用的服务和技术。


BookMyShow 使用的技术:


  • 用户界面:ReactJS & BootStrapJS

  • 服务器语言和框架: Java、 Spring Boot、 Swagger、 Hibernate

  • 安全: Spring Security

  • 数据库: MySQL

  • 服务器: Tomcat

  • 缓存: 内存缓存 Hazelcast

  • 通知: RabbitMQ,一个用于推送通知的分布式消息队列

  • 支付 API:流行的支付 API 有 Paypal、Stripe 和 Square

  • 部署: Docker & Ansible

  • 代码仓库: Git

  • 日志: Log4J

  • 日志管理: Logstash、 ELK Stack

  • 负载均衡: Nginx


了解更多:https://www.geeksforgeeks.org/design-bookmyshow-a-system-design-interview-question/

Airbnb 系统设计



图片来源:code karle


像 Airbnb、Booking.com 和 OYO 这样的度假租赁巨头,是如何提供这样顺畅的从信息展示,到预订再到支付的流程的?从头到尾没有一点问题!可以通过视频看看他们的系统设计、技术、工作等方方面面。


通过视频了解更多细节:https://youtu.be/YyOXt2MEkv4

TikTok's 机器学习支持的推荐引擎



图片来源:TDS


TikTok 的推荐系统设计的原型是以用户为中心的设计。简单来说是,TikTok 只会推荐你喜爱的内容,从冷启动调整到对活跃用户的明确推荐。


TikTok 从不向公众或技术社区透露其核心算法。但是,基于该公司发布的零碎信息,以及极客们使用逆向工程技术发现的线索,提出了这个推荐流程。


我们可以将这个工作流拆分成几个步骤


步骤 0: 针对用户生成内容(User Generated Content, UGC)的双重审计系统


步骤 1: 冷启动


步骤 2: 基于权重的指标


步骤 3: 用户画像投射


步骤 4: 时尚潮流池


其它步骤: 延迟点火(Delayed Ignition)


了解更多:https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Ftowardsdatascience.com%2Fwhy-tiktok-made-its-user-so-obsessive-the-ai-algorithm-that-got-you-hooked-7895bb1ab423

Google Maps 系统设计


图片来源:code karle


设计一个类似谷歌地图系统的功能要求:


  • 能够识别道路和路线

  • 在两点之间行驶时得出距离和预计到达时间(ETA)

  • 应该是一个可插拔的模型,以防我们想要建立在那些良好的需求


非功能性需求


  • 高可用性 - 这个系统永远不会宕机。我们不希望我们的用户中途迷失。

  • 良好的准确度 - 我们预估的预计到达时间应该与实际旅行时间之间偏差不会太大。

  • 迅速响应 - 响应应该在几秒内就绪。

  • 可伸缩性 - 像谷歌地图这样的系统每秒会收到巨量请求,因此它的设计方式应该能够处理这些请求,以及请求数量的任何激增。


通过视频查看更多细节:https://youtu.be/jk3yvVfNvds

Amazon 产品推荐算法



图片来源:AI with python


这个算法包含 5 个主要概念:


  • 多视图——显示多个组件,所有项目都显示在这里

  • 用户视图——显示会话中当前用户的特定信息

  • 产品视图——显示当前产品的详细信息

  • 推荐视图——显示基于当前产品的推荐产品

  • 数据视图——可视化推荐算法所使用的数据结构

Dropbox 系统设计

图片来源:Medium / Narendra L


你有没有想过这些服务是如何在内部提供文件上传、更新、删除和下载功能的?


  • 文件版本管理

  • 文件和目录同步


下面是这些系统如何在底层工作的高级解释:


视频解释:https://youtu.be/U0xTu6E2CT8

Google Docs 系统设计



图片来源:Medium Narendra L


Google Docs 系统设计分为 2 个视频。在第一个视频中,你将了解操作转换和差别同步。在第二个视频中,你会了解使用微服务架构和 API 网关的系统组件。


视频解释 1:https://youtu.be/2auwirNBvGg


视频解释:https://youtu.be/U2lVmSlDJhg

Zoom 系统设计



图片来源:code karle


到目前为止,谁还没使用过 Zoom、Microsoft teams、WebEx 或某种视频会议平台呢!现在甚至在 Zoom 上上课。如果你正在阅读本文,我确定你会对它是如何工作的感兴趣。因此,通过访问下面给出的视频链接,我确信在视频结束时,你能够成功设计一个视频会议系统。


视频解释:https://youtu.be/G32ThJakeHk

Yelp 系统设计



图片来源:Medium / Narendra L


让我们设计任何基于位置的服务,类似 Yelp 或 Trip Advisor,用户可以搜索附近的旅游景点、餐馆、剧院或超市等,用户还能够登录,添加或浏览评论、图片和景点评论。我们将以 Yelp 为例来了解相关的一切。


视频解释:https://youtu.be/TCP5iPy8xqo

Cricbuzz 系统设计


图片来源:Medium / Narendra L


视频解释:https://youtu.be/exSwQtMxGd4

股票交易系统设计



图片来源:Tech Dummies


系统设计的目标:


  • 每种股票每秒数千个订单匹配(作为参考,纳斯达克每秒处理超过 60k 条消息)

  • 高可用性、可伸缩性、可靠性和持久性

  • SLA/延迟

  • 允许 1 个数据中心故障

  • 为特定地址位置的用户服务将降低延迟


视频解释:https://youtu.be/dUMWMZmMsVE


原文链接:


https://www.theinsaneapp.com/2021/03/system-design-and-recommendation-algorithms.html

2021-07-08 15:493744
用户头像

发布了 165 篇内容, 共 76.4 次阅读, 收获喜欢 343 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

模块五 作业

夏日

架构实战营

高级软件工程师必备的五大技能

架构精进之路

6月日更 软素质

模块5作业

杨彬

#架构实战营

模块5 设计微博系统中”微博评论“的高性能高可用计算架构

Chris Cheng

架构实战营

不惧面试:HTTP协议(一)基础扫盲

悟空聊架构

面试 HTTP post GET 6月日更

【Vue2.x 源码学习】第五篇 - 数组的劫持

Brave

源码 vue2 6月日更

区块链+印章,区块链技术的长期潜力正在释放

CECBC

Kubernetes手记(2)- 核心组件/附件

雪雷

k8s 6月日更

音频和视频流最佳选择?SRT协议解析及报文识别

明儿

音视频 协议 流媒体开发

【云原生AI】Fluid + JindoFS 助力微博海量小文件模型训练速度提升 18 倍

阿里巴巴云原生

可落地的积极心态

蛋先生DX

心态 6月日更

【译】JavaScript 代码整洁之道-函数篇

KooFE

JavaScript 大前端 函数 6月日更 整洁代码

设计微博系统中”微博评论“的高性能高可用计算架构

方堃

Hadoop实战篇(1)

进击的梦清

大数据 hadoop Linux

15:需求沟通的灵魂拷问:人与人之间的信任呢?

punkboy

需求管理 需求 需求落地 信任 信任机制

2017-2020(4周年)读书年度总结及书单

punkboy

程序员 书单 书单推荐 推荐书单

17:为什么说海澜之家是“男人的货仓”和“服装的搬运工”?

punkboy

品牌 电商 电商平台 服装行业 男友力

公司战略:要不要多元化发展?

石云升

创业 职场经验 6月日更

Go并发编程-channel多路复用

Rayjun

Go 语言 select

网络攻防学习笔记 Day36

穿过生命散发芬芳

网络攻防 6月日更

Python位运算符——详解

在即

6月日更

(内含福利)不想成为咸鱼,我们怎样找到自己的未来之路呢?

刘华Kenneth

招聘 职场成长 云技术

Golang channel 通道

escray

学习 极客时间 Go 语言 6月日更

Java 并发编程—— CountDownLatch 应用

Antway

6月日更

技术管理简单说

蛋先生DX

技术管理 6月日更

16:阿里、京东、美团、电通等电商行业营销模型汇总

punkboy

营销 模型 市场营销 营销数字化 电商营销

Pandas之:Pandas简洁教程

程序那些事

Python 大数据 数据分析 pandas 程序那些事

MySQL基础之三:条件查询

打工人!

MySQL 6月日更

权限与认证:基于JWT的授权实现

程序员架构进阶

架构 JWT 认证授权 28天写作 6月日更

标识符与保留字(即关键字)

在即

6月日更

你知道 Redis 可以实现延迟队列吗?

xcbeyond

队列 延迟队列 6月日更

国外知名互联网公司的系统设计和推荐算法汇总_架构_Geek_170b28_InfoQ精选文章