【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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

  • 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

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2021-07-08 15:493357
用户头像

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

关注

评论 1 条评论

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

极客时间架构实战营作业三

jjn0703

架构实战营

安全系列之:跨域资源共享CORS

程序那些事

Java HTTP CORS 程序那些事 跨域资源共享

【LeetCode】下一个更大元素 IJava题解

Albert

算法 LeetCode 9月日更

必示科技加入云计算标准和开源推进委员会,助力AIOps行业标准建设

BizSeer必示科技

AIOPS 智能运维 必示科技

linux之chroot命令

入门小站

Linux

B站就是一个神奇的地方

IT蜗壳-Tango

9月日更

中秋节快到了,确定不爬点月饼送岳母娘?

Regan Yue

爬虫 后端 Go 语言 引航计划 月饼

数据驱动的前提,数据质量

奔向架构师

数据治理 9月日更

Vue进阶(幺零九):npm install 遇到 -4048 错误的解决办法

No Silver Bullet

Vue 9月日更

Vue进阶(幺幺零):ant-design-vue

No Silver Bullet

Vue 9月日更

架构实战营模块7作业

技术是伙伴

架构实战营

CentOS 7 小技巧合集

耳东@Erdong

centos Centos 7 9月日更

如何将集合中的数据List,对比写入系统中

卢卡多多

集合 同步 9月日更

手撸二叉树之二叉搜索树中俩个节点之和

HelloWorld杰少

9月日更

vivo营销自动化技术解密|开篇

vivo互联网技术

Java 后端 软件架构设计 电商营销 平台搭建

Java基础知识查漏补缺

IT蜗壳-Tango

9月日更

WEB 剪切板操作navigator.clipboard的使用

devpoint

Blob 9月日更

Golang 接受 Interfaces, 返回 Structs

baiyutang

设计模式 Go 语言 构架 9月日更

Java Stream 源码深入解析

Zexho

Java 源码 stream jdk8

研发人员如何进行有效沟通

KJ Meng

研发管理 团队协作 技术沟通 沟通艺术 软素质

只需3步,快来用AI预测你爱的球队下一场能赢吗?

华为云开发者联盟

机器学习 AI 华为云 modelarts 球赛

架构实战营模块八作业

老猎人

架构实战营

在线JSON转Rust工具

入门小站

工具

深入理解rtmp(四)之协议实现分析

轻口味

android 音视频 RTMP 9月日更

redis主从实践(二)

风翱

redis 9月日更

架构训练营模块七作业(补)

老实人Honey

对话华为云专家,摆脱无意义“内卷”

华为云开发者联盟

面试 华为云 就业 内卷

自动化会提高测试覆盖率,那测试覆盖率是什么?

禅道项目管理

测试 自动化测试 测试覆盖率

我爸电脑上有个加密压缩包,我给用 Python 给解开了

梦想橡皮擦

9月日更

【Flutter 专题】48 图解 Android 原生集成 Flutter Module

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

如何应对老板项目?

石云升

项目管理 9月日更

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