# Mailinator 架構
> 原文: [http://highscalability.com/blog/2008/1/24/mailinator-architecture.html](http://highscalability.com/blog/2008/1/24/mailinator-architecture.html)
**更新:**在[中進行應用搜索的有趣探索,如何每秒搜索 185 封電子郵件中的單詞“ pen1s”](http://mailinator.blogspot.com/2008/01/how-to-search-for-word-pen1s-in-185.html) 。 如果 indexOf 沒有減少,您會更加努力。
曾經有一個醉酒的朋友啟發您創建了首個受到數百萬人喜愛,被數千人顛覆的互聯網服務,同時每年通過[欺騙](http://www.flickr.com/photos/arcticstylings/814612466)處理超過 12 億封電子郵件 ]舊服務器? 這就是 Paul Tyma 來建立 Mailinator 的方式。
Mailinator 是一項免費的無設置 Web 服務,用于通過創建一次性注冊電子郵件地址來阻止惡意垃圾郵件發送者。 如果您不給網站提供真實的電子郵件地址,那么他們就不會向您發送垃圾郵件。 他們反而對 Mailinator 發出垃圾郵件:-)
我喜歡從角度出發進行設計,而 Mailinator 有一個巨大的挑戰:性能第一,第二和最后。 為什么? 因為 Mailinator 是免費的,所以 Paul 可以展示他對設計的不同看法。 競爭對手購買大型 Iron 來處理負荷時,Paul 卻提出了一個大主意:選擇正確的問題并設計一個適合該問題的設計。 不再。 不少 結果是一個完美的系統架構十四行詩,在形式的約束之內美。
Mailinator 作為垃圾郵件破壞超級英雄如何開展工作?
網站:http://mailinator.com/
## 信息來源
* [Mailinator 的體系結構](http://mailinator.blogspot.com/2007/01/architecture-of-mailinator.html)* [Mailinator's 2006 Stats](http://mailinator.blogspot.com/2007/02/mailinators-2006-stats.html)
## 該平臺
* 的 Linux* 雄貓* Java
## 統計資料
* 2007 年將處理大約 12.9 億封電子郵件。2006 年為 450.74 百萬封電子郵件。2005 年為 280.68 百萬封電子郵件。* 峰值速率為每天 650 萬封電子郵件或 4513 個/分鐘或 75 個/秒。* Mailinator 運行在非常適度的計算機上,該計算機具有 AMD 2Ghz Athlon 處理器,1GB RAM(使用的內存更少)和低性能的 80G IDE 硬盤驅動器。 而且機器根本不是很忙。* 即使在持續的垃圾郵件攻擊和高峰值負載下,Mailinator 也可以無人值守運行數月,并且很少丟失電子郵件。
## 架構
* 擁有免費系統意味著該系統不一定是完美的。 因此,設計目標是:
-設計一個系統,該系統重視生存,甚至是用戶。 生存是關鍵,因為 Mailinator 必須每天抵御攻擊。
-為用戶提供 99.99%的正常運行時間和準確性。 更高的正常運行時間目標將是不切實際且成本高昂的。 而且由于該服務是免費的,因此這對于用戶來說只是游戲規則的一部分。
-支持以下服務模型:用戶注冊某些內容,轉到 Mailinator,單擊訂閱鏈接,然后忘記它。 這意味著電子郵件不必永久存儲在磁盤上。 電子郵件可以駐留在 RAM 中,因為它是臨時的(3-4 小時)。 如果您想要一個真實的郵箱,請使用其他服務。* 電子郵件處理的原始流程是:
-Sendmail 在單個磁盤郵箱中接收到電子郵件。
-基于 Java 的 Mailinator 使用 IMAP 和/或 POP(隨時間變化)抓取電子郵件并將其刪除。
-系統隨后將所有電子郵件加載到內存中,然后將其放置在那里。
-達到 20,000 個內存限制后,最早的電子郵件便被推出。* 原始體系結構運行良好:
-它穩定并且一次可以使用幾個月。
-它幾乎使用了所有 1GB 的 RAM。
-每天收到的電子郵件速率開始超過 800,000 時出現問題。 由于 Mailinator 和電子郵件子系統之間的磁盤爭用,系統崩潰了。* 新架構:
-想法是刪除磁盤上的路徑,這是通過完整的系統重寫來完成的。
-Web 應用程序,電子郵件服務器和所有電子郵件存儲都在一個 JVM 中運行。
-Sendmail 被替換為自定義的 SMTP 服務器。 由于 Mailinator 的性質,因此不需要完整的 SMTP 服務器。 Mailinator 不需要發送電子郵件。 它的主要職責是盡快接受或拒絕電子郵件。 這是分層的缺點。 分層通常是擴展的關鍵策略,但由于關鍵決策最好在堆棧的最高級別進行處理,因此會降低性能。 因此,當許多 RAM 和周期竊取操作已經完成時,工作流將流經系統,僅在較低層進行轉儲。 因此,決定使用定制 SMTP 服務器是一個有趣而勇敢的決定。 此時大多數人只會添加更多硬件。 他們不會錯,但是看到這條路也很有趣。 也許有了更多 [DOM 和 AOP](http://radio.weblogs.com/0103955/categories/stupidHumanProgramming/2007/06/20.html#a244) 這樣的體系結構,我們可以展平堆棧并在需要時獲得更好的性能。
-現在 Mailinator 直接接收電子郵件,進行解析并將其存儲到內存中。 磁盤被完全繞過,并且磁盤仍然相當空閑。
-系統關閉時,電子郵件將寫入磁盤,因此可以在啟動時重新加載它們。
-記錄已關閉,以消除傳票的風險。 執行日志記錄時,日志數據是成批寫入的,因此在一次磁盤寫入中將寫入數千行日志。 這樣可以最大程度地減少磁盤爭用,否則會丟失有用的診斷信息。
-系統使用少于 300 個線程。 不需要更多。
-到達后,每封電子郵件都會通過過濾器系統,如果所有過濾器都通過,則會存儲在 RAM 中。
-每個收件箱僅限于 10 封電子郵件,因此流行的收件箱,例如 [[受電子郵件保護]](/cdn-cgi/l/email-protection) ,無法使系統崩潰。
-傳入的電子郵件不得超過 100k,所有附件都將立即被丟棄。 這樣可以節省 RAM。* 電子郵件在 RAM 中壓縮:
-由于從未查看過 99%的電子郵件,因此壓縮電子郵件可以節省 RAM。 當有人看著它們時,它們只有
被解壓縮。
-Mailinator 可以使用不到 300MB 的內存在 RAM 中存儲約 80,000 封電子郵件,而原始設計中的 1GB RAM 中存儲了 20,000 封電子郵件。
-使用此池,平均電子郵件壽命約為 3-4 小時。
-可能有 200,000 封電子郵件可以容納在內存中,但是并沒有真正的需求。
-這是我喜歡的設計細節之一,因為它基于真實的應用程序使用模式。 RAM 很珍貴,而 CPU 卻不是,所以知道大多數情況下您不必將 CPU 命中兩次,使用壓縮來節省 RAM 卻以 CPU 為代價。* Mailinator 不保證匿名和隱私:
-沒有隱私。 任何人都可以隨時閱讀任何收件箱。
-放寬這些約束,同時又令人震驚,使設計更加簡單。
-對于用戶而言,這很簡單,因為不需要注冊。 當網站要求您提供電子郵件地址時,您只需輸入一個 mailinator 地址即可。 您無需創建單獨的帳戶。 鍵入電子郵件地址可以有效地創建 mailinator 帳戶。 簡單。
-在實踐中,用戶仍然可以獲得高度的隱私。* 可生存性的目標導致積極的垃圾郵件過濾。
-Mailinator 沒有針對 SPAM 的任何內容,但是由于 SPAM 太多,因此在威脅到系統正常運行時必須將其過濾掉。
-這導致以下規則:如果您做任何事情(無論是否發垃圾郵件)都開始影響系統,則您的電子郵件將被拒絕,您可能會被鎖定。* 要被接受,電子郵件必須通過以下過濾鏈:
-退回:所有退回的電子郵件都會被丟棄。
-IP:丟棄了來自單個 IP 的過多電子郵件
-主題:丟棄了有關同一主題的過多電子郵件
-便箋:包含了表示仇恨或犯罪或僅是徹頭徹尾的討厭表情的主題 。* 從單個 IP 地址
中幸存的電子郵件泛濫-AgingHashmap 用于過濾來自特定 IP 地址的垃圾郵件發送者。 當電子郵件到達 IP 地址時,會將 IP 放入地圖中,并為所有后續電子郵件增加計數器。
-在一段時間內沒有電子郵件后,計數器將被清除。
-當發件人達到電子郵件計數閾值時,將阻止該發件人。 這樣可以防止發件人淹沒系統。
-許多系統使用這種邏輯來保護各種資源,例如注釋。 您可以將 memcached 用于分布式系統中的相同目的。* 防范僵尸攻擊:
-垃圾郵件可以從稱為 IP 僵尸網絡的不同 IP 地址的大型坐標集中發送。 相同的消息是從數千個不同的 IP 地址發送的,因此用于阻止來自單個 IP 地址的電子郵件的技術還不夠。
-這種過濾比 IP 阻止要復雜一些,因為您必須解析足夠多的
電子郵件才能獲得主題行,而匹配主題字符串則需要更多的資源。
-當 2 分鐘之內有 20 封電子郵件發送同一主題時,所有帶有該主題的電子郵件將被禁止 1 小時。
-有趣的是,并沒有永遠禁止主題,因為這意味著 Mailinator 將不得不永遠跟蹤主題,并且系統設計固有地是瞬態的。 我認為這很聰明。 通過一些“不好的”電子郵件,通過系統變得簡單得多,因為不必管理任何持久性列表,并且該列表肯定會成為瓶頸。 一個具有更嚴格的 SPAM 過濾目標的系統將不得不創建一個更加復雜且不那么健壯的體系結構。
-僅有 9%的電子郵件被此過濾器阻止。
-從我的閱讀中,Mailinator 僅針對 IP 和主題進行過濾,因此不必閱讀電子郵件正文即可接受或拒絕電子郵件。 當大多數電子郵件將被拒絕時,這可以最大程度地減少資源使用。* 為減輕 DOS 攻擊的危險,請執行以下操作:
-丟棄在特定時間段內保持沉默的所有連接。
-Mailinator 會非常緩慢地(例如 10 或 20 或 30 秒)將回復發送給電子郵件發件人,即使是非常少量的數據也是如此。 這會減慢試圖盡快發送垃圾郵件的垃圾郵件發送者的速度,并可能使他們重新考慮再次向該地址發送電子郵件。 繁忙時段的等待時間減少了,因此電子郵件不會丟失。
## 得到教訓
* **完善是陷阱**。 驅動器使 100%的一切變得更加復雜。 如果您去過那些會議,您就會知道他們的樣子。 哦,我們不能這樣或那樣做,因為發生錯誤的可能性為 0.01%。 而是問:你會多么不完美,不夠好?
* **扔掉的東西與**存放的東西一樣重要。 我們對如何設計系統有許多先入之見。 我們理所當然地認為您需要橫向擴展,幾天后需要訪問電子郵件,并且必須為每個人提供
私人帳戶。 但是您真的需要這些東西嗎? 你能扔什么?
* **了解系統的用途并進行相應設計**。 所有人都擁有一切意味著您對任何人都不是。 將電子郵件保留很短的時間,允許一些 SPAM 通過,并接受少于 100%的正常運行時間,這將為該系統創建一個強大的愿景,從而有助于在各個領域推動設計。 如果您對系統的含義和需求有非常深刻的了解,則只能構建自己的 SMTP 服務器。 我知道這絕不會成為我的主意。 我會增加更多的硬件。
* **對于常見情況,在提交資源**之前快速失敗。 很高比例的電子郵件被拒絕,因此在堆棧中盡早拒絕它是有意義的,以最大程度地減少完成任務的資源。 找出如何盡快使經常發生故障的物品短路。 這很重要,并且經常被忽視。
* **效率通常意味著您自己建立**。 現成的工具往往可以完成全部工作。 如果您只需要完成部分工作,則可以編寫運行速度更快的自定義組件。
* **自適應地忘記**。 有點失敗是可以的。 不需要永遠記住所有被阻止的 IP 地址。 讓塊決策從本地數據而不是全局狀態開始。 這是功能強大且簡單而強大的體系結構。
* **Java 不必太慢**。 說夠了。
* **避開磁盤**。 許多應用程序需要使用磁盤,但是磁盤始終是瓶頸。 您可以使用其他創意策略在磁盤周圍進行設計嗎?
* **限制資源使用量**。 放入約束,例如收件箱大小,這將使您的系統無法控制地突刺。 必須在資源有限的情況下避免無限制的資源使用。
* **壓縮數據**。 嘗試節省 RAM 時,壓縮可能是一大勝利
。 我發現使用壓縮的開銷很少,而內存使用量卻下降了一半以上。 如果您是在本地進行通信,則只需讓客戶端對數據進行編碼并保持編碼狀態即可。 構建 API 無需解碼完整的消息即可訪問數據。
* **使用固定大小的資源池來處理負載**。 許多應用程序無法控制資源的使用,例如內存,如果使用過多,它們就會崩潰。 要創建一個真正強大的系統,請修復您的資源,并在這些資源已滿時放棄工作。 您可以老化資源,給予優先訪問權,給予公平訪問權或使用任何其他邏輯來仲裁資源訪問權,但是由于資源將受到限制,因此您將承受負載。
* **如果不保留數據,則不會傳喚**。 由于 Mailinator 不存儲電子郵件或在磁盤上登錄日志,因此可以進行傳票。
* **使用您所知道的**。 我們已經看過幾次這一課了。 保羅比其他任何人都更了解 Java,因此他使用了 Java,使其得以運行,然后他完成了工作。
* **查找您自己的 Mailinators** 。 當然,Mailinator 是一個小型系統。 在大型系統中,這只是一個小功能,但是您的系統由許多 Mailinator 大小的項目組成。 如果您開發了諸如 Mailinator 之類的
,該怎么辦?
* **KISS 存在,盡管很少見**。 總是談論保持簡單,但是我們很少顯示真實的例子。 這主要是因為您的方法很復雜,而我的方法卻很簡單,因為這是我的方法。 Mailinator 是簡單設計的一個很好的例子。
* **健壯性是體系結構**的功能。 要創建有效利用內存并能抵御大量垃圾郵件攻擊的設計,需要一種能夠查看整個堆棧的架構方法。
## 相關文章
* [PlentyOfFish](http://highscalability.com/plentyoffish-architecture) 擁護直截了當的裸露骨頭。* [Varnish](http://highscalability.com/links/goto/117/) 巧妙地使用 OS 功能來找到令人難以置信的性能。* [ThemBid](http://highscalability.com/thembid-architecture) 優雅地將開源組件組合在一起。
很棒的閱讀。
這屬于“我曾想過的想法”的構想。
我不知道他如何獲得資助?
[http://codershangout.com](http://codershangout.com)
編碼人員可以進行視頻群聊的地方!
有資金嗎? 自掏腰包。 這是他的愛好。
- 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 內容平臺的經驗教訓