写点什么

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

  • 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:493767
用户头像

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

关注

评论 1 条评论

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

实现 AI 大语言模型的关键在于超高性能存储能力

焱融科技

提升测试质量的四个关键特征

老张

质量保障 测试质量

目前包头市等保测评企业有几家?2家还是3家?

行云管家

等保 等级保护 等保测评 等保合规

[Qt开发]一口气搞懂串口通信

EquatorCoco

通信 qt

工业物联网SCADA软件推荐

2D3D前端可视化开发

工业物联网 工业控制系统 web组态软件 HMI SCADA软件

架构实战营(一)

架构实战营

CVPR2023|小红书提出 OvarNet 模型:开集预测的新SOTA,“万物识别”有了新玩法

小红书技术REDtech

深度学习 算法 小红书

浅析 Jetty 中的线程优化思路

vivo互联网技术

jetty EatWhatYouKill 线程策略

Flutter性能优化的一些路径思考

Onegun

flutter 移动开发

New Arrival: QCN9074 Dual Band/Tri-band 4X4 WIFI6 Network Card DR9074 (#QCN9074)

wallyslilly

QCN9074

IoT场景时序数据库性能对比报告出炉,TDengine 远超 InfluxDB & Timescal

电子信息发烧客

入门指南:使用Spring Boot构建Java应用程序

2756

入门学习

码控算法

qh12346

强化学习从基础到进阶-案例与实践[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动 A3C算法

最佳实践|亚马逊可持续发展的架构模型

亚马逊云科技 (Amazon Web Services)

JavaScript

华为开发者大会—开发者的一站式代码检查利器:华为云代码检查CodeArts Check

华为云PaaS服务小智

云计算 华为云 华为开发者大会2023

解决QT QGraphicsView提升到QChartView报错的问题

芯动大师

直播程序源码技术分享主播邀请上麦功能

山东布谷科技

软件开发 程序 源码搭建 直播源码

3dMax 应该用哪个渲染器?Vray、Corona、Arnold?

Finovy Cloud

NFTScan 与 Sender Wallet 达成合作伙伴,双方在多链 NFT 数据方面展开合作!

NFT Research

NFT\

es笔记一之es安装与介绍

Hunter熊

elasticsearch Kibana 安装Kibana

Go语言中的init函数: 特点、用途和注意事项

EquatorCoco

编程 Go 语言

李彦宏:AI原生应用比大模型数量更重要

飞桨PaddlePaddle

人工智能 百度 paddle 大模型

强化学习从基础到进阶-常见问题和面试必知必答[6]:演员-评论员算法(advantage actor-critic,A2C),异步A2C、与生成对抗网络的联系等详解

汀丶人工智能

人工智能 深度学习 强化学习 6 月 优质更文活动

什么是区块链?

TiAmo

区块链 去中心化 6 月 优质更文活动

复旦发布云上最大科研智算平台

新云力量

智能 计算 复旦 科研智算平台

一图看懂华为云CodeArts Board5大特性,带你玩转看板服务

华为云PaaS服务小智

云计算 数据可视化 华为云 企业研发管理 数据看板

搜索语义模型的大规模量化实践

百度Geek说

paddle NLP 大模型 企业号 6 月 PK 榜 6 月 优质更文活动 INT8

AI与企业信息安全的应用、技术以及前景

行云管家

AI 网络安全 信息安全 企业信息

STC89C52+DHT20设计的环境温湿度检测仪

DS小龙哥

6 月 优质更文活动

沐曦与百度飞桨完成兼容性测试,助力计算机视觉应用发展

飞桨PaddlePaddle

人工智能 百度 paddle

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