# 每月將 Reddit 打造為 2.7 億頁面瀏覽量時汲取的 7 個教訓
> 原文: [http://highscalability.com/blog/2010/5/17/7-lessons-learned-while-building-reddit-to-270-million-page.html](http://highscalability.com/blog/2010/5/17/7-lessons-learned-while-building-reddit-to-270-million-page.html)
 [社交新聞網站](http://en.wikipedia.org/wiki/Steve_Huffman) [Reddit](http://www.reddit.com/) 的共同創始人史蒂夫·霍夫曼做了出色的[演示文稿](http://vimeo.com/10506751)。([幻燈片](http://www.slideshare.net/carsonified/steve-huffman-lessons-learned-while-at-redditcom)和[文字](http://carsonified.com/blog/dev/steve-huffman-on-lessons-learned-at-reddit/) ),學習他在將 Reddit 建立和發展到每月有 750 萬用戶,每月有 2.7 億頁面瀏覽以及 20 多個數據庫服務器的過程中吸取的教訓。
史蒂夫(Steve)說,很多課程確實很明顯,因此您可能在演示文稿中找不到很多全新的想法。 但是史蒂夫對他有一種真誠和真誠,這顯然是建立在經驗基礎上的,以至于您不禁要深思一下自己可能會做些什么。 如果史蒂夫不了解這些課程,我敢打賭其他人也不會。
有七個課程,每個課程都有自己的摘要部分:第一課:經常崩潰; 第二課:服務分離; 第 3 課:開放式架構; 第四課:保持無狀態; 第 5 課:內存緩存; 第 6 課:存儲冗余數據; 第 7 課:脫機工作。
到目前為止,其體系結構最令人驚訝的功能是在第六課中,其基本思想是:速度的關鍵是預先計算所有內容并將其緩存。 他們將預計算[旋鈕最多旋轉 11](http://en.wikipedia.org/wiki/Up_to_eleven) 。 聽起來您在 Reddit 上看到的幾乎所有內容都已被預先計算和緩存,無論它們需要創建多少版本。 例如,當有人提交鏈接時,他們會預先計算所有 15 種不同的排序順序(熱門,新,熱門,舊,本周等)以用于列表。 通常,開發人員會害怕走極端,浪費時間。 但是他們認為浪費前期總比拖延慢。 **浪費磁盤和內存比讓用戶等待**更好。 因此,如果您一直堅持下去,請轉到 11,這是一個很好的先例。
## 第一課:經常崩潰
本課的實質是:**自動重新啟動失敗的癌性服務**。
在 colo 中運行自己的系統的不利之處在于您需要進行維護。 服務中斷后,您必須立即修復,即使在凌晨 2 點。 這是您生活中持續不斷的緊張感。 您必須隨身攜帶一臺計算機,并且您知道,任何時候只要有人打來電話,那都是您必須解決的另一場災難。 它毀了你的生活。
緩解此問題的一種方法是重新啟動過程,該過程已經死亡或變得癌變。 Reddit 使用[監督](http://cr.yp.to/daemontools/supervise.html)自動重啟應用程序。 特殊的監視程序會殺死使用過多內存,使用過多 CPU 或無響應的進程。 不必擔心,只需重新啟動即可啟動系統。 當然,您必須閱讀日志并找到根本原因,但是在那之前,它會使您保持理智。
## 第 2 課:服務分離
本課的實質是:**將過程和數據分組在不同的盒子**上。
在一個盒子上做太多的工作會導致**在作業**之間進行大量上下文切換。 嘗試使每個數據庫服務器以相同的方式服務于相同類型的數據庫。 這意味著您的所有索引都將被緩存,并且不會被調入和調出。 保持所有內容盡可能相似。 不要使用 Python 線程。 他們很慢。 他們將所有內容放在單獨的多個流程中。 垃圾郵件,縮略圖等服務可查詢緩存。 它使您可以輕松地將它們放在不同的計算機上。 您已經解決了流程之間通信的問題。 一旦解決,它就可以保持體系結構整潔,并且易于擴展。
## 第 3 課:開放式架構
本課程的本質是:**不必擔心模式**。
他們過去經常花費大量時間來擔心數據庫,以保持一切正常和正常。 **您不必擔心數據庫**。 當您變大時,架構更新將非常緩慢。 將一列添加到一千萬行需要鎖定,因此不起作用。 他們使用復制進行備份和擴展。 模式更新和維護復制是一件痛苦的事情。 他們將不得不重新啟動復制,并且可能一天沒有備份。 部署是一件痛苦的事情,因為您必須協調新軟件和新數據庫的升級方式。
相反,他們保留了事物表和數據表。 Reddit 中的所有內容都是事物:用戶,鏈接,評論,subreddit,獎項等。事物具有共同的屬性,例如上下投票,類型和創建日期。 數據表具有三列:事物 ID,鍵,值。 每個屬性都有一行。 標題,URL,作者,垃圾郵件票等都有一行。當他們添加新功能時,他們不必再擔心數據庫了。 他們不必為新事物添加新表,也不必擔心升級。 更易于開發,部署,維護。 代價是您不能使用很棒的關系功能。 數據庫中沒有聯接,您必須手動執行一致性。 沒有聯接意味著將數據分發到不同的機器真的很容易。 您不必擔心外鍵正在執行聯接或如何拆分數據。 工作得很好。 使用關系數據庫的煩惱已經成為過去。
## 第 4 課:保持無狀態
目標是讓每個應用服務器處理每種類型的請求。 隨著他們的成長,他們擁有更多的計算機,因此他們不再依賴于應用內服務器緩存。 他們最初將狀態復制到每個應用程序服務器,這浪費了內存。 他們無法使用內存緩存,因為它們保留了大量的細粒度文件,這太慢了。 他們重寫使用內存緩存,并且不將任何狀態存儲在應用服務器中。 如果應用服務器發生故障,則很容易。 為了擴展,您可以添加更多應用服務器。
## 第 5 課:內存緩存
本課的實質是:**內存緩存所有內容**。
它們將所有內容存儲在內存緩存中:1.數據庫數據 2.會話數據 3.呈現的頁面 4.記憶(記住以前計算的結果)內部功能 5.限制用戶操作,爬網程序的速率 6.存儲預先計算的列表/頁面 7.全局 鎖定。
他們現在在 Memcachedb 中存儲的數據比 Postgres 多。 就像記憶快取一樣,但是會儲存在磁碟上。 非常快。 所有查詢均由同一控件生成,并緩存在 memcached 中。 更改密碼鏈接和關聯狀態被緩存 20 分鐘左右。 驗證碼也一樣。 用于他們不想永久存儲的鏈接。
他們在其框架中內置了備忘錄。 計算結果也將被緩存:標準化頁面,列表,所有內容。
使用 memcache +到期日期對所有內容進行速率限制。 保護您的系統免受攻擊的好方法。 沒有速率限制子系統,單個惡意用戶可能會破壞系統。 不好。 因此,對于用戶和爬網程序,他們將很多內容保留在內存緩存中。 如果用戶在一秒鐘內再次出現,他們將被彈跳。 普通用戶的點擊速度不太快,因此他們希望引起注意。 Google 搜尋器會以您希望的速度打擊您,因此,當速度變慢時,只需提高限速器的速度,即可使系統安靜下來而不會傷害用戶。
Reddit 上的所有內容都是清單:首頁,方框中的評論頁。 所有這些都預先計算并轉儲到緩存中。 當您獲得列表時,它將從緩存中獲取。 每個鏈接和每個注釋可能都存儲在 100 個不同的版本中。 例如,具有 30 秒鐘舊 2 票的鏈接是單獨呈現和緩存的。 播放 30 秒后會再次呈現。 等等。 HTML 的每個小片段都來自緩存,因此不會浪費 CPU 渲染時間。 當事情變慢時,只需添加更多緩存即可。
當弄亂他們脆弱的不一致數據庫時,他們使用內存緩存作為全局鎖。 為他們工作甚至認為這不是最好的方法。
## 第 6 課:存儲冗余數據
本課程的實質是:**速度的關鍵是預先計算所有內容并將其緩存**。
建立慢速網站的方法是擁有一個完全標準化的數據庫,按需收集所有內容,然后進行渲染。 它永遠需要每個單獨的請求。 因此,如果您有可能以幾種不同格式顯示的數據(例如首頁,收件箱或個人資料中的鏈接),請分別存儲所有這些表示形式。 因此,當有人來獲取數據時,該數據已經存在。
每個列表都有 15 個不同的排序順序(本周熱門,新,熱門,舊)。 當某人提交鏈接時,他們會重新計算該鏈接可能影響的所有可能的列表。 前期可能有點浪費,但前期浪費比緩慢要好。 浪費磁盤和內存比讓用戶等待更好。
## 第 7 課:脫機工作
本課程的本質是:**在后端上進行最少的工作,并告訴用戶您已完成**。
如果您需要做某事,請在用戶不在等您時進行。 放入隊列中。 當用戶對可更新列表的 Reddit 進行投票時,該用戶的 Karma 以及許多其他內容。 因此,一經表決,數據庫便會更新以知道發生了表決,然后將作業放入隊列中,該作業知道需要更新的 20 件事。 當用戶回來時,一切都已經為他們預緩存了。
他們離線進行工作:1.預計算清單 2.提取縮略圖 3.檢測作弊。 4.刪除垃圾郵件 5.計算獎勵 6.更新搜索索引。
用戶正在等待您時,無需執行**這些操作。 例如,隨著 Reddit 變得越來越大,現在作弊的動機越來越高,因此當人們投票檢測作弊時,他們在后端花費了大量時間。 但是它們確實是在后臺運行的,因此不會降低用戶體驗。 演示文稿中的體系結構圖為:**
藍色箭頭表示當請求進入時發生的情況。假設某人提交了鏈接或投票,它將轉到高速緩存,主數據庫和作業隊列。 然后他們返回給用戶。 然后其余的事件會離線發生,這些由粉紅色箭頭表示。 諸如 Spam,Precomputer 和 Thumnailer 之類的服務從隊列中讀取,進行工作并根據需要更新數據庫。 關鍵技術是 RabbitMQ。
## 相關文章
* [關于可擴展性的隊列相關文章](http://highscalability.com/blog/category/queue)
* [](http://highscalability.com/blog/category/queue)**[Reddit 于 2010 年 5 月發布的“服務器狀態”報告](http://blog.reddit.com/2010/05/reddits-may-2010-state-of-servers.html)**
對我而言,最有趣的部分是數據庫中糟糕的 EAV 解決方案。 不帶模式和模式驗證的所有內容都作為字符串。 這通常會導致維護和效率方面的一些可怕問題,但這一次它可以正常工作。 可能是因為該模型非常簡單,在其他許多情況下卻無法正常工作
很棒的文章! 絕對提供了一些非常新的性能思考方式。
“但是它們確實是在后臺運行的,因此不會降低用戶體驗”
“但是他們活著”
“現場直播”
好文章! 很好讀
對于那些喜歡數學的人來說,每月 2.7 億的頁面瀏覽量就是每秒 100 個頁面瀏覽量。 絕對不會出現需要 20 臺數據庫服務器的情況。
請謹慎選擇您的建議。 互聯網上很少有網站像 Reddit 一樣頻繁出現故障或性能不佳。
我總覺得這些家伙在后臺做些聰明的事。 感謝您告訴我更多有關我最喜歡的社交書簽網站的信息!
哦,我只是喜歡這種性能知識。
我們在設計架構以及隨后像 Reddit 一樣更新它們時也遇到了很多麻煩。 但是我必須同意 Simon 的觀點,Reddit 的解決方案在許多其他情況下都行不通。
我同意 Haugeland 先生的觀點,即必須擁有 20 臺數據庫服務器來處理負載似乎太過分了。 通過閱讀評論,我看來原始作者未能認識到真正的教訓。 這樣的設計通常是開發團隊不了解如何為底層數據庫進行設計和編碼的結果。 也許根據預期的使用情況和負載來選擇錯誤的基礎數據庫。
這個已經過期了。 reddit 遷移到 Cassandra。
http://www.reddit.com/r/programming/comments/bcqhi/reddits_now_running_on_cassandra/
記憶快取不見了
哇! 這是一項很好的工作!
換句話說,運行可伸縮網站不該做什么。 我鍵入此內容時,Reddit 尚未再次打開。
我是 Reddit 的粉絲,我希望它會改變其基礎設施以提供更多可用性。
MySQL(尤其是 MyISAM)給 RDBMSes 起了一個不好的名字。
我有一個以 Poststars 為后盾的應用程序,該應用程序以“星型模式”組織,有一個主事件表,我們平均每秒對其進行 200 次 INSERT 插入,例如高峰時為 400 ish,有 24 列,其中大多數是外鍵 動態增長的查詢表,我們在同一秒內結合在一起執行了十二打 INSERT / SELECT。 這些查詢表之一具有超過 2.13 億行。 向該表中添加另一列是即時的,并為應用程序帶來了零延遲。 這是因為 Postgres 將列視為元數據。
在 MySQL 中嘗試這樣做確實會“自殺”,而且絕對不是一種選擇,因為 MySQL 需要重建整個表。 我不確定你們使用的是哪個版本的 Postgres,但是我發現鎖定聲明令人驚訝。
如果您熱衷于使用 MySQL,那么請盡一切可能不使用 MyISAM 的方法,嘗試將所有基于文本的索引和搜索推遲到 Sphinx 之類。 并盡可能保留盡可能多的表。
實際上,“對所有內容進行預先計算”實際上是擴展應用程序的第一條規則。 他們只是把它帶到了大多數人無法接受的地方。
很棒的帖子! 我喜歡這種東西。
因此,您基本上將簡單的鍵值存儲入侵了 MySQL? 為什么不使用 Cassandra,couchdb,東京暴君,redis?
我想知道 Reddit 使用什么隊列解決方案,以及遷移到 Cassandra 后是否仍在使用它(我認為它仍然有用)
比較 Digg 和 Reddit 的加載時間,我想說 Digg 做得正確,而 Reddit 做錯了。
您是否真的復制了本文的編輯內容? 它充滿了尷尬的寫作,就像您在演示過程中起草并發布時一樣,沒有進行編輯。 第 4 課幾乎是難以理解的。
達克,我同意第 4 課不是很好。 我要做的是總結發言者的發言,使其更簡短,更直接地適用。 有時我不知道該怎么做,所以我只保留原理圖版本。有幾條襯里我認為不值得在一個點上闡述,但我還是留了一點 如果您真的有興趣,可以決定觀看視頻。
哦,瞧,又一家沒有實際客戶的網絡創業公司,因此他們不必擔心數據完整性,而且顯然無力聘請知道數據庫工作原理的人來決定適當的 RDBMS 設計是否起作用 首先,他們的問題顯然不適合于關系模型。 現在他們有 40 臺服務器從事 2 臺服務器的工作,應該給我們留下深刻的印象嗎? 伙計們,雇用 DBA 比重塑持久性存儲便宜得多。
開放模式部分使它看起來像是 NoSql 的理想候選者...
chris h:只有確實要添加列時,Postgres 中的 no-locking 選項才可用。 如果要更改列的數據類型,或將列移到其他表,會發生什么?
ChronicDB 聲稱將實時模式更改應用于 Postgres。
@WayneB-digg 也不正確。 他們有 200 臺服務器,現在處理的流量少于 reddit。
@John Haugeland:我完全同意你的看法。 這是一篇有關開發團隊如何找到經驗不足的解決方法的文章。
這是一篇很有幫助的文章。 感謝您分享所有這些很棒的技巧。 希望他們能對您有所幫助!
Reddit 太慢了……我想他們有一些新的挑戰和教訓要學習,因為在大多數情況下它似乎無法使用。
- LiveJournal 體系結構
- mixi.jp 體系結構
- 友誼建筑
- FeedBurner 體系結構
- GoogleTalk 架構
- ThemBid 架構
- 使用 Amazon 服務以 100 美元的價格構建無限可擴展的基礎架構
- TypePad 建筑
- 維基媒體架構
- Joost 網絡架構
- 亞馬遜建筑
- Fotolog 擴展成功的秘訣
- 普恩斯的教訓-早期
- 論文:Wikipedia 的站點內部,配置,代碼示例和管理問題
- 擴大早期創業規模
- Feedblendr 架構-使用 EC2 進行擴展
- Slashdot Architecture-互聯網的老人如何學會擴展
- Flickr 架構
- Tailrank 架構-了解如何在整個徽標范圍內跟蹤模因
- Ruby on Rails 如何在 550k 網頁瀏覽中幸存
- Mailinator 架構
- Rackspace 現在如何使用 MapReduce 和 Hadoop 查詢 TB 的數據
- Yandex 架構
- YouTube 架構
- Skype 計劃 PostgreSQL 擴展到 10 億用戶
- 易趣建筑
- FaceStat 的禍根與智慧贏得了勝利
- Flickr 的聯合會:每天進行數十億次查詢
- EVE 在線架構
- Notify.me 體系結構-同步性
- Google 架構
- 第二人生架構-網格
- MySpace 體系結構
- 擴展 Digg 和其他 Web 應用程序
- Digg 建筑
- 在 Amazon EC2 中部署大規模基礎架構的六個經驗教訓
- Wolfram | Alpha 建筑
- 為什么 Facebook,Digg 和 Twitter 很難擴展?
- 全球范圍擴展的 10 個 eBay 秘密
- BuddyPoke 如何使用 Google App Engine 在 Facebook 上擴展
- 《 FarmVille》如何擴展以每月收獲 7500 萬玩家
- Twitter 計劃分析 1000 億條推文
- MySpace 如何與 100 萬個并發用戶一起測試其實時站點
- FarmVille 如何擴展-后續
- Justin.tv 的實時視頻廣播架構
- 策略:緩存 404 在服務器時間上節省了洋蔥 66%
- Poppen.de 建筑
- MocoSpace Architecture-一個月有 30 億個移動頁面瀏覽量
- Sify.com 體系結構-每秒 3900 個請求的門戶
- 每月將 Reddit 打造為 2.7 億頁面瀏覽量時汲取的 7 個教訓
- Playfish 的社交游戲架構-每月有 5000 萬用戶并且不斷增長
- 擴展 BBC iPlayer 的 6 種策略
- Facebook 的新實時消息系統:HBase 每月可存儲 135 億條消息
- Pinboard.in Architecture-付費玩以保持系統小巧
- BankSimple 迷你架構-使用下一代工具鏈
- Riak 的 Bitcask-用于快速鍵/值數據的日志結構哈希表
- Mollom 體系結構-每秒以 100 個請求殺死超過 3.73 億個垃圾郵件
- Wordnik-MongoDB 和 Scala 上每天有 1000 萬個 API 請求
- Node.js 成為堆棧的一部分了嗎? SimpleGeo 說是的。
- 堆棧溢出體系結構更新-現在每月有 9500 萬頁面瀏覽量
- Medialets 體系結構-擊敗艱巨的移動設備數據
- Facebook 的新實時分析系統:HBase 每天處理 200 億個事件
- Microsoft Stack 是否殺死了 MySpace?
- Viddler Architecture-每天嵌入 700 萬個和 1500 Req / Sec 高峰
- Facebook:用于擴展數十億條消息的示例規范架構
- Evernote Architecture-每天有 900 萬用戶和 1.5 億個請求
- TripAdvisor 的短
- TripAdvisor 架構-4,000 萬訪客,200M 動態頁面瀏覽,30TB 數據
- ATMCash 利用虛擬化實現安全性-不變性和還原
- Google+是使用您也可以使用的工具構建的:閉包,Java Servlet,JavaScript,BigTable,Colossus,快速周轉
- 新的文物建筑-每天收集 20 億多個指標
- Peecho Architecture-鞋帶上的可擴展性
- 標記式架構-擴展到 1 億用戶,1000 臺服務器和 50 億個頁面視圖
- 論文:Akamai 網絡-70 個國家/地區的 61,000 臺服務器,1,000 個網絡
- 策略:在 S3 或 GitHub 上運行可擴展,可用且廉價的靜態站點
- Pud 是反堆棧-Windows,CFML,Dropbox,Xeround,JungleDisk,ELB
- 用于擴展 Turntable.fm 和 Labmeeting 的數百萬用戶的 17 種技術
- StackExchange 體系結構更新-平穩運行,Amazon 4x 更昂貴
- DataSift 體系結構:每秒進行 120,000 條推文的實時數據挖掘
- Instagram 架構:1400 萬用戶,1 TB 的照片,數百個實例,數十種技術
- PlentyOfFish 更新-每月 60 億次瀏覽量和 320 億張圖片
- Etsy Saga:從筒倉到開心到一個月的瀏覽量達到數十億
- 數據范圍項目-6PB 存儲,500GBytes / sec 順序 IO,20M IOPS,130TFlops
- 99designs 的設計-數以千萬計的綜合瀏覽量
- Tumblr Architecture-150 億頁面瀏覽量一個月,比 Twitter 更難擴展
- Berkeley DB 體系結構-NoSQL 很酷之前的 NoSQL
- Pixable Architecture-每天對 2000 萬張照片進行爬網,分析和排名
- LinkedIn:使用 Databus 創建低延遲更改數據捕獲系統
- 在 30 分鐘內進行 7 年的 YouTube 可擴展性課程
- YouPorn-每天定位 2 億次觀看
- Instagram 架構更新:Instagram 有何新功能?
- 搜索技術剖析:blekko 的 NoSQL 數據庫
- Pinterest 體系結構更新-1800 萬訪問者,增長 10 倍,擁有 12 名員工,410 TB 數據
- 搜索技術剖析:使用組合器爬行
- iDoneThis-從頭開始擴展基于電子郵件的應用程序
- StubHub 體系結構:全球最大的票務市場背后的驚人復雜性
- FictionPress:在網絡上發布 600 萬本小說
- Cinchcast 體系結構-每天產生 1,500 小時的音頻
- 棱柱架構-使用社交網絡上的機器學習來弄清您應該在網絡上閱讀的內容
- 棱鏡更新:基于文檔和用戶的機器學習
- Zoosk-實時通信背后的工程
- WordPress.com 使用 NGINX 服務 70,000 req / sec 和超過 15 Gbit / sec 的流量
- 史詩般的 TripAdvisor 更新:為什么不在云上運行? 盛大的實驗
- UltraDNS 如何處理數十萬個區域和數千萬條記錄
- 更簡單,更便宜,更快:Playtomic 從.NET 遷移到 Node 和 Heroku
- Spanner-關于程序員使用 NoSQL 規模的 SQL 語義構建應用程序
- BigData 使用 Erlang,C 和 Lisp 對抗移動數據海嘯
- 分析數十億筆信用卡交易并在云中提供低延遲的見解
- MongoDB 和 GridFS 用于內部和內部數據中心數據復制
- 每天處理 1 億個像素-少量競爭會導致大規模問題
- DuckDuckGo 體系結構-每天進行 100 萬次深度搜索并不斷增長
- SongPop 在 GAE 上可擴展至 100 萬活躍用戶,表明 PaaS 未通過
- Iron.io 從 Ruby 遷移到 Go:減少了 28 臺服務器并避免了巨大的 Clusterf ** ks
- 可汗學院支票簿每月在 GAE 上擴展至 600 萬用戶
- 在破壞之前先檢查自己-鱷梨的建筑演進的 5 個早期階段
- 縮放 Pinterest-兩年內每月從 0 到十億的頁面瀏覽量
- Facebook 的網絡秘密
- 神話:埃里克·布魯爾(Eric Brewer)談銀行為什么不是堿-可用性就是收入
- 一千萬個并發連接的秘密-內核是問題,而不是解決方案
- GOV.UK-不是你父親的書庫
- 縮放郵箱-在 6 周內從 0 到 100 萬用戶,每天 1 億條消息
- 在 Yelp 上利用云計算-每月訪問量為 1.02 億,評論量為 3900 萬
- 每臺服務器將 PHP 擴展到 30,000 個并發用戶的 5 條 Rockin'Tips
- Twitter 的架構用于在 5 秒內處理 1.5 億活躍用戶,300K QPS,22 MB / S Firehose 以及發送推文
- Salesforce Architecture-他們每天如何處理 13 億筆交易
- 擴大流量的設計決策
- ESPN 的架構規模-每秒以 100,000 Duh Nuh Nuhs 運行
- 如何制作無限可擴展的關系數據庫管理系統(RDBMS)
- Bazaarvoice 的架構每月發展到 500M 唯一用戶
- HipChat 如何使用 ElasticSearch 和 Redis 存儲和索引數十億條消息
- NYTimes 架構:無頭,無主控,無單點故障
- 接下來的大型聲音如何使用 Hadoop 數據版本控制系統跟蹤萬億首歌曲的播放,喜歡和更多內容
- Google 如何備份 Internet 和數十億字節的其他數據
- 從 HackerEarth 用 Apache 擴展 Python 和 Django 的 13 個簡單技巧
- AOL.com 體系結構如何發展到 99.999%的可用性,每天 800 萬的訪問者和每秒 200,000 個請求
- Facebook 以 190 億美元的價格收購了 WhatsApp 體系結構
- 使用 AWS,Scala,Akka,Play,MongoDB 和 Elasticsearch 構建社交音樂服務
- 大,小,熱還是冷-條帶,Tapad,Etsy 和 Square 的健壯數據管道示例
- WhatsApp 如何每秒吸引近 5 億用戶,11,000 內核和 7,000 萬條消息
- Disqus 如何以每秒 165K 的消息和小于 0.2 秒的延遲進行實時處理
- 關于 Disqus 的更新:它仍然是實時的,但是 Go 摧毀了 Python
- 關于 Wayback 機器如何在銀河系中存儲比明星更多的頁面的簡短說明
- 在 PagerDuty 遷移到 EC2 中的 XtraDB 群集
- 擴展世界杯-Gambify 如何與 2 人組成的團隊一起運行大型移動投注應用程序
- 一點點:建立一個可處理每月 60 億次點擊的分布式系統的經驗教訓
- StackOverflow 更新:一個月有 5.6 億次網頁瀏覽,25 臺服務器,而這一切都與性能有關
- Tumblr:哈希處理每秒 23,000 個博客請求的方式
- 使用 HAProxy,PHP,Redis 和 MySQL 處理 10 億個請求的簡便方法來構建成長型啟動架構
- MixRadio 體系結構-兼顧各種服務
- Twitter 如何使用 Redis 進行擴展-105TB RAM,39MM QPS,10,000 多個實例
- 正確處理事情:通過即時重放查看集中式系統與分散式系統
- Instagram 提高了其應用程序的性能。 這是如何做。
- Clay.io 如何使用 AWS,Docker,HAProxy 和 Lots 建立其 10 倍架構
- 英雄聯盟如何將聊天擴大到 7000 萬玩家-需要很多小兵。
- Wix 的 Nifty Architecture 技巧-大規模構建發布平臺
- Aeron:我們真的需要另一個消息傳遞系統嗎?
- 機器:惠普基于憶阻器的新型數據中心規模計算機-一切仍在變化
- AWS 的驚人規模及其對云的未來意味著什么
- Vinted 體系結構:每天部署數百次,以保持繁忙的門戶穩定
- 將 Kim Kardashian 擴展到 1 億個頁面
- HappyPancake:建立簡單可擴展基金會的回顧
- 阿爾及利亞分布式搜索網絡的體系結構
- AppLovin:通過每天處理 300 億個請求向全球移動消費者進行營銷
- Swiftype 如何以及為何從 EC2 遷移到真實硬件
- 我們如何擴展 VividCortex 的后端系統
- Appknox 架構-從 AWS 切換到 Google Cloud
- 阿爾及利亞通往全球 API 的憤怒之路
- 阿爾及利亞通往全球 API 步驟的憤怒之路第 2 部分
- 為社交產品設計后端
- 阿爾及利亞通往全球 API 第 3 部分的憤怒之路
- Google 如何創造只有他們才能創造的驚人的數據中心網絡
- Autodesk 如何在 Mesos 上實施可擴展事件
- 構建全球分布式,關鍵任務應用程序:Trenches 部分的經驗教訓 1
- 構建全球分布式,關鍵任務應用程序:Trenches 第 2 部分的經驗教訓
- 需要物聯網嗎? 這是美國一家主要公用事業公司從 550 萬米以上收集電力數據的方式
- Uber 如何擴展其實時市場平臺
- 優步變得非常規:使用司機電話作為備份數據中心
- 在不到五分鐘的時間里,Facebook 如何告訴您的朋友您在災難中很安全
- Zappos 的網站與 Amazon 集成后凍結了兩年
- 為在現代時代構建可擴展的有狀態服務提供依據
- 細分:使用 Docker,ECS 和 Terraform 重建基礎架構
- 十年 IT 失敗的五個教訓
- Shopify 如何擴展以處理來自 Kanye West 和 Superbowl 的 Flash 銷售
- 整個 Netflix 堆棧的 360 度視圖
- Wistia 如何每小時處理數百萬個請求并處理豐富的視頻分析
- Google 和 eBay 關于構建微服務生態系統的深刻教訓
- 無服務器啟動-服務器崩潰!
- 在 Amazon AWS 上擴展至 1100 萬以上用戶的入門指南
- 為 David Guetta 建立無限可擴展的在線錄制活動
- Tinder:最大的推薦引擎之一如何決定您接下來會看到誰?
- 如何使用微服務建立財產管理系統集成
- Egnyte 體系結構:構建和擴展多 PB 分布式系統的經驗教訓
- Zapier 如何自動化數十億個工作流自動化任務的旅程
- Jeff Dean 在 Google 進行大規模深度學習
- 如今 Etsy 的架構是什么樣的?
- 我們如何在 Mail.Ru Cloud 中實現視頻播放器
- Twitter 如何每秒處理 3,000 張圖像
- 每天可處理數百萬個請求的圖像優化技術
- Facebook 如何向 80 萬同時觀看者直播
- Google 如何針對行星級基礎設施進行行星級工程設計?
- 為 Mail.Ru Group 的電子郵件服務實施反垃圾郵件的貓捉老鼠的故事,以及 Tarantool 與此相關的內容
- The Dollar Shave Club Architecture Unilever 以 10 億美元的價格被收購
- Uber 如何使用 Mesos 和 Cassandra 跨多個數據中心每秒管理一百萬個寫入
- 從將 Uber 擴展到 2000 名工程師,1000 個服務和 8000 個 Git 存儲庫獲得的經驗教訓
- QuickBooks 平臺
- 美國大選期間城市飛艇如何擴展到 25 億個通知
- Probot 的體系結構-我的 Slack 和 Messenger Bot 用于回答問題
- AdStage 從 Heroku 遷移到 AWS
- 為何將 Morningstar 遷移到云端:降低 97%的成本
- ButterCMS 體系結構:關鍵任務 API 每月可處理數百萬個請求
- Netflix:按下 Play 會發生什么?
- ipdata 如何以每月 150 美元的價格為來自 10 個無限擴展的全球端點的 2500 萬個 API 調用提供服務
- 每天為 1000 億個事件賦予意義-Teads 的 Analytics(分析)管道
- Auth0 體系結構:在多個云提供商和地區中運行
- 從裸機到 Kubernetes
- Egnyte Architecture:構建和擴展多 PB 內容平臺的經驗教訓
- 縮放原理
- TripleLift 如何建立 Adtech 數據管道每天處理數十億個事件
- Tinder:最大的推薦引擎之一如何決定您接下來會看到誰?
- 如何使用微服務建立財產管理系統集成
- Egnyte 體系結構:構建和擴展多 PB 分布式系統的經驗教訓
- Zapier 如何自動化數十億個工作流自動化任務的旅程
- Jeff Dean 在 Google 進行大規模深度學習
- 如今 Etsy 的架構是什么樣的?
- 我們如何在 Mail.Ru Cloud 中實現視頻播放器
- Twitter 如何每秒處理 3,000 張圖像
- 每天可處理數百萬個請求的圖像優化技術
- Facebook 如何向 80 萬同時觀看者直播
- Google 如何針對行星級基礎設施進行行星級工程設計?
- 為 Mail.Ru Group 的電子郵件服務實施反垃圾郵件的貓捉老鼠的故事,以及 Tarantool 與此相關的內容
- The Dollar Shave Club Architecture Unilever 以 10 億美元的價格被收購
- Uber 如何使用 Mesos 和 Cassandra 跨多個數據中心每秒管理一百萬個寫入
- 從將 Uber 擴展到 2000 名工程師,1000 個服務和 8000 個 Git 存儲庫獲得的經驗教訓
- QuickBooks 平臺
- 美國大選期間城市飛艇如何擴展到 25 億條通知
- Probot 的體系結構-我的 Slack 和 Messenger Bot 用于回答問題
- AdStage 從 Heroku 遷移到 AWS
- 為何將 Morningstar 遷移到云端:降低 97%的成本
- ButterCMS 體系結構:關鍵任務 API 每月可處理數百萬個請求
- Netflix:按下 Play 會發生什么?
- ipdata 如何以每月 150 美元的價格為來自 10 個無限擴展的全球端點的 2500 萬個 API 調用提供服務
- 每天為 1000 億個事件賦予意義-Teads 的 Analytics(分析)管道
- Auth0 體系結構:在多個云提供商和地區中運行
- 從裸機到 Kubernetes
- Egnyte Architecture:構建和擴展多 PB 內容平臺的經驗教訓