# LinkedIn:使用 Databus 創建低延遲更改數據捕獲系統
> 原文: [http://highscalability.com/blog/2012/3/19/linkedin-creating-a-low-latency-change-data-capture-system-w.html](http://highscalability.com/blog/2012/3/19/linkedin-creating-a-low-latency-change-data-capture-system-w.html)

*這是 LinkedIn 分布式數據系統團隊的高級成員 [Siddharth Anand](http://practicalcloudcomputing.com/) 的特邀帖子。*
在過去的三年中,我很幸運能夠與許多新興的 NoSQL 產品一起使用,以支持高流量,面向客戶的網站的需求。
在 2010 年,我幫助 Netflix 成功 [將其 Web 規模用例從 Oracle 轉換為 AWS 的托管數據庫服務 SimpleDB](http://highscalability.com/blog/2010/10/22/paper-netflixs-transition-to-high-availability-storage-syste.html) 。 遷移完成后,我們開始了第二次遷移,這次是從 SimpleDB 到 Cassandra 的遷移。 第一次過渡是我們從自己的數據中心遷移到 AWS 的云的關鍵。 第二個是我們從一個 AWS 區域擴展到多個地理分布區域的關鍵-今天,Netflix 為兩個 AWS 區域提供流量,一個在弗吉尼亞州,另一個在愛爾蘭( [F1](http://highscalability.com/blog/2012/3/19/linkedin-creating-a-low-latency-change-data-capture-system-w.html#Footnote_1) )。 這兩個過渡都是成功的,但都涉及集成難題,例如創建數據庫復制技術。
2011 年 12 月,我加入了 LinkedIn 的分布式數據系統( DDS )團隊。 DDS 開發了數據基礎結構,包括但不限于 NoSQL 數據庫和數據復制系統。 LinkedIn 對構建和開放源代碼創新項目并不陌生,它正在加倍使用 NoSQL 來加速其業務-DDS 正在開發一個名為 Espresso( [R1](http://highscalability.com/blog/2012/3/19/linkedin-creating-a-low-latency-change-data-capture-system-w.html#Reference_1) )的新 NoSQL 數據庫,這是以后的主題。
觀察到兩家流量大的網絡公司解決了類似的問題之后,我不禁注意到了一系列的創新。 這些問題中有些是困難的,對于每個公司來說,單獨解決其問題確實是不幸的。 同時,由于缺乏可靠的開源替代方案,每個公司都不得不解決這些問題。 這顯然對一個以快速發展的新興企業為主導的行業產生了影響,這些行業無法建立 50 人的基礎設施開發團隊,也無法花數月的時間來構建功能。
## **更改數據捕獲系統**
今天,我想重點介紹一種這樣的創新:Change Data Capture 系統
關系數據庫已經存在很長時間了,已經成為公司所有數據的可靠存儲介質。 換句話說,它是公司業務關鍵數據的真實來源。 通常,數據會從此主要數據存儲中提取,轉換并存儲在輔助數據存儲中,例如數據倉庫。 該二級存儲通常支持推動業務洞察力和方向的數據分析。 在此方案中,這兩個存儲分別稱為 OLTP 存儲和 OLAP 存儲。 ( [F2](http://highscalability.com/blog/2012/3/19/linkedin-creating-a-low-latency-change-data-capture-system-w.html#Footnote_2) )
所有這些已經存在了數十年,那么有什么新東西? 來自主存儲的數據越來越多地用于提供業務決策之外的其他信息。 在 LinkedIn 上,它還提供實時搜索索引,實時網絡圖索引,緩存一致性,數據庫只讀副本等。這些都是 LinkedIn 的近實時數據需求的示例。
如果您曾經從事過將數據從主存儲轉移到輔助存儲的工作,那么您無疑會熟悉可用的選項。
例如,如果您在 OLTP 到 OLAP 的空間中工作,則使用某種 ETL(提取,轉換和加載)技術。 這個領域已經看到了圍繞工具(,例如,使用 GUI 拖放工具輕松定義轉換)和跨供應商集成(,例如從 Oracle 到 Teradata,Aster Data 等)的創新。 .. )。 該行業通常使用 ETL 進行夜間工作,以使高管可以了解前一天,一周,一個月,一年的業務表現。
如果需要從主數據存儲中獲取近實時更新流(如下所示)以解決 LinkedIn 的近實時需求,該怎么辦?

除了昂貴且專有的特定于供應商的產品外,幾乎沒有其他選擇。
## **引入數據總線**
Databus 是該領域的創新解決方案。
它具有以下功能:
* Pub-sub 語義
* 訂單內交付保證
* 源處的提交按事務分組
* ACID 語義在整個管道中得以保留
* 支持流分割
* 然后按分區確定訂購保證
* 像其他消息傳遞系統一樣,為最近發布的消息提供了非常低的延遲消耗
* 與其他郵件系統不同,它提供任意長的回溯,而不會影響源
* 高可用性和可靠性
## 數據總線如何工作?
數據總線由 3 個重要部分組成:
* 繼電器
* 引導程序
* 客戶資料庫
下圖顯示了 Databus 架構。 數據總線中繼將從源數據庫(例如 Oracle,MySQL 等... )( **步驟 1** )中拉出最近提交的事務。 中繼會將這些數據反序列化為緊湊形式(Avro 等),并將結果存儲在循環的內存緩沖區中。 偵聽事件的客戶端(訂戶)將拉動最近在線的更改,因為它們出現在中繼中( **步驟 2** )。 Bootstrap 組件還在監聽中繼中出現的在線更改。( **步驟 3** )

如果訂戶落在后面,以致其請求的數據不再位于中繼的內存緩沖區中,則訂戶可以請求從過去的時間 T 開始出現的合并增量( **步驟 4** )。 這將返回自時間 T 以來發生的所有更改的有效表示。

如果沒有數據集先驗知識的新訂戶要加入聚會,則需要完全引導。 首先,訂戶的 Databus 客戶端庫將在過去的某個時間 T 請求一個一致的快照( **步驟 5** )。 然后,自該時間 T 起,客戶端庫將請求合并 Delta( **步驟 6** )。 在訂閱服務器應用合并增量之后,客戶端庫將切換為偵聽來自中繼的聯機更改( **步驟 7** )。 客戶端庫幫助訂戶獲得自時間 T 以來的所有更改,時間 T 可以是任意時間點,從而使訂戶不受更改來源的詳細信息的影響。

## **Databus 的自舉組件**
Databus 最具創新性的功能之一是其 Bootstrap 組件。 數據變更捕獲系統已經存在了很長時間(,例如 Oracle Streams )。 但是,當使用者落后時,所有這些系統都會在主數據存儲上增加負載。
引導一個全新的消費者是另一個問題。 它通常涉及一個非常手動的過程-即在一個臨時的 Oracle 實例上恢復前一晚的快照,轉換數據并將其傳輸給使用者,然后應用自快照以來的更改等...
Databus 的 Bootstrap 組件以無縫,自動化的方式處理上述兩個用例。
## Databus 的自舉組件如何工作?
Databus Bootstrap 組件由兩種類型的存儲組成:日志存儲和快照存儲。 日志存儲服務于合并增量,而快照存儲服務于一致的快照。

1. 如前所述,Bootstrap 組件偵聽中繼中發生的在線更改。 LogWriter 將這些更改附加到日志存儲。
2. 日志應用程序將日志存儲中的最新操作應用于快照存儲
3. 如果新訂戶連接到 Databus,則該訂戶將從運行在 Bootstrap 組件中的 Bootstrap 服務器進行引導。
4. 客戶端將首先從快照存儲中獲取一致的快照
5. 然后,客戶端將從日志存儲中獲得出色的合并增量
6. 客戶端趕上中繼的內存緩沖區窗口后,客戶端將切換為從中繼讀取
## 數據總線的未來計劃
Databus 和 Espresso(我們下一個 NoSQL 商店的的工程師,足夠說)的團隊一直在不懈地努力以支持 Espresso 中的 Databus 復制-Databus 將成為 Espresso 的本機內部復制技術。 此外,一旦團隊找到了一些空閑時間,他們將對其進行開源。
我們正在尋找在解決棘手問題方面有良好記錄的工程師加入我們的 DDS。 如果您有興趣,可以隨時在 [LinkedIn](http://www.linkedin.com/in/siddharthanand) 上 ping 我。
## 這對 NoSQL 意味著什么
與 Databus 一樣酷,它不適用于所有 NoSQL 存儲。 當前,許多 NoSQL 技術(尤其是許多 Dynamo 風格的鍵-值存儲)提供的功能集之間存在很大差距。 它們沒有提供 Databus 可以提取的時間軸一致的更改流。
沒有這種支持,將有兩個未實現的用例:
* 支持向現有商業智能基礎架構(,即每晚,面向 ETL 的負載)中的出站提要
* 支持向二級索引(例如搜索,網絡圖,緩存等)的出站近實時提要...
最近,對于 Cassandra,Netflix 和 Ooyala 都分別解決了這個問題。 Netflix 發布了一個有關 [Aegisthus](http://techblog.netflix.com/2012/02/aegisthus-bulk-data-pipeline-out-of.html) 的技術博客,該系統將最終一致的數據文件集轉換為時間軸一致的流。 該流當前由 Business Intelligence 消耗-它不是實時的,因為它取決于內存刷新間隔。 但是,通過一些調整,它可以接近實時。 我們期待該技術的開源。
更重要的是,我們希望 NoSQL 供應商為其產品解決此問題。
## 更多資源
* [數據基礎結構@ LinkedIn](http://www.slideshare.net/r39132/linkedin-data-infrastructure-qcon-london-2012) -QCON London 2012,Sid Anand,LinkedIn 高級會員
* [數據總線:用于時間線一致的更改數據捕獲的系統](http://www.slideshare.net/dtunkelang/databus-a-system-for-timelineconsistent-lowlatency-change-capture) -CIKM 2011,Chavdar Botev,LinkedIn 高級會員
* LinkedIn 上的 [數據基礎結構](http://www-conf.slac.stanford.edu/xldb2011/talks/xldb2011_tue_1005_LinkedIn.pdf)-XLDB 2011,Shirshanka Das,LinkedIn 高級成員
* [LinkedIn 基礎設施](http://qconsf.com/dl/QConSF2007/slides/public/JeanLucVaillant_LinkedIn.pdf) -QCON SF 2007,Jean-Luc Vaillant,LinkedIn 聯合創始人兼前首席技術官
## 致謝
我要感謝構建此系統的工程師們的不懈努力:
阿迪亞·奧拉德卡(Aditya Auradkar),查夫達爾·博特夫(Chavdar Botev),席爾香卡·達斯(Shirshanka Das),戴夫·德馬格(Dave DeMaagd),亞歷克斯·費恩伯格(Alex Feinberg),潘寧德拉·甘蒂(Phanindra Ganti),雷·高(Bhaskar Ghosh),基肖爾·戈帕拉克里希納(Kishore Gopalakrishna),米希爾·甘地(Mihir Gandhi),布倫丹·哈里斯(Broaddan Harris),斯沃洛普·賈加迪什(Swaroop Jagadish),喬爾·科西(Joel Koshy),凱文·克魯瓦茲(Jay Lua Naga) ,Neha Narkhede,Sasha Pachev,Igor Perisic,Lin Qiao,Tom Quiggle,Jun Rao,Bob Schulman,Abraham Sebastian,Oliver Seeliger,Adam Silberstein,Boris Shkolnik,Chinmay Soman,Subbu Subramaniam,Roshan Sumbaly,Kapil Surlaker,Sajid Topiwala Tran,Balaji Varadarajan,Jemiah Westerman,Zach White,David Zhang,Jason Zhang,Agila Devi,Neil Pinto,Ramana Ramakrishnan,Sai Sundar,Nishant Vyas,Agila Devi,Neil Pinto,Ramana Ramakrishnan,Sai Sundar 和 Nishant Vyas。
我還要特別感謝 Bob Schulman,Kapil Surlaker 和 Shirshanka Das 對本文的幫助。
## 腳注
1. 就快速延遲而言,Netflix 的英國和愛爾蘭客戶受益于 Netflix 在本地的區域性業務。 如果您不熟悉 AWS 區域,則區域可為最終用戶提供地理位置優勢。 區域本身由幾個數據中心組成,這些數據中心在 AWS 中稱為“可用區”。 顧名思義,可用區在托管區域內提供災難恢復。 對于像網站這樣的對延遲敏感的應用程序,跨區域災難恢復從來都不是一個好主意。
2. OLTP(在線事務處理)與 OLAP(在線分析處理):這區分了它們的用途-OLTP 用于主數據服務,OLAP 用于主數據的修改后的副本的分析處理。
“ Databus 簡介” ...這可用開源嗎? 那將會?
我們想開始討論。 它將很快開源。 人們對此有何看法? 人們將如何使用它? 等等...
我們計劃在今年晚些時候開源 Databus。
我期待它被開源。 我認為許多人(包括我自己在內)都將使用它從舊版源數據庫中將其用于 ETL,在這些舊版源數據庫中,架構不太適合加載增量數據集。 那里的商業 CDC 產品(例如 Attunity)使開發人員難以自定義和做出貢獻。 我正在研究一種通過對 SQL Server 事務日志進行反向工程來獲取 CDC 數據的解決方案,并且很樂意遵循常見的 CDC 抽象。
我看到這被用于將交易從關系業務軟件數據庫中引入并進入多個專用系統-圖形數據庫,統計平臺,HDFS 存儲,內存 BI 存儲和流數據庫-都在同一時間 時間。 我很高興聽到這一消息,因為它是我對商業軟件的未來愿景的關鍵部分。
首先,感謝您與我們分享。
我對 ETL 方面的理解不夠充分,但是我嘗試查看 MongoDB 如何適合此方案。 我很可能在這里簡化了一些事情,但是請忍受。 :)
因此,我們都知道有一個常規數據庫存儲主要數據。 該數據庫按順序發布它的更改,這些更改被捕獲并保存在固定大小的緩沖區中,并可供訂戶使用。 更改的緩沖區定期備份到磁盤上。 打算進行完全同步的新成員可以從備份副本中提取更改。 與訂戶一起的數據可以被用來導出其他有意義的數據。
在我看來,MongoDB 提供了所有這些功能,或者至少提供了構建此類系統的基本基礎結構。
常規數據庫是 MongoDB。 它以 oplog 的形式發布更改-通常是內存映射。 客戶端可以打開一個尾部游標到 oplog 集合,并在更改發生時將更改流式傳輸到數據庫中。 客戶端可以與作為副本集的一部分安排的輔助 DB 相關聯,在該副本集上可以運行 Map-Reduce 或 Aggregation 任務。 輔助服務器之一可以充當“ Bootstrap 服務器”。 (通過執行完全同步,可以從另一個輔助節點啟動新的輔助節點)。 特殊輔助節點的操作日志可能類似于“中繼”,以避免在主節點上加載。
這有道理嗎? MongoDB 是否為此項目進行了評估?
任何想法,將不勝感激。
OTOH,現在,如果這必須與特定的數據庫一起使用,那么每個數據庫都將有“ Databus 驅動程序”嗎? 例如,如果必須與 MongoDB 一起使用,則必須有一個 MongoDB 驅動程序,該驅動程序可以理解 MongoDB 發布的 oplog 格式并以通用格式提供給客戶端。
還是您要發布標準并要求數據庫開發人員根據該標準進行更改?
再次感謝您。
順便說一句,我也正在等待有關 Espresso 的帖子。 :)
-婆羅門
席德,不錯的帖子 在 Yammer,我們正在為近實時搜索做類似的事情。 Databus 看起來更廣泛,但是原理相似。 我們正在使用 BDB JE 作為本質上是變更集服務的后備存儲。 在更新 ActiveRecord 模型時,Rails 應用程序將更改為變更集服務的信標。 變更集服務為變更建立索引。 另一個服務遍歷更改集索引并生成 Lucene 索引。 模型之間存在一些額外的依賴關系,因此,當依賴模型更新時,依賴于該模型的模型將“失效”,因此將其重新索引。
我真的很想了解更多信息,并且對開放源代碼有所了解。 我們所提供的大部分服務滿足了我們的需求,但是絕對可以改善。
席德
好的帖子,并感謝分享。 我們正在尋求重新發明輪子,以創建與您上面描述的非常相似的東西。 您是否知道何時可以嘗試使用這些位? 我們將非常有興趣了解更多有關該產品的信息,并看一看開放源代碼并在適用的情況下做出貢獻。
我試圖找到有關中繼如何將已提交的更改從數據庫中拉出的詳細信息。
是否有任何視頻或文檔對此進行了詳細說明?
據我了解,今天它已在 Oracle 上使用。 該技術是否取決于特定的 Oracle 功能,或者可以在“通用” RDBMS 上實現?
Databus Relay 可以從 MS SQL Server(源數據庫)中提取事務。
- 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 內容平臺的經驗教訓