架構(gòu)頭條
作者 | theinsaneApp.com
譯者 | 張健欣
策劃 | 萬佳
今天,我們會討論一些不同的東西,例如 Spotify、YouTube、Signal Messenger、Amazon 等科技巨頭的推薦算法,以及像 Uber、Twitter、Netflix、Airbnb、Dropbox、google Docs、Zoom 之類企業(yè)的系統(tǒng)設(shè)計(jì)。
說明:本文基于我的個人研究。有些東西可能不是 100% 準(zhǔn)確,但我已經(jīng)盡力保證它的準(zhǔn)確性、信息和價值。
Uber 系統(tǒng)設(shè)計(jì)
圖片來源:Geeks for Geeks
Uber 的技術(shù)可能看起來很簡單,但當(dāng)一個用戶從應(yīng)用程序發(fā)起一次乘車請求,一名司機(jī)到達(dá)將他們送往目的地的場景,這背后其實(shí)并不簡單。
Uber 的基礎(chǔ)設(shè)施由成千上萬個服務(wù)和數(shù)兆字節(jié)的數(shù)據(jù)組成,來支持平臺上的每次旅行。
這個系統(tǒng)主要是用 Python 編寫的,使用 SQLAIchemy 作為數(shù)據(jù)庫的 ORM 層。實(shí)際的架構(gòu)對于少數(shù)城市中相對少量的旅行來說是不錯的。
這個公司的后端現(xiàn)在不僅僅被設(shè)計(jì)來處理出租車,它還可以處理食品外賣、貨物快遞等等。
了解更多:https://medium.com/@
narengowda/uber-system-design-8b2bc95e2cfe
YouTube 視頻推薦算法
圖片來源:KDNuggets
當(dāng)用戶看 YouTube 上的視頻時,會在設(shè)備下方或右側(cè)拋出一個推薦清單,用戶可能會按照一定的順序喜歡這些視頻。
本文所描述的模型著重于兩個主要目標(biāo)。采用的廣度 + 深度模型架構(gòu),結(jié)合了廣度模型線性模型(記憶)的功能以及深度神經(jīng)學(xué)習(xí)(泛化)的功能。廣度 + 深度模型將為每個定義(參與度和滿意度)的目標(biāo)生成預(yù)測。
了解更多:
https://www.kdnuggets.com/2019/10/youtube-recommending-next-video.html
Twitter 系統(tǒng)設(shè)計(jì)
圖片來源:code karle
通過視頻解說來獲取更多細(xì)節(jié):
https://youtu.be/EkudBdvbDhs
Spotify 音樂推薦算法
圖片來源:Harvard Business School
Spotify 是如何使用機(jī)器學(xué)習(xí)來推薦音樂的呢?
該公司同時使用了三種推薦模型和其它技術(shù)。哈佛商學(xué)院描述的這三種模型是:
- CF 又名協(xié)作過濾(Collaborative Filtering)模型: 分析你的行為并與其它用戶的行為進(jìn)行比較
- NLP 又名自然語言處理模型(Natural Language Processing Models)- 掃描互聯(lián)網(wǎng)并分析有關(guān) Spotify 的目錄的文本
- 音頻分析(Audio Analysis)模型: 分析原始音頻文件
了解更多:
https://digital.hbs.edu/platform-rctom/submission/discover-weekly-how-spotify-is-changing-the-way-we-consume-music/
Netflix 系統(tǒng)設(shè)計(jì)
圖片來源:Medium / Narendra L
Netflix 運(yùn)行在兩種云上:AWS 和 Open Connect。這兩種云必須毫無差錯地協(xié)同工作,從而提供無休止的讓用戶滿意的視頻。
三個主要的組件扮演了主要角色:CDN、后端和客戶端。
任何不涉及視頻服務(wù)的事務(wù)都在 AWS 中處理。在你點(diǎn)擊播放之后發(fā)生的任何事都由 Open Connect 處理。Open Connect 是 Netflix 的定制全球化內(nèi)容交付網(wǎng)絡(luò)(CDN)。
了解更多:https://medium.com/@
narengowda/netflix-system-design-dbec30fede8d
Netflix 針對個性化和推薦的系統(tǒng)架構(gòu)
圖片來源:Netflix Tech Blog
Netflix 使用了論文中提到的各種排名模型,但是沒有具體說明每種模型的架構(gòu)。下面是對它們的總結(jié):
個性化視頻排名(Personalised Video Ranking, PVR) — 這個算法是一種通用算法,通常根據(jù)特定標(biāo)準(zhǔn)(例如暴力電視節(jié)目、美國電視節(jié)目、浪漫愛情等)過濾目錄,并結(jié)合用戶特性和流行度等輔助特性。
Top-N 視頻排名 — 與 PVR 類似,只是它只查看排名的最前面和整個目錄。它用一些指標(biāo)(即查看目錄排名的頭部,例如 MAP@K、 NDCG)進(jìn)行優(yōu)化。
了解更多:
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
設(shè)計(jì)類似 Amazon 或 flipkart 這樣的平臺時的功能要求:
- 應(yīng)該提供一個用交貨時間(delivery ETA)進(jìn)行搜索的功能
- 應(yīng)該提供一個所有產(chǎn)品的目錄
- 應(yīng)該提供購物車和愿望清單功能
- 應(yīng)該順暢處理支付流程
- 應(yīng)該提供一個顯示所有之前訂單的頁面
- 還有許多其它功能
非功能性要求:
- 低延遲
- 高可用性
- 高一致性
通過視頻解釋查看更多細(xì)節(jié):
https://youtu.be/EpASu_1dUdE
Signal 系統(tǒng)架構(gòu)
圖片來源:scc
Signal 是一個用于 Android 和 IOS 的端到端加密通信應(yīng)用程序,有點(diǎn)兒像 WhatsApp,但是是開源的。它使用 TCP/IP(互聯(lián)網(wǎng))來發(fā)送一對一和群組消息,包括文本、文件、語音信息、圖片和視頻,以及一對一語音和視頻通話。使用標(biāo)準(zhǔn)蜂窩移動電話號碼進(jìn)行用戶識別。
了解更多:
https://sorincocorada.ro/signal-messanger-architecture/)
Book My Show 系統(tǒng)設(shè)計(jì)
圖片來源:GFG
在這篇文章中,我們將了解“如何設(shè)計(jì)一個類似 BookMyShow 的在線訂票系統(tǒng)”。
BookMyShow 基于微服務(wù)架構(gòu)構(gòu)建。我們可以單獨(dú)查看各個組件。在我們開始設(shè)計(jì)一個在線訂票系統(tǒng)之前,可以先看看 Book My Show 使用的服務(wù)和技術(shù)。
BookMyShow 使用的技術(shù):
- 用戶界面:ReactJS & BootStrapJS
- 服務(wù)器語言和框架: JAVA、 Spring Boot、 Swagger、 Hibernate
- 安全: Spring Security
- 數(shù)據(jù)庫: MySQL
- 服務(wù)器: Tomcat
- 緩存: 內(nèi)存緩存 Hazelcast
- 通知: RabbitMQ,一個用于推送通知的分布式消息隊(duì)列
- 支付 API:流行的支付 API 有 Paypal、Stripe 和 Square
- 部署: Docker & Ansible
- 代碼倉庫: Git
- 日志: Log4J
- 日志管理: Logstash、 ELK Stack
- 負(fù)載均衡: Nginx
了解更多:
https://www.geeksforgeeks.org/design-bookmyshow-a-system-design-interview-question/
Airbnb 系統(tǒng)設(shè)計(jì)
圖片來源:code karle
像 Airbnb、Booking.com 和 OYO 這樣的度假租賃巨頭,是如何提供這樣順暢的從信息展示,到預(yù)訂再到支付的流程的?從頭到尾沒有一點(diǎn)問題!可以通過視頻看看他們的系統(tǒng)設(shè)計(jì)、技術(shù)、工作等方方面面。
通過視頻了解更多細(xì)節(jié):
https://youtu.be/YyOXt2MEkv4
TikTok's 機(jī)器學(xué)習(xí)支持的推薦引擎
圖片來源:TDS
TikTok 的推薦系統(tǒng)設(shè)計(jì)的原型是以用戶為中心的設(shè)計(jì)。簡單來說是,TikTok 只會推薦你喜愛的內(nèi)容,從冷啟動調(diào)整到對活躍用戶的明確推薦。
TikTok 從不向公眾或技術(shù)社區(qū)透露其核心算法。但是,基于該公司發(fā)布的零碎信息,以及極客們使用逆向工程技術(shù)發(fā)現(xiàn)的線索,提出了這個推薦流程。
我們可以將這個工作流拆分成幾個步驟
步驟 0: 針對用戶生成內(nèi)容(User Generated Content, UGC)的雙重審計(jì)系統(tǒng)
步驟 1: 冷啟動
步驟 2: 基于權(quán)重的指標(biāo)
步驟 3: 用戶畫像投射
步驟 4: 時尚潮流池
其它步驟: 延遲點(diǎn)火(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 系統(tǒng)設(shè)計(jì)
圖片來源:code karle
設(shè)計(jì)一個類似谷歌地圖系統(tǒng)的功能要求:
- 能夠識別道路和路線
- 在兩點(diǎn)之間行駛時得出距離和預(yù)計(jì)到達(dá)時間(ETA)
- 應(yīng)該是一個可插拔的模型,以防我們想要建立在那些良好的需求
非功能性需求
- 高可用性 - 這個系統(tǒng)永遠(yuǎn)不會宕機(jī)。我們不希望我們的用戶中途迷失。
- 良好的準(zhǔn)確度 - 我們預(yù)估的預(yù)計(jì)到達(dá)時間應(yīng)該與實(shí)際旅行時間之間偏差不會太大。
- 迅速響應(yīng) - 響應(yīng)應(yīng)該在幾秒內(nèi)就緒。
- 可伸縮性 - 像谷歌地圖這樣的系統(tǒng)每秒會收到巨量請求,因此它的設(shè)計(jì)方式應(yīng)該能夠處理這些請求,以及請求數(shù)量的任何激增。
通過視頻查看更多細(xì)節(jié):
https://youtu.be/jk3yvVfNvds
Amazon 產(chǎn)品推薦算法
圖片來源:AI with python
這個算法包含 5 個主要概念:
- 多視圖——顯示多個組件,所有項(xiàng)目都顯示在這里
- 用戶視圖——顯示會話中當(dāng)前用戶的特定信息
- 產(chǎn)品視圖——顯示當(dāng)前產(chǎn)品的詳細(xì)信息
- 推薦視圖——顯示基于當(dāng)前產(chǎn)品的推薦產(chǎn)品
- 數(shù)據(jù)視圖——可視化推薦算法所使用的數(shù)據(jù)結(jié)構(gòu)
Dropbox 系統(tǒng)設(shè)計(jì)
圖片來源:Medium / Narendra L
你有沒有想過這些服務(wù)是如何在內(nèi)部提供文件上傳、更新、刪除和下載功能的?
- 文件版本管理
- 文件和目錄同步
下面是這些系統(tǒng)如何在底層工作的高級解釋:
視頻解釋:
https://youtu.be/U0xTu6E2CT8
Google Docs 系統(tǒng)設(shè)計(jì)
圖片來源:Medium Narendra L
Google Docs 系統(tǒng)設(shè)計(jì)分為 2 個視頻。在第一個視頻中,你將了解操作轉(zhuǎn)換和差別同步。在第二個視頻中,你會了解使用微服務(wù)架構(gòu)和 API 網(wǎng)關(guān)的系統(tǒng)組件。
視頻解釋 1:
https://youtu.be/2auwirNBvGg
視頻解釋:
https://youtu.be/U2lVmSlDJhg
Zoom 系統(tǒng)設(shè)計(jì)
圖片來源:code karle
到目前為止,誰還沒使用過 Zoom、Microsoft teams、WebEx 或某種視頻會議平臺呢!現(xiàn)在甚至在 Zoom 上上課。如果你正在閱讀本文,我確定你會對它是如何工作的感興趣。因此,通過訪問下面給出的視頻鏈接,我確信在視頻結(jié)束時,你能夠成功設(shè)計(jì)一個視頻會議系統(tǒng)。
視頻解釋:
https://youtu.be/G32ThJakeHk
Yelp 系統(tǒng)設(shè)計(jì)
圖片來源:Medium / Narendra L
讓我們設(shè)計(jì)任何基于位置的服務(wù),類似 Yelp 或 Trip Advisor,用戶可以搜索附近的旅游景點(diǎn)、餐館、劇院或超市等,用戶還能夠登錄,添加或?yàn)g覽評論、圖片和景點(diǎn)評論。我們將以 Yelp 為例來了解相關(guān)的一切。
視頻解釋:
https://youtu.be/TCP5iPy8xqo
Cricbuzz 系統(tǒng)設(shè)計(jì)
圖片來源:Medium / Narendra L
視頻解釋:
https://youtu.be/exSwQtMxGd4
股票交易系統(tǒng)設(shè)計(jì)
圖片來源:Tech Dummies
系統(tǒng)設(shè)計(jì)的目標(biāo):
- 每種股票每秒數(shù)千個訂單匹配(作為參考,納斯達(dá)克每秒處理超過 60k 條消息)
- 高可用性、可伸縮性、可靠性和持久性
- SLA/ 延遲
- 允許 1 個數(shù)據(jù)中心故障
- 為特定地址位置的用戶服務(wù)將降低延遲
視頻解釋:
https://youtu.be/dUMWMZmMsVE
原文鏈接:
https://www.theinsaneapp.com/2021/03/system-design-and-recommendation-algorithms.html






