# Flickr 架構
> 原文: [http://highscalability.com/blog/2007/11/13/flickr-architecture.html](http://highscalability.com/blog/2007/11/13/flickr-architecture.html)
**更新:** Flickr 擊中[提供了 20 億張照片](http://www.webware.com/8301-1_109-9816461-2.htm)。 那是很多漢堡包。
Flickr 既是我最喜歡的[鳥](http://www.birds.cornell.edu/AllAboutBirds/BirdGuide/Northern_Flicker.html),也是網絡上領先的照片共享網站。 Flickr 面臨著巨大的挑戰,他們必須處理浩如煙海的內容,包括不斷擴展的新內容,不斷增長的用戶群以及不斷涌現的新功能,同時還要提供出色的性能。 他們是如何做到的呢?
網站:http://www.flickr.com
## 信息來源
* [Flickr 和 PHP](http://www.niallkennedy.com/blog/uploads/flickr_php.pdf) (早期文檔)* [LAMP](http://www.kitchensoap.com/talks/MySQLConf2007-Capacity.pdf) 的容量規劃* [Flickr 的聯合會:每天進行數十億次查詢](http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html),作者 Dathan Pattishall。* [構建可擴展網站](http://www.amazon.com/Building-Scalable-Web-Sites-Applications/dp/0596102356),來自 Flickr 的 Cal Henderson。* [數據庫戰爭故事#3:Flickr [Tim O'Reilly]](http://radar.oreilly.com/2006/04/database-war-stories-3-flickr.html)* [Cal Henderson 的演講](http://www.iamcal.com/talks/)。 很多有用的 PowerPoint 演示文稿。
## 平臺
* 的 PHP* 的 MySQL* 碎片* Memcached 用于緩存層。* 烏賊在反向代理為 HTML 和圖像。* Linux(RedHat)* 聰明的模板* 佩爾* 用于 XML 和電子郵件解析的 PEAR* ImageMagick,用于圖像處理* Java,用于節點服務* 阿帕奇* 用于部署的 SystemImager* Ganglia 用于分布式系統監控* Subcon 將重要的系統配置文件存儲在 Subversion 存儲庫中,以便輕松部署到群集中的計算機上。* Cvsup for distributing and updating collections of files across a network.
## 統計資料
* 每天超過 40 億個查詢。* 魷魚緩存中約有 3500 萬張照片(總計)* 魷魚的 RAM 中有約 200 萬張照片* 約 470M 張照片,每張 4 或 5 個尺寸* 38k req / sec 到 memcached(1200 萬個對象)* 2 PB 原始存儲(周日消耗約 1.5 TB* 每天要添加超過 40 萬張照片
## 架構
* 在此[幻燈片](http://www.slideshare.net/techdude/scalable-web-architectures-common-patterns-and-approaches/138)上可以找到 Flickr 架構的漂亮圖片。 一個簡單的描述是:
-ServerIron 的
---- Squid 緩存對
------ Net App 的
---- PHP App Server
---- -存儲管理器
------主-主分片
------雙樹中央數據庫
------內存緩存群集
------ 大型搜索引擎
-雙樹結構是對 MySQL 的一組自定義更改,它允許通過增量添加沒有環體系結構的母版進行縮放。 這樣可以進行更便宜的擴展,因為與主-主設置相比,您需要的硬件更少,而主-主設置始終需要兩倍的硬件。
-中央數據庫包含“用戶”表之類的數據,該數據包括主用戶
鍵(一些不同的 ID)以及可以在其上找到用戶數據的指針。
* 使用專用服務器獲取靜態內容。* 討論如何支持 Unicode。* 使用無共享架構。* 一切(照片除外)都存儲在數據庫中。* 無狀態意味著他們可以在服務器周圍彈跳人,并且更容易制作他們的 API。* 首先通過復制進行擴展,但這僅有助于讀取。* 通過復制他們要搜索的數據庫部分來創建搜索服務器場。* 使用水平縮放,因此他們只需要添加更多計算機即可。* 通過解析每封電子郵件(用 PHP 交付)來處理從用戶發送的圖片。 電子郵件被解析為任何照片。* 早些時候他們遭受了奴隸主的滯后。 負載太多,它們只有一個故障點。* 他們需要能夠進行實時維護,修復數據等功能,而又不會導致站點停機。* 關于容量規劃的許多優秀資料。 請查看信息源以獲取更多詳細信息。* 采取聯合方法,以便它們可以擴展到更遠的將來:
-分片:我的數據存儲在我的分片上,但是對您的評論執行操作的記錄卻在您的分片上。 在他人的博客
-Global Ring 上發表評論時,就像 DNS 一樣,您需要知道該去哪里,以及誰來控制您的去向。 在每個頁面視圖中,計算當時的數據位置。
-用于連接至分片并保持數據一致的 PHP 邏輯(帶有注釋的 10 行代碼!)* 碎片:
-主數據庫的一部分
-主動主-主環復制:MySQL 4.1 中的一些缺點,因為尊重主-主中的提交。 AutoIncrement ID 自動執行,以使其保持活動狀態。
-分片分配來自新帳戶的隨機數。
-遷移會不時進行,因此您可以刪除某些超級用戶。 如果您有很多照片,則需要平衡…192,000 張照片,700,000 個標簽將花費大約 3-4 分鐘。 遷移是手動完成的。* 單擊收藏夾:
-從緩存中提取照片所有者帳戶,以獲取分片位置(例如,在分片 5 上)
-從緩存中提取我的信息,以獲取我的分片位置(例如,在分片 13 上)
-開始“分布式交易”-回答以下問題:誰收藏了照片? 我最喜歡什么?* 可以從任何分片提問,并恢復數據。 它絕對多余。* 要消除復制滯后…
-每個頁面加載,都會為用戶分配一個存儲桶
-如果主機關閉,請轉到列表中的下一個主機; 如果所有主機都關閉,則顯示錯誤頁面。 他們不使用持久連接,而是建立連接并將其拆除。 這樣,每個頁面加載都會測試連接。* 每個用戶的讀寫都保存在一個分片中。 復制滯后的概念消失了。* 分片中的每個服務器已加載 50%。 關閉每個分片中的 1/2 臺服務器。 因此,如果該碎片中的一臺服務器關閉或處于維護模式,則該碎片中的一臺服務器可以承擔全部負載。 要升級,您只需要關閉一半的碎片,升級一半,然后重復該過程即可。* 在流量激增的一段時間內,它們違反了 50%的規則。 他們每秒執行 6,000-7,000 個查詢。 現在,其每秒最多可查詢 4000 個查詢,以使其保持 50%的負載。* 每頁平均查詢為 27-35 條 SQL 語句。 收藏夾計數是實時的。 API 對數據庫的訪問都是實時的。 達到了實時要求,沒有任何缺點。* 每秒超過 36,000 個查詢-在容量閾值內運行。 流量爆裂,兩倍 36K / qps。* 每個碎片可容納 40 萬多個用戶數據。
-很多數據被存儲兩次。 例如,評論是評論者和被評論者之間關系的一部分。 評論存儲在哪里? 兩個地方怎么樣? 事務用于防止數據不同步:打開事務 1,寫命令,打開事務 2,寫命令,如果一切都很好,則提交第一個事務,如果第一次提交,則提交第二個事務。 但是在第一次提交期間出現故障時,仍然有失敗的可能。* 搜索:
-兩個搜索后端:幾個分片上的分片 35k qps 和 Yahoo!的(專有)網絡搜索
-所有者的單個標簽搜索或批量標簽更改(例如,通過 Organizr) 碎片由于實時性的要求,其他一切都歸 Yahoo!的引擎處理(可能比實時性差 90%)
-考慮一下,這樣您就可以進行類似 Lucene 的搜索* 硬件:
-帶 RHEL4 的 EMT64,16GB RAM
-6 磁盤 15K RPM RAID-10。
-數據大小為 12 TB 用戶元數據(這些不是照片,這只是 innodb ibdata 文件-這些照片要大得多)。
-2U 盒子。 每個分片都有?120GB 的數據。* 備份過程:
-在 cron 作業上進行 ibbackup,該備份在不同時間跨各種分片運行。 熱備份到備用。
-快照是每晚在整個數據庫集群中拍攝的。
-在一次復制復制文件存儲庫中一次寫入或刪除多個大備份文件時,由于復制備份文件,可能會在接下來的幾個小時內破壞該文件存儲庫的性能。 對生產中的照片存儲文件管理器執行此操作不是一個好主意。
-保留所有數據多天備份的成本不菲,這是值得的。 幾天后發現有問題時,保留交錯備份非常有用。 例如 1 天,2 天,10 天和 30 天的備份。* 照片存儲在文件管理器中。 上傳后,它會處理照片,為您提供不同的尺寸,然后完成。 元數據和指向文件管理器的點都存儲在數據庫中。* 聚合數據:非常快,因為它是每個分片的一個過程。 將其粘貼到表中,或從其他用戶分片的另一個副本中恢復數據。* max_connections =每個分片 400 個連接,或每個服務器&分片 800 個連接。 大量的容量和連接。 線程緩存設置為 45,因為您同時進行活動的用戶不超過 45 個。* 標簽:
-標簽與傳統的標準化 RDBM 架構設計不太匹配。 非規范化或繁重的緩存是在數毫秒內為數億個標簽生成標簽云的唯一方法。
-它們的某些數據視圖是由專用處理集群離線計算的,這些集群將結果保存到 MySQL 中,因為某些關系計算起來非常復雜,以至于會吸收所有數據庫 CPU 周期。* 未來方向:
-使用實時 BCP 使其速度更快,因此所有數據中心都可以同時接收對數據層(db,memcache 等)的寫入。 一切都處于活動狀態,不會有任何閑置狀態。
## 得到教訓
* **不僅將您的應用程序視為 Web 應用程序**。 您將擁有 REST API,SOAP API,RSS feed,Atom feed 等。
* **進入無狀態**。 無狀態使系統更簡單,更健壯,可以處理升級而不會退縮。
* 重新架構數據庫很爛。
* **容量計劃**。 盡早將容量規劃納入產品討論中。 從$$美元的人員(和工程管理人員)那里買到值得關注的東西。
* **緩慢啟動**。 不要僅僅因為害怕/高興您的網站會爆炸而購買過多的設備。
* **測量真實度**。 容量規劃數學應該基于真實事物,而不是抽象事物。
* **內置日志記錄和指標**。 使用情況統計信息與服務器統計信息一樣重要。 內置自定義指標,以衡量基于服務器統計信息的實際使用情況。
* **緩存**。 緩存和 RAM 是一切的答案。
* **摘要**。 在數據庫工作,業務邏輯,頁面邏輯,頁面標記和表示層之間創建清晰的抽象層。 這支持快速完成迭代開發。
* **層**。 分層使開發人員可以創建頁面級邏輯,設計人員可以使用這些邏輯來構建用戶體驗。 設計人員可以根據需要詢問頁面邏輯。 這是雙方之間的談判。
* **經常釋放**。 甚至每 30 分鐘一次。
* **大約 97%的時間都忘了小效率**。 過早的優化是萬惡之源。
* **生產中測試**。 內置于體系結構機制(配置標志,負載平衡等)中,通過這些機制,您可以輕松地將新硬件部署到生產中(或從生產中刪除)。
* **忘記基準**。 基準可以很好地了解功能,但不適用于規劃。 人工測試可以提供人工結果,并且時間可以更好地用于真實測試。
* **找出上限**。
-每個服務器最多可以做些什么?
-您離該最大值有多近?趨勢如何?
-MySQL(磁盤 IO?)
-SQUID(磁盤 I 或 CPU?)
-內存緩存(CPU?或網絡?)
* **對您的應用程序類型**的使用模式敏感。
-您有與事件相關的成長嗎? 例如:災難,新聞事件。
-Flickr 在一年的第一個工作日獲得的上傳數量比上一年的任何前一個高峰多 20-40%。
-周日的上載次數比一周的其余時間平均多 40-50%
* **對指數增長的需求敏感**。 更多的用戶意味著更多的內容,更多的內容意味著更多的連接,更多的連接意味著更多的使用。
* **計劃峰**。 能夠處理上下堆疊的峰值負載。
Flickr 僅在其數據庫中存儲對映像的引用,實際文件存儲在網絡上其他位置的單獨存儲服務器上。
Flickr 圖像的典型 URL 如下所示:
`[http://farm1.static.flickr.com/104/301293250_dc284905d0_m.jpg](http://farm1.static.flickr.com/104/301293250_dc284905d0_m.jpg)`
如果將其拆分,我們將得到:
`farm1` -顯然是圖像存儲所在的服務器場。 我還沒有看到其他的價值。
`.static.flickr.com` -相當自我解釋。
`/104` -服務器 ID 號。
`/301293250` -圖像 ID。
`_dc284905d0` -圖像“秘密”。 我認為這是為了防止在未首先從 API 獲取信息的情況下復制圖像。
`_m`-圖像的尺寸。 在這種情況下,“ m”表示中等,但是可以很小,例如拇指。對于標準圖像大小,URL 中沒有此格式的大小。
嗨,
很棒的文章。
我想看看每個點上不同的“選項”在您面前的位置會很有趣。 然后,簡短解釋為什么選擇某些“答案”可能會很有用。
再次感謝您的好東西...
我們將進行很多更改,以通過實時 BCP 使其更快,以便所有數據中心都可以同時接收對數據層(db,memcache 等)的寫操作,即所有活動的對象都不會處于空閑狀態 。
>我們將進行很多更改,以使實時 BCP 更快
很有意思,下一次進化就開始了。 我想知道您如何處理復制。 是在事務上下文中在客戶端庫中還是在后端服務中進行復制? 似乎您將有一個主動-主動計劃,一個人的家庭數據將駐留在哪里,以及您將如何處理來自多個數據中心的更新中的合并數據? 數據中心是否有足夠的能力來處理所有負載,以防萬一發生故障? 您將如何確定數據中心何時癱瘓以及如何在數據中心之間負載均衡流量?
進入多個數據中心是系統復雜度的巨大飛躍。 聽到您對這些問題以及您所面臨的其他問題的思考會很有趣。
嗯...我不能相信寫在 php 上的 flickr ...
托德-
首先-很棒的博客! 很高興在一個地方看到很多這樣的東西。
關于 Flickr 和 BCP:
BCP 的數據庫部分確實很有趣。 在存儲和提供照片方面,我們當然已經擁有 BCP(多個數據中心),因此我們可以為 farmX.static.flickr.com 平衡許多不同數據中心之間的流量。
干杯!
好的通道!
如何理解主-主環復制? 這個結構是穩定的嗎? 謝謝
<cite>最大的圖片網站?</cite> 不。
據 TechCrunch 報道,Facebook 擁有 40 億張照片; flickr 有 20 億美元。
每天有 40 億個查詢,并且仍在增長。 建立社區的速度比老牌收集親朋好友的速度還要快... Flickr 真是一個奇觀! 謝謝,在幕后進行了一次有趣的窺視!
我很高興閱讀 Flickr 使用 SystemImager 進行部署。 我是該軟件的擁護者-它是簡單性和功能性的完美結合。 基于 rsync 或 TFTP / DHCP 等知名工具構建。 我記得在不到一個小時的時間內從頭開始安裝了約 100 臺服務器(為此,我們甚至沒有使用 systemimager / flamethrower)。 易于安裝且非常靈活(如果您有奇特的硬件,只需自行準備內核或手動修復新節點的安裝腳本,SI 對此將非常滿意)。 還可以看一下 GUI 監視守護程序/工具(si_monitor / si_monitortk)。
如何下載圖像。
靜態服務器上的 apache 嗎?
顯示您對 php 的了解
每天有 40 億個查詢,并且仍在增長。 建立社區的速度比老牌收集親朋好友的速度還要快... Flickr 真是一個奇觀! 謝謝,在幕后進行了一次有趣的窺視!
How to download the images.
An apache on static servers ?
似乎將您的圖像存儲在數據庫中可能會使站點速度變慢。
似乎將您的圖像存儲在其中?
shows what you know about php
毫無疑問,Flicr 的架構很棒。 只是想說,聰明人可以由 Blitz 更改,有一些比較表 [http://alexeyrybak.com/blitz/blitz_en.html](http://alexeyrybak.com/blitz/blitz_en.html)
是否有更簡單的解決方案來管理數據庫和文件的組合圖像?
很好
精彩
We are going to change a lot of things, to make it faster with real-time BCP, so all datacenters can receive writes to the datalayer (db, memcache, etc) all at the same time i.e. everything is active nothing will ever be idle.
本文檔確實對希望建立大型站點的新手有所幫助。
顯示您對 php 的了解
Flickr only store a reference to an image in their databases, the actual file is stored on a separate storage server elsewhere on the network.
- 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 內容平臺的經驗教訓