# Rackspace 現在如何使用 MapReduce 和 Hadoop 查詢 TB 的數據
> 原文: [http://highscalability.com/blog/2008/1/30/how-rackspace-now-uses-mapreduce-and-hadoop-to-query-terabyt.html](http://highscalability.com/blog/2008/1/30/how-rackspace-now-uses-mapreduce-and-hadoop-to-query-terabyt.html)
您如何每天查詢來自 600 多個活動服務器的數百 GB 新數據? 如果您認為這聽起來像是 [MapReduce 與數據庫大戰](http://highscalability.com/database-people-hating-mapreduce)激烈對峙的完美戰場,那么您是正確的。 Mailtrust(Rackspace 的郵件部門)的首席技術官 Bill Boebel 慷慨地提供了一個有趣的說明,說明他們如何將其日志處理系統從存儲在每種計算機方法中的早期變形蟲文本文件發展到尼安德特人關系 最終無法與之抗衡的數據庫解決方案,最后成為基于 Homo sapienic Hadoop 的解決方案,該解決方案對他們來說是明智的選擇,并且具有無限的可擴展性潛力。
Rackspace 面臨一個現在熟悉的問題。 大量數據流進來。您將所有這些數據存儲在哪里? 您如何使用它呢? 在他們的系統的第一個版本中,日志存儲在純文本文件中,并且必須由登錄到每臺機器上的工程師手動搜索。 然后是相同過程的腳本版本。 下一個重大發展是單機 MySQL 版本。 由于大量的數據洪泛導致大量索引混亂,因此插入很快成為瓶頸。 定期散裝加載是解決此問題的方法,但分度指數的剪切大小使其減慢了速度。 然后根據時間將數據分為合并表,因此索引更新不是問題。 隨著越來越多的數據,此解決方案由于負載和操作問題而崩潰。
面對指數級增長,他們花了大約 3 個月的時間使用 Hadoop(Google 文件系統和 MapReduce 的開源實現),Lucene 和 Solr 構建新的日志處理系統。 遷移到已分區的 MySQL 數據集是一種選擇,但他們認為,這樣做只會花費時間,并且將來無論如何都需要創建更具可擴展性的解決方案。 未來是今年年初。
他們的新系統的優勢在于,他們現在可以按照自己想要的任何方式查看其數據:
* 每晚 MapReduce 作業收集有關其郵件系統的統計信息,例如按域,傳輸的字節數和登錄數的垃圾郵件計數。* 當他們想知道客戶從哪個世界登錄時,便創建了一個快速的 MapReduce 作業,并在幾個小時內得到了答案。 在典型的 ETL 系統中,實際上是不可能的。
此開關更改了他們經營業務的方式。 Stu Hood 很好地總結了這種影響:“現在,只要我們想到有關客戶使用模式的復雜問題,我們都可以通過 MapReduce 在數小時內從日志中獲取答案。這是強大的功能。”
在本文的其余部分中,Bill 描述了其系統的演變以及促使其從關系數據庫解決方案遷移到 MapReduce 系統的力量。
在開始之前,我真的要感謝 Bill Boebel 花了很多時間和精力來創建這份非常有價值的體驗報告。
## 信息來源
* [Rackspace 上的 MapReduce](http://blog.racklabs.com/?p=66)* Mailtrust(Rackspace 的郵件部門)的首席技術官 Bill Boebel 發送給我的文檔。 這篇文章與通常的內容有所不同,因為到目前為止,大多數內容都是由 Bill 撰寫的,我對它的組織方式也有所不同。
## 該平臺
* Hadoop 的* Hadoop 分布式文件系統(HDFS)* Lucene* 索爾* Tomcat
## 統計資料
* Rackspace 擁有超過 5 萬個設備和 7 個數據中心。* 郵件系統和日志記錄服務器當前位于 3 個 Rackspace 數據中心中。* 該系統在 Solr 中存儲了 8 億多個對象(一個對象=用戶事件,例如接收電子郵件或登錄 IMAP),在 Hadoop 中存儲了 96 億個對象,相當于 6.3 TB 壓縮。* 每天會生成數百 GB 的電子郵件日志數據。
## Mailtrust 的背景
* 電子郵件托管公司* 成立于 1999 年,于 2007 年與 Rackspace 合并,以前的名稱為:Webmail.us* 80K 商業客戶,700K 郵箱。* 2 個托管郵件產品:值得注意的,MS Exchange* 值得一提的系統:
*自產,基于 Linux,POP3,IMAP,網絡郵件,RSS 提要,共享日歷,Outlook 同步,Blackberry 同步。
*約 600 臺服務器和商用硬件,旨在解決常見故障。* MS Exchange 系統:
* MAPI,POP,IMAP,OWA,Blackberry,Goodmail,ActiveSync。
*約 100 臺服務器,高端硬件,SAN & DAS 存儲。
## 架構
當前基于 Hadoop 的系統的工作方式是:* 原始日志從數百個郵件服務器實時傳輸到 Hadoop 分布式文件系統(“ HDFS”)。* 計劃運行 MapReduce 作業以使用 Apache Lucene 和 Solr 索引新數據。* 一旦建立索引,它們將被壓縮并存儲在 HDFS 中。* 每個 Hadoop 數據節點都運行一個 Tomcat servlet 容器,該容器承載許多 Solr 實例,這些實例拉并合并新索引,并向我們的支持團隊提供真正快速的搜索結果。
## 系統替代
### 問題
Mailtrust 是一家非常注重客戶服務的公司。 對于我們的支持技術人員而言,能夠檢查郵件日志以對我們的客戶進行故障排除非常重要。 我們的支持技術人員每天需要搜索日志數百次,因此提供此功能的工具必須快速準確。 每天有 600 多個郵件服務器和數百 GB 的原始日志數據產生,因此管理起來很棘手。 這是 Mailtrust 日志記錄體系結構的簡要歷史,我們面臨的問題,如何克服它們以及當今系統的外觀...
### 記錄 v1.0
日志以純文本格式存儲 每個郵件服務器的本地磁盤上的文件,并保留了 14 天。 我們的支持技術人員沒有對服務器的登錄訪問權限,因此,要搜索日志,他們將必須向我們的工程師升級。 然后,工程師將不得不進入每個郵件服務器并使用 grep / var / log / maillog。
問題:一旦我們在十幾臺服務器上發展了很多,這種手動登錄每個服務器的過程對于我們的工程師來說就變得很耗時。
### 記錄 v1.1
通過編寫腳本來加快搜索過程,該腳本將通過從集中式服務器運行的一個命令來搜索多個服務器。 工程師可以告訴腳本要搜索的郵件服務器類型(入站 smtp,出站 smtp,后端郵箱)。 該腳本將在/ etc / hosts 中查找該類型的服務器列表,然后遍歷每個服務器,執行 ssh,執行 grep,然后輸出結果。 該腳本過去也可以通過“ gunzip -c /var/log/maillog.* | grep”進行搜索。
問題:支持技術人員仍必須向工程師升級故障單才能執行搜索 。 隨著客戶和服務器數量的增加,這開始占用了我們工程師的稀缺時間。 另外,在活動服務器上存儲和搜索日志會對服務器的性能產生負面影響。 更糟的是,工程團隊不斷壯大,我們開始遇到問題,兩名工程師將同時執行搜索,這實際上使事情變慢了。
### 記錄 v2.0
我們發布了一個日志搜索工具,支持技術人員可以直接使用它,而無需工程師參與。 支持團隊使用了基于 Web 的工具,可以在其中搜索日志。 它允許按發件人或收件人的電子郵件地址,域名或 IP 地址進行搜索。 所有這些都是 MySQL 數據庫中的索引字段。 不允許使用通配符文本搜索(即 MySQL“ LIKE”語句),因為數據集非常大,而且這些查詢的速度非常慢。 每天的日志都存儲在一個單獨的表中,因此我們可以通過簡單地刪除并重新創建 MySQL 表來清除舊數據。 與在大表上運行條件 DELETE 命令相比,這確實使清除工作非常快。 日志數據僅保留了 3 天,以使 MySQL 數據庫減小到合理的大小。
為了使日志進入數據庫,每個郵件服務器最初將其日志數據寫入本地 16MB tempfs 分區。 每 60 秒鐘通過 cron 調用一次 Logrotate 來旋轉臨時日志文件,然后在將數據發送到集中式日志服務器之前對其進行預處理。 此預處理步驟減少了必須通過網絡傳輸到日志服務器的數據量,并且這也分散了處理工作量,以避免在日志服務器上造成瓶頸。 在本地處理數據之后,腳本會將逗號分隔的日志數據發送回本地服務器上的 syslog-ng,然后 syslog-ng 會通過網絡將其發送到集中式日志服務器。 日志服務器配置為在 6 個不同的端口上接收數據,每種類型的日志數據都接收一個端口...入站 smtp,出站 smtp,后端 smtp,垃圾郵件/病毒過濾,POP3 和 IMAP。 接收到日志數據后,將通過 MySQL INSERT 命令將記錄一一插入到數據庫中。
問題:我們很快意識到,MySQL 插入存在瓶頸。 隨著表的增長,對每個條目的索引在插入時變慢。 在測試的最初幾個小時內,插入開始變慢,無法跟上接收數據的速度。 記錄系統的 2.0 版從未在生產中使用過。
### 記錄 v2.1
通過對集中式日志服務器上本地文本文件中的日志條目進行排隊并定期將其批量加載到數據庫中,解決了 MySQL INSERT 瓶頸。 由于 syslog-ng 在其 6 個端口上接收到日志,因此數據將流式傳輸到 6 個單獨的文本文件中。 每隔 10 分鐘,腳本將輪換這些文本文件并執行 MySQL LOAD,以將數據加載到數據庫中。 這比一次插入一個記錄的日志數據快得多。
問題:隨著數據庫的增長,LOAD 的速度將逐漸變慢,這是因為隨著插入的表變大,MySQL 索引性能會下降。 這個版本的速度足夠快,可以發布到生產中,但是我們知道,如果不進行額外的工作,該系統就不會擴展太多。
### 記錄 v2.2
引入了合并表,以加快將日志數據加載到數據庫中的速度。 在此版本中,腳本每 10 分鐘會創建一個新的數據庫表,然后將文本日志加載到空表中。 這使得 LOAD 命令非常快,因為沒有現有的數據庫索引可能會對性能產生負面影響。 加載數據后,腳本將修改一組合并表,這些合并表將所有 10 分鐘的表合并在一起。 修改了 Web 搜索工具,以允許在以下時間范圍內進行搜索:全天,過去 12 小時,過去 6 小時,過去 2 小時。 每個時間段都存在對應的合并表,并且在創建新表時每 10 分鐘進行一次修改。
問題:此版本的日志記錄系統可靠運行了大約一年。 但是隨著我們的支持團隊,客戶群和服務器數量的增加,我們開始遇到問題。 當我們到達大約 100 臺服務器時,數據庫 LOAD 操作將需要 2-3 分鐘才能運行,這是可以接受的,但是服務器現在始終處于沉重的 cpu 和磁盤 IO 負載之下。 搜索的執行頻率更高,并且變得越來越慢。 在嘗試創建新表或修改合并表時,我們開始看到一些奇怪的問題,例如隨機錯誤。 這些錯誤逐漸變得更加頻繁,導致丟失日志數據。 支持團隊開始對系統的準確性失去信心。
此外??,在很多情況下,我們的工程師對特定應用程序進行了軟件升級,從而改變了日志格式,從而破壞了預處理腳本。 由于我們的原始日志每 60 秒就會從本地郵件服務器中刪除一次,因此發生這種情況時,我們將無法恢復丟失的日志。 此外,日志搜索工具對于我們支持團隊的日常運營變得越來越重要。 但是,日志系統沒有冗余。 沒有 RAID,沒有備份,沒有故障轉移系統。 對于將日志系統擴展到單個整體服務器之外,我們也沒有一個好的計劃。 使用日志系統逐步修補問題和調整性能會占用大量時間,我們需要更好的東西。 我們需要一種新的解決方案,該解決方案必須快速,可靠并且可以隨著我們的發展無限擴展。 我們需要真正可擴展的東西。
### 記錄 v3.0
在設計 v3.0 時,我們研究了幾種商業日志處理應用程序。 Splunk 脫穎而出,幾乎完成了我們想要的一切; 但是,我們擔心使用這樣的供應商產品可能會限制我們在將來構建新功能的能力。 例如,我們想要構建一個工具,使我們的客戶可以直接搜索其日志。 自 Apache Hadoop 項目成立以來,我們一直在關注它,其進展和方向給我們留下了深刻的印象。 Hadoop 是 Google File System 和 MapReduce ...的開源實現,該系統是專為大規模分布式數據處理而設計的。 它通過添加服務器并在服務器之間分配數據和 MapReduce 作業來橫向擴展其工作負載。 其他公司已經在使用它進行自己的日志處理。 因此選擇了 Hadoop。 在大約 3 個月的時間內,我們使用 Hadoop,Lucene 和 Solr 構建了全新的日志處理系統。 該系統的描述如下:http://blog.racklabs.com/?p=66
我們相信隨著我們公司的發展,這個新系統將能夠與我們一起擴展。 Hadoop 項目背后有很多動力,這使我們對它的可擴展性將繼續提高充滿信心。 雅虎是該項目的主要貢獻者之一,并已構建了包含數千臺服務器的 Hadoop 集群,并且他們正積極努力使 Hadoop 支持數以萬計的服務器。
問題:迄今為止,我們發現的唯一問題是我們自己的錯誤。 我們會在找到它們后修復它們。
今天我們正在積極運行 v3.0,但我們不會在這里停止。 我們有許多新功能的計劃...
### 未來
目前正在對 3.1 版進行編碼。 它包括支持 Microsoft Exchange 日志處理的新 MapReduce 作業。 (當前,我們僅使用此系統處理值得注意的日志)。 我們計劃在三月上線。
在 4.0 版中,我們計劃將日志搜索工具交到客戶手中,以便他們可以擁有與支持團隊相同的故障排除能力。 這很可能需要重新組織我們存儲日志索引分片的方式,以便按用戶對它們進行分組,而不是讓 Solr 將它們隨機分組。 我們的經銷商對此感到很興奮,因為它可以使他們更好地為客戶提供支持。 誰知道 v4.0 之后會構建什么...
## 相關文章
* [Google 體系結構](http://highscalability.com/google-architecture)* [數據庫人們討厭 MapReduce](http://www.highscalability.com/database-people-hating-mapreduce)* [產品:Hadoop](http://www.highscalability.com/product-hadoop)* [在 Amazon EC2 和 Amazon S3 上運行 Hadoop MapReduce](http://www.highscalability.com/running-hadoop-mapreduce-amazon-ec2-and-amazon-s3)* [Solr](http://lucene.apache.org/solr/)
非常令人印象深刻。 每天在日志文件中有數百演出?!?!?! 哇,我只能說。
那么,是否有任何關系數據庫可以使用少量機器來處理這種負載? 還是對 RDBMS 無法處理的數據存在魔術限制?
致敬 Hadoop 人士!
[http://codershangout.com](http://codershangout.com)
編碼人員可以進行視頻群聊的地方!
“任何 RDBMS 都能做到這一點?”
我會以任何合理的費用加價。 該文章缺少的是,這種 Hadoop 基礎架構在 Rackspace 的構建和運行上花費了多少成本。 總擁有成本(TCO)是真正強大和改變游戲規則的主要因素。
然后要真正回答您的問題,我只是說,不。
我唯一知道的甚至可能是禱告,可能是 Vertica( [http://www.vertica.com/)](http://www.vertica.com/))但是,Vertica 也不是真正的標準 RDBMS 不知道要花多少錢。
“這使擁有計算機集群的任何人都可以編寫簡單的代碼來快速,可靠地對海量數據集執行任務”(摘自“ Rackspace 的 MapReduce”)。
-任何人
-帶有計算機集群
-簡單的代碼(執行“迅速而可靠”)
哇,這些正是這類 IT 工作/技能,永遠不會外包給其他國家/地區。
感謝您殺死另一個高端利基市場。 這對于大公司/玩家總是很樂于助人(谷歌,ibm 等),而對那些愿意做完全一樣的工作的外包公司也不錯,因為它很容易標準化。
我們不需要你 我們得到了 Apache Foundation。
晚安。
如果您的工作安全依賴于您編寫糟糕的,復雜的,整體的軟件,那么您可能應該重新考慮自己的技能。
“絕不會外包給其他國家...”
許多 Hadoop 提交者位于這些國家/地區。 克服你的偏見。
如果您假設如果無法使用 mySQL 和本地磁盤執行此操作,則無法使用數據庫執行此操作,這是完全合乎邏輯的。
幾年前,其他數據庫已解決了上述數據庫問題:分區表,可靠性,禁用索引(按分區)和啟動星型模式。
我很好奇是否有任何工具可以幫助創建報告或進行臨時查詢。 很難想象有必要聘請專門的 map-reduce 開發人員編寫自定義代碼來回答業務問題。
杰瑞
[http://www.databasecolumn.com/2008/01/mapreduce-a-major-step-back.html“](<a rel=) > MapReduce:一些數據庫專家向后退了一步。我不 知道的東西足以使我同意或不同意,但是我仍然認為這是非常有趣的食物。
越來越少的 kkep 每天都會出現,而較老的技術則很快消失
-----
[http://underwaterseaplants.awardspace.com“](<a rel=) >海洋植物
[http://underwaterseaplants.awardspace.com/seagrapes.htm“](<a rel=) >海葡萄... [http://underwaterseaplants.awardspace.com/plantroots.htm”](<a rel=) >植物根
請參見 CloudBase-
[http://cloudbase.sourceforge.net'](<a rel="nofollow" href="http://cloudbase.sourceforge.net) > [http://cloudbase.sourceforge.net](http://cloudbase.sourceforge.net)
它是一種基于 Hadoop Map Reduce 架構的數據倉庫系統,允許使用 ANSI SQL 查詢 TB 和 PB 的數據。 它帶有 JDBC 驅動程序,因此可以使用第三方 BI 工具,報告框架直接連接到 CloudBase。
它解決了這場辯論中指出的大多數問題-
[http://www.databasecolumn.com/2008/01/mapreduce-a-major-step-back.html'](<a rel="nofollow" href="http://www.databasecolumn.com/2008/01/mapreduce-a-major-step-back.html) > Mapreduce 一個主要步驟
它具有優化的算法來處理聯接,并計劃在下一個版本中支持表索引。
感謝作者和 Rackspace 分享了如此出色的文章。
就像這篇文章一樣,我們還使用 Hadoop(MapReduce,HDFS)和 Lucene / Solr 構建我們的分布式索引和查詢系統。 我們還支持某些 MapReduce 作業的即席查詢。
現在,我們還為應用程序提供了 JDBC / SQL 接口。 在平臺級別,我們還使用 Bigtable(Hypertable 或 HBase)來管理全局索引。 Bigtable 可以解決索引合并的問題并提供全局訪問。 我認為這比分片解決方案更好。
您能否分享在解決方案中使用 Bigtable 的任何想法。
- 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 內容平臺的經驗教訓