# Bazaarvoice 的架構每月發展到 500M 唯一用戶
> 原文: [http://highscalability.com/blog/2013/12/2/evolution-of-bazaarvoices-architecture-to-500m-unique-users.html](http://highscalability.com/blog/2013/12/2/evolution-of-bazaarvoices-architecture-to-500m-unique-users.html)

*這是由 [Victor Trac](http://victortrac.com) ,的云架構師 [Bazaarvoice](http://www.bazaarvoice.com) 撰寫的客座 。*
Bazaarvoice 是一家與人們定期進行互動但從未聽說過的公司。 如果您在 bestbuy.com,nike.com 或 walmart.com 等網站上閱讀了客戶評論,則說明您正在使用 Bazaarvoice 服務。 這些站點以及其他數千個站點都依賴 Bazaarvoice 提供軟件和技術,以收集和顯示有關產品和服務的用戶對話。 所有這些意味著 Bazaarvoice 會處理我們每天使用的大多數產品的很多情緒數據。
Bazaarvoice helps our clients make better products by using a combination of machine learning and natural language processing to extract useful information and user sentiments from the millions of free-text reviews that go through our platform. This data gets boiled down into reports that clients can use to improve their products and services. We are also starting to look at how to show personalized sortings of reviews that speak to what we think customers care about the most. A mother browsing for cars, for example, may prefer to read reviews about safety features as compared to a 20-something male, who might want to know about the car’s performance. As more companies use Bazaarvoice technology, consumers become more informed and make better buying decisions.

*紅色的框由 Bazaarvoice 提供*
Bazaarvoice 已集成到全球數千個網站中。 在任何給定的月份,我們將為超過 4.75 億的唯一身份訪問者提供流量。 這些訪問者將瀏覽,閱讀和貢獻我們的內容,包括從產品評論到問題&答案,甚至是我們客戶產品和服務的視頻等內容。 這五億人口將在我們的平臺上花費大量時間,每個月的瀏覽量達到數百億。 而且由于我們在眾多人流量眾多的商業站點上,因此我們的可靠性和正常運行時間至關重要。 如果 Bazaarvoice 平臺發生故障,我們將影響成千上萬依賴我們的網站。 為了快速,可靠地完成所有這些工作,我們設計了一個高度冗余的堆棧,該堆棧主要建立在 Amazon Web Services 之上。
假期購物旺季是我們基礎設施最繁忙的時間。 在“黑色星期五”和“網絡星期一”,我們會看到流量非常高,從今年年底到 1 月,我們的負荷一直很高。 這就提出了一個獨特的擴展挑戰,因為我們必須在一年中的 3-4 個月內處理幾乎兩倍于正常(并且一直在增長)的流量。 今年,我們預計在假日購物旺季每秒將收到 6 萬至 6.5 萬次請求。

*假期前到我們平臺的帶寬和 HTTP 請求的一周視圖*
## 卑微的開端
與大多數大型軟件堆棧一樣,我們從一個非常簡單的體系結構開始。 我們最初的應用程序是使用 MySQL 作為數據存儲的單個整體 Java 應用程序,所有這些程序都在托管主機環境中運行。 隨著我們這些年來的成長,我們在相同的代碼庫上構建了其他應用程序,并增加了新功能。 我們是 Solr 的早期用戶,它使我們能夠將 MySQL 主要轉變為鍵值存儲。 除了 Solr,我們通過僅給 JVM 更多的 RAM 或將 MySQL 服務器放在更快的盒子上來垂直擴展。
然而,正如一位經驗豐富的工程師所知道的那樣,垂直縮放所帶來的容易的早期收益很快變得難以實現。 因此,我們通過簡單地復制整個堆棧開始水平擴展。 我們稱這些為“集群”,它們使我們無需進行較大的應用程序更改即可實現水平擴展。

*每個群集都是具有不同數據的整個堆棧的副本。*
在 2008 年,Bazaarvoice 大約 3 歲時,我們在托管數據中心經歷了一些停機時間,這使我們面臨著更多冗余的挑戰。 一種選擇是簡單地在另一個地理區域中找到另一個托管服務提供商,然后復制我們所有的服務器。 但是,由于我們使用的是 MySQL,因此我們無法輕松地跨地區使用多主機。 因此,我們最初的計劃只是從主托管數據中心運行 MySQL 復制,并保持足夠的容量以熱備份方式在備份區域中為生產流量提供服務。 如果我們的主數據中心發生故障,我們將更新 DNS 以指向備份數據中心。 但是,這將意味著很難進行單向故障轉移,因為 MySQL 從屬服務器將被提升為主服務器。
為使從屬數據中心在災難中真正發揮作用,我們需要保留足夠的備用容量來服務我們 100%的生產流量,從而在不增加生產能力的情況下有效地使托管成本增加一倍。
### 輸入 AWS
作為當時的年輕創業公司,我們無法簡單地將托管成本提高一倍。 Amazon Web Services 在一個月前(即 2008 年 10 月)剛剛從 EC2 刪除了“測試版”標簽,因此我們認為這可能是一個絕佳的機會,可以利用這種新型云技術在我們的備用站點上節省資金。
在 EC2 上構建冗余備份站點時,我們的策略與使用備份數據中心基本相同,除了不必為機架中準備就緒的服務器付費,我們只需要運行 MySQL 從屬即可。 。 當我們需要故障轉移到 EC2 時,我們可以按需啟動實例。 這樣做的成本只是在另一個數據中心復制整個生產堆棧的成本的一小部分。

*我們最初嘗試使用 MySQL 從站進入 Amazon Web Services。*
幸運的是,我們無需執行故障轉移計劃。 但是,當我們決定要在托管數據中心和 Amazon us-east-1 地區之外提供實時流量時,我們使用 EC2 的經驗使我們有足夠的信心繼續使用它。 我們的數據已經被復制到 us-east-1 中,因此我們只需要啟動應用程序實例并在應用程序堆棧上進行一些小的工程設計即可使其適合實時請求。
AWS us-east-1 設計為只讀,可與 MySQL 復制完美配合。 當最終用戶向 AWS 提交新的內容時,這變得更加復雜,因為 AWS 中的 MySQL 是只讀的。 我們通過編寫一個基于 MQ 的提交隊列解決了這個問題,該隊列將寫操作復制回我們的主數據中心,在此我們在 MySQL Master 上執行寫操作。 在幾秒鐘內,更改將被復制回 AWS。 此設置運行良好,使我們能夠將生產能力提高一倍,同時仍然使我們能夠在必要時完全故障轉移到 AWS。 不久之后,我們決定將 us-east-1 集群復制到 us-west-2,從而為我們提供了三個實時生產區域。
[ 
*MySQL 從我們的托管數據中心復制到兩個 AWS 區域。*
為了在兩個 AWS 區域與我們的托管 DC 之間路由請求,我們采用了基于 DNS 的健康檢查系統。 在 EC2,我們使用在具有 EIP 的實例上運行的 HAProxy 作為負載均衡器。 這使我們在 EC2 的每個區域的每個群集獲得一個公共 IP,在我們的托管數據中心的每個群集獲得一個公共 IP。 我們將這些原始 IP 添加到了我們的 DNS 服務的基于 DNS 的運行狀況檢查池中,該池定期向每個原始 IP 發出 HTTP 請求。 DNS 服務器會拉出所有在運行狀況檢查中失敗的原始 IP,同時平衡到其他區域的流量。 這樣做的一個附帶好處是,我們可以輕松地拆除一個區域并一次滾動部署(一個區域一次),讓 DNS 處理流量的轉移。
多年來,隨著我們獲得成千上萬的客戶并將流量擴展到每月數十億的頁面瀏覽量,我們最終獲得了運行在 3 個 AWS 區域和受管理數據中心的 7 個集群中的數百個應用程序服務器。 每個集群都有一個主數據庫,在三個區域中都有大量的從屬鏈。 如果沿鏈上的中繼從機死亡,我們將必須重建所有下游從機以重置主機位置。 從操作的角度來看,這變得非常難以管理。 我們還有兩個重要的寫流量瓶頸:在托管數據中心運行的 MySQL 主服務器和在所有從服務器上的 MySQL 單線程復制。 當我們不得不攝取大量新數據時,奴隸通常會落后一些,有時甚至要花 10 個小時或更長時間。 我們需要重新考慮整個堆棧。
## 從干凈的板巖開始
在 2011 年底,我們的堆棧正在工作,但我們希望將其提升到更高的靈活性,性能和可靠性水平。 我們想解決我們的多區域復制問題。 我們希望擺脫單個集群,以便我們可以做更多有趣的跨集群數據關系。 我們想更快地發布。 我們希望成為更多的云原生用戶,以便能夠利用自動擴展等 AWS 功能。 這是很大的變化,但是我們從 Amazon Web Services 獲得了一個新的 CTO,他非常支持這些計劃。
### 組織和技術變更
我們的整體 Java 應用程序分為一組小型服務,每個小型服務均由分散的工程團隊提供支持。 這些團隊負責從開發到質量檢查再到運營的整個服務生命周期。 此外,工程學采用敏捷作為開發方法,以前我們是在瀑布驅動下進行的。 這些更改使我們能夠從高度協調的 8-12 周發布周期轉變為允許任何團隊隨時發布。 一些團隊繼續進行完整的持續集成。
在技術方面,我們決定在新堆棧中全力支持 AWS。 對于我們的記錄系統,我們選擇 Cassandra 是因為它具有多區域復制功能(DynamoDB 在這里失敗)和云原生操作質量。 出于類似原因,ElasticSearch 取代了 Solr。
### 云工程師
我們成立了一個名為 Platform Infrastructure 的團隊,負責構建 AWS 基礎設施和云工具。 平臺基礎架構團隊選擇使用 CloudFormation 在 Amazon 的虛擬私有云環境中的三個區域(us-west-2,us-east-1 和 eu-west-1)中構建 AWS。 然后,平臺基礎架構團隊構建了有用的微服務,例如內部 VPC DNS,內部監控,集中式日志記錄,成本分析,甚至是受 Netflix 啟發的“猴子”,以執行標簽一致性實施。 由于所有內容都使用 CloudFormation,因此我們能夠在幾個小時內迅速為三個區域的 Dev,QA 和 Prod 環境啟動相同的 VPC。 這個內部稱為 Nexus 的新平臺負責“繁重”的基礎架構,并為應用程序團隊構建服務奠定了堅實的基礎。

*Nexus:三個 AWS 區域中跨九個 VPC 的三個環境。 來自類似環境的 VPN。*
### VPC 基礎架構
除了環境標簽,IP 范圍(當然還有數據集)之外,每個 VPC 看起來都相同。 每個 VPC 使用一個/ 20 子網,分為三個/ 24 公共子網和三個/ 22 私有子網,每個 VPC 使用三個可用區。 我們的 CloudFormation 模板還使用自動縮放組 1 來為每個可用區配置 1 臺 NAT 服務器,并設置路由,以便每個專用子網使用其自己的 NAT 服務器進行出站連接。 這允許 AZ 級別的隔離,并使 NAT 帶寬增加三倍,而不是每個 VPC 使用單個 NAT 服務器。

*每個 VPC 使用三個可用區,每個可用區都有自己的 NAT 實例。*
我們為每個工程師提供了一個完整的 AWS IAM 帳戶,使他們可以不受限制地訪問 Amazon 的各種更高級別的服務,例如簡單工作流程服務,Elastic MapReduce 和 Redshift。 我們選擇優化工程師敏捷性而不是效率。 但是為了確保我們的成本不會完全失控,平臺基礎架構團隊會強制執行標簽一致性。 為了保持一致,每個團隊必須在其所有資源中使用兩個標簽:team 和 VPC。 沒有適當標簽的任何 AWS 資源都會自動終止。 擁有一致且強制的標記的一個巨大好處是,我們能夠確定每個團隊的確切成本。
### 數據層
我們的數據團隊提供了三項服務來處理我們的海量數據集,所有這些服務均針對開發人員的生產力和易于管理進行了優化。 為了存儲通用的內容類型而不需要進行模式遷移,并且能夠表達性地查詢我們的數據,EmoDB 和 Polloi 誕生了。 在 Cassandra 的支持下,EmoDB 設計為使用最終一致性(AP)和多主機沖突解決方案來跨越多個數據中心。 它公開了一個非常簡單的 RESTful API,允許用戶創建“表”(不需要模式-僅表名和表放置),并將文檔存儲在這些表中。
EmoDB 仍然缺少 SQL 語義,例如 where,join,group by-基本上是除主鍵查找和表掃描之外的任何其他語義。 這就是 Polloi 的來歷。
Polloi 將實體流索引到 ElasticSearch 集群中。 每個表的索引是根據用非常簡單的域特定語言(DSL)指定給 Polloi 的規則完成的。 一旦 Polloi 根據這些用戶指定的規則為數據建立了索引,我們最終將獲得一個功能強大的 ElasticSearch 集群,該集群不僅可以處理主鍵查找。 而且由于每個 Polloi 集群都有一個自定義的規則集,所以我們有多個 Elasticsearch 集群,每個集群都針對使用它們的應用程序的需求進行了調整。 應用程序可以利用 ElasticSearch 的強大功能來對 PB 級數據進行超快速的查詢響應。
ElasticSearch 仍需要與 EmoDB 保持同步,因此我們創建了數據總線以將 EmoDB 和 Polloi 結合在一起。 Databus 允許應用程序監視 EmoDB 表和文檔上的更新事件,而 Polloi 偵聽 Databus 上的實時更新并適當地索引數據。

*EmoDB,Polloi 和數據總線*
簡而言之,EmoDB 提供了一種簡單的方法來存儲 JSON 對象,對特定應用程序很重要的 Polloi 索引字段,并且 Databus 會將數據的更改通知 Polloi 以及其他任何人。
### 應用層
隨著轉向面向服務的體系結構,我們的工程師不再受限于特定的技術堆棧。 服務團隊可以選擇最適合他們的語言和組件。 盡管大多數團隊仍然選擇使用 Java 來實現其服務,但 Python 和 node.js 是另外兩個受歡迎的選擇。
此外,團隊可以自由選擇 Amazon 的更高級別的服務,例如簡單隊列服務(SQS),簡單通知服務(SNS)甚至簡單工作流服務(SWF)。 現在,我們最成功的服務之一就是很大程度上基于 SWF,使 Bazaarvoice 成為亞馬遜最大的 SWF 用戶之一。 使用這些 AWS 服務使團隊能夠比以前更快地構建其服務。
### CDN & DNS
我們遺留在堆棧中的兩個組件是 CDN 和基于 DNS 的全局流量管理層。 他們倆都運作良好,因此我們不認為需要為改變而做出改變。

*Bazaarvoice 的新堆棧的高級概述。*
## 未來
隨著我們在新堆棧上增加生產工作量,我們一直在尋找改進的地方。 我們計劃在應用程序部署,基于代理的異常檢測方面實現更多自動化,并提高我們的運營效率。 我們還構建了一些有用的 AWS 工具,希望在不久的將來開源。
如果您對我們架構的任何方面都感興趣,請發表評論或 [直接與我聯系](http://twitter.com/victortrac) 。
很好的文章。 我很喜歡閱讀您如何將可搜索性與可伸縮鍵值存儲合并。
解釋得很好,路徑清楚地顯示了簡單應用程序如何轉換為大型企業應用程序。
喜歡該架構的詳細視圖,并且通過視覺插圖更容易理解。 寫得很好
做得好! 我希望這會不斷發展! 這非常有幫助。 很棒的博客!
- 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 內容平臺的經驗教訓