架構頭條
作者 | theinsaneApp.com
譯者 | 張健欣
策劃 | 萬佳
今天,我們會討論一些不同的東西,例如 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