# Sify.com 體系結構-每秒 3900 個請求的門戶
> 原文: [http://highscalability.com/blog/2010/5/10/sifycom-architecture-a-portal-at-3900-requests-per-second.html](http://highscalability.com/blog/2010/5/10/sifycom-architecture-a-portal-at-3900-requests-per-second.html)

Sify.com 是印度領先的門戶網站之一。 Samachar.com 由同一家公司擁有,是印度頂級的內容匯總網站之一,主要針對來自世界各地的非居民印度人。 Sify 的建筑師 Ramki Subramanian 非常慷慨地描述了這兩個站點的通用后端。 他們的架構最值得注意的方面之一是 Sify 不使用傳統數據庫。 他們查詢 Solr,然后從分布式文件系統中檢索記錄。 多年以來,許多人爭相使用數據庫之上的文件系統。 文件系統可以用于鍵值查找,但不適用于查詢,使用 Solr 是解決該問題的好方法。 他們系統的另一個有趣的方面是使用 Drools 進行智能緩存無效化。 隨著我們在多個專業服務中復制越來越多的數據,如何使它們[同步](http://www.youtube.com/results?search_query=in+sync)成為一個難題。 規則引擎是一種聰明的方法。
## **平臺/工具**
* 的 Linux
* [淺色](http://www.lighttpd.net/)
* PHP5
* 記憶快取
* 阿帕奇·索爾(Apache Solr)
* Apache ActiveMQ /駱駝
* GFS(群集文件系統)
* 德語
* 雷迪斯
* 帶有 ActiveMQ 的子。
* 漆
* 流口水
## 統計資料
* 每月約有 1.5 億次網頁瀏覽。
* 服務 3900 請求/秒。
* 后端在托管約 30 個 VM 的 4 個刀片上運行。
## 建筑
* 該系統已完全虛擬化。 我們還使用了大多數 VM 功能,例如當一個刀片發生故障或需要重新分配負載時,我們在刀片之間移動 VM。 我們已經對虛擬機進行了模板化,因此我們可以在不到 20 分鐘的時間內配置系統。 它目前是手動的,但是在系統的下一版本中,我們計劃自動化整個供應,調試,退役,在 VM 周圍移動以及自動縮放。
* 沒有數據庫
* 100%無狀態
* RESTful 接口支持:XML,JSON,JS,RSS / Atom
* 寫入和讀取具有不同的路徑。
* 通過 ActiveMQ / Camel 將寫入排隊,轉換并路由到其他 HTTP 服務。 它用作 ESB(企業服務總線)。
* 像搜索一樣的讀取操作是由 Web 服務器直接從 PHP 處理的。
* Solr 用作索引/搜索引擎。 如果有人要求提供密鑰的文件,則會直接將其送出存儲空間。 如果有人說“給我所有在 author = Todd 處的文件,”它將打到 Solr,然后存儲。 使用 Apache Solr 作為我們的搜索引擎來執行查詢,并且我們有相同的分布式設置。
* 所有文件都存儲在群集文件系統(GFS)中。 查詢打到 Solr,它返回我們想要的數據。 如果我們需要完整的數據,則在從搜索中獲取 ID 后,我們將訪問存儲。 這種方法使系統完全可以水平擴展,并且對數據庫的依賴性為零。 升級到最新版本后,對我們來說效果很好。 我們僅運行 2 個節點進行存儲,如果需要,我們可以再添加幾個節點。
* 輕巧的前端 GFS。 Lighty 對于提供靜態文件確實非常好。 對于我們擁有的文件類型(主要是小的 XML 和圖像),每秒可以隨意接收 8000 多個請求。
* 所有最新的 NoSQL 數據庫(如 CouchDB,MongoDB,Cassandra 等)都將替代我們的存儲層。 在搜索功能上,它們都不接近 Solr / Lucene。 就查詢而言,MongoDB 是最好的,但是``包含''之類的搜索需要使用正則表達式來完成,這對 500 萬個文檔來說是一場災難! 我們相信,目前,基于分布式文件系統的方法比許多用于存儲的 NoSQL 數據庫系統更具可伸縮性。
## 未來
* 用于事件分析(用戶點擊,實時圖表和趨勢)的 CouchDB 或 Hadoop 或 Cassandra。
* 使用 Drools 的智能緩存失效。 數據將通過隊列推送,而 Drools 引擎將確定哪些 URL 需要無效。 它將在我們的緩存引擎或 Akamai 中清除它們。 方法是這樣的。 查詢(URL)到達我們的后端后,我們將記錄該查詢。 然后,記錄的查詢將被解析并推送到 Drools 系統中。 如果該輸入尚不存在,則系統會將其輸入并動態創建規則到系統中。 那是 A 部分。然后,我們的 Content Ingestion 系統將繼續將進入 Drools 隊列的所有內容推送。 數據輸入后,我們將針對內容觸發所有規則。 對于每個匹配的規則,生成 URL,然后我們將針對這些 URL 向緩存服務器(Akamai 或 Varnish)發出刪除請求。 多數民眾贊成在 B 部分。B 部分并不像上面提到的那么簡單。 會有很多不同的情況。 例如,我們在查詢中支持“ NOW”,大于,小于,NOT 等,這確實會讓我們頭疼。
* 我們這樣做的主要原因主要有兩個,高速緩存命中率極高,并且幾乎可以立即更新最終用戶。 請記住,過去從未經歷過的兩個原因!
* 我認為它將很好并且可以擴展。 Drools 確實擅長解決此類問題。 同樣在分析中,我們發現查詢在許多天內都是恒定的。 例如,我們每天有將近 40,000 個不同的查詢,并且每天都會以幾乎相同的模式重復。 對于該查詢,只有數據會更改。 因此,我們可以設置多個實例并僅在不同系統中復制規則,這樣我們也可以水平擴展它。
* 同步讀取,但是更少的層,更少的 PHP 干預和套接字連接。
* 使用 Queue / ESB(Mule)進行分布式(寫入不同的分片)和異步寫入。
* 使用 Varnish 或 Akamai 進行大量緩存。
* 殺死 gron 并保持更接近實時的守護進程。
* 使用 Gearman 進行并行和后臺處理,以及用于自動縮放處理的自動附加處理功能。
* 使用 Kaazing 或 eJabberd 向最終用戶和內部系統實時分發內容。
* Redis 用于緩存內容摘要以確定重復項。
* 我們正在尋求使整個事情更易于管理,并從 app-admin 內部打開 VM 和進程。 我們研究了 Apache Zookeeper,研究了 VMWare 和 Xen 提供的 RESTful API,并與我們的系統進行了集成。 這將使我們能夠進行自動縮放。
* 我們擁有的最大優勢是數據中心的帶寬不受限制,因為我們自己就是 ISP。 我正在研究在系統中利用該優勢的方法,并了解如何構建可以并行快速處理大量內容的集群。
## 得到教訓
* ActiveMQ 多次被證明是災難性的! 套接字處理非常差。 從重啟開始,我們通常會在不到 5 分鐘的時間內達到 TCP 套接字限制。 盡管它聲稱已在 5.0 和 5.2 中進行了修復,但對我們而言并不起作用。 我們以多種方式嘗試使它的壽命更長,至少一天。 我們通過部署帶有新版本的舊庫來解決問題,并使它的使用時間更長。 畢竟,我們部署了兩個 MQ(消息隊列),以確保至少對內容進行編輯更新可以正常進行。
* 后來我們發現問題不僅在于此,而且使用主題也是一個問題。 僅對四個訂閱者使用 Topic 會使 MQ 在數小時內掛起。 在大量脫發后,我們取消了整個基于主題的方法,并將它們全部排入隊列。 數據進入主隊列后,我們將數據推入四個不同的隊列。 問題已解決。 當然,在 15 天左右的時間內,它將拋出一些異常或 OOME(內存不足錯誤),并迫使我們重新啟動。 我們只是與它共存。 在下一個版本中,我們將使用 Mule 來處理所有這些問題,并且也將集群同時進行。 我們還試圖找到一種方法來按消息順序擺脫依賴關系,這將使分發變得更容易。
* 索爾
* 重新啟動。 我們必須非常頻繁地重新啟動它。 尚不十分清楚原因,但是因為它具有冗余性,所以我們比 MQ 更好。 通過執行查詢,我們已達到自動重啟的程度,如果沒有響應或超時,我們將重啟 Solr。
* 復雜查詢。 對于復雜的查詢,查詢響應時間確實很差。 我們有大約 500 萬個文檔,并且很多查詢的確在不到一秒鐘的時間內返回,但是當我們有一個帶有幾個“ NOT”以及許多字段和條件的查詢時,它需要 100 秒鐘以上的時間。 我們通過將查詢拆分為更簡單的查詢并將結果合并到 PHP 空間中來解決此問題。
* 即時的。 我們遇到的另一個嚴重問題是 Solr 不能實時反映所做的更改。 大約需要 4 分鐘到 10 分鐘! 考慮到我們所處的行業和競爭,遲到的新聞 10 分鐘使我們變得無關緊要。 看過 Zoie-Solr 插件,但我們的 ID 是字母數字,而 Zoie 不支持。 我們正在尋找自己在 Zoie 中修復的問題。
* GFS 鎖定問題。 對于我們來說,這曾經是一個非常嚴重的問題。 GFS 將鎖定整個群集,這將使我們的存儲完全不可訪問。 GFS 4.0 出現問題,我們升級到 5.0,從那時起似乎還不錯。
* Lighty 和 PHP 不太融洽。 性能方面都不錯,但是 Apache / PHP 更穩定。 由于 PHP_FCGI 進程掛起,Lighty 有時會胡思亂想,CPU 使用率達到 100%。
我非常感謝 Ramki 花時間寫關于他們的系統如何工作的信息。 希望您能從他們的經驗中學到一些有用的東西,這些對您自己的冒險有幫助。 如果您想共享您的優秀系統的架構,請同時向其付費和向后付費,請 [與聯系我](../../contact/),我們將開始。
相當有趣的信息! 謝謝分享! 每秒 3900 個請求非常棒。
目標響應時間是多少?
拉姆基
Lighty 曾經有內存泄漏。 Nginx 或 Cherokee 可能值得一看。 將 MogileFS 視為 GFS 的替代品-GFS 更像是 POSIX 文件系統的替代品,但是 MogileFS 可能“足夠”,并且應該具有更大的可擴展性。 Solr -也許您需要分片搜索引擎,但這可能比它值得的工作更多。 ;-)使用 ActiveMQ,您是否考慮過將一些較輕的排隊需求轉移到 Redis? 它具有可用于某些類型排隊的原子構造,并且幾乎可以肯定會更快。
感謝如此出色的文章!
杰米
精彩的帖子! 很高興看到有人實際構建事物而不是遵循流行語。
這些“ NoSQL”文檔存儲為您直接的分布式文件系統添加的功能正是使搜索與數據保持同步的能力。 有趣的是,與“愚蠢”的文檔存儲(文件系統)相比,您實際上為此功能付出了高昂的代價。 在我看來,保持這種狀態的關鍵是在 Solr 搜索和數據之間出現延遲。 您愿意允許多少時間?
考慮到這一點,對我來說,將 CouchDB 用作分布式文件系統似乎是個好主意。 我不敢相信它會比您使用的任何工具都要慢。 還有...繼續使用 Solr! 僅在需要同步搜索時才退回到 CouchDB“視圖”。
這似乎與“ NoSQL”的智慧幾乎相反,但是從您的經驗來看,這似乎是一個很好的實用結論。
您是在 4 刀片系統上直接處理 3900 Request / second,還是還包括 Akamai 流量?
您如何處理負載平衡?
> “后端在托管約 30 個 VM 的 4 個刀片上運行。”
what kind of 'front-end' infrastructure do you have?
What kind of VM are you running? VMWare? Xen? KVM?
聽起來好像他們正在將 HP Blade Matrix 與 VMware 一起使用。
“每月有 1.5 億頁面瀏覽量”
“每秒可處理 3900 請求”。
算一下:3900 * 60 * 60 =每小時請求 14.000.000
每天 8 小時:每天 14.040.000 * 8 = 112.000.000
因此,其中一個 上面的值
Raghuraman:目標響應時間是多少?
拉姆基:我們不需要在后端系統中執行超過數千個 rp,因為前端系統的許多部分速度都較慢。 畢竟,系統中的薄弱環節定義了最終的要求/秒! 如果我們可以使前端數量相同,那就太好了!
杰米:
Lighty 曾經有內存泄漏。 Nginx 或 Cherokee 可能值得一看。
Ramki:到目前為止,Lighty 對我們的表現一直很好,盡管在某些情況下,lighty 會讓我們頭疼。 Nginx 是一個不錯的選擇,我們可以嘗試一下。
杰米(Jamie):將 MogileFS 視為 GFS 的替代品-GFS 更像是 POSIX 文件系統的替代品,但 MogileFS 可能“足夠”并且應該具有更大的擴展性。
Ramki:該系統的第一個版本在 MogileFS 中運行,并很快成為我們的大問題。 給我,在數據庫中存儲文件的元信息是一場災難。 在短短幾周內,數據庫記錄就接近 150 萬。 查詢變得非常緩慢...但是我喜歡基于 WebDAV 的方法的想法,因此我們嘗試了不使用 MogileFS,但是我們的 LB 當時不支持 HTTP 1.1,因此我們取消了整個想法并將其移至文件系統。
杰米(Jamie):索爾(Solr)-也許您需要分片搜索引擎,但這可能比它的價值還多。 ;-)
拉姆基:是的,我們已經記了這個。
杰米:使用 ActiveMQ,您是否考慮過將一些較輕的排隊需求轉移到 Redis? 它具有可用于某些類型排隊的原子構造,并且幾乎可以肯定會更快。
Ramki:我們對 ActiveMQ 有點太深了。 它主要執行路由,服務抽象并為我們保證交付。 對于那些,我不會押注 Redis。 希望我回答了你的問題。
Tal:這些“ NoSQL”文檔存儲為您直接的分布式文件系統添加的功能正是使搜索與數據保持同步的能力。 有趣的是,與“愚蠢”的文檔存儲(文件系統)相比,您實際上為此功能付出了高昂的代價。 在我看來,保持這種狀態的關鍵是在 Solr 搜索和數據之間出現延遲。 您愿意允許多少時間?
Ramki:如文章中所述,DFS 用作鍵值存儲。 并且我們已經設置了 MQ 先寫入存儲然后再寫入 Solr。雖然將其推入 Q 使其異步,但數據的移動在 Q 內部是順序的。這樣一來,您將無法獲得返回任何不存在的內容的搜索 在存儲中。 同樣,假設存儲節點位于本地附近,則數據會立即反映出來。 希望我回答了你的問題。
Tal:考慮到這一點,對我來說,將 CouchDB 用作分布式文件系統似乎是個好主意。 我不敢相信它會比您使用的任何工具都要慢。 還有...繼續使用 Solr! 僅在需要同步搜索時才退回到 CouchDB“視圖”。
Ramki:我們正在嘗試使用 CouchDB 進行分析。 在開發環境中,我們的速度僅為每秒 1000 請求。 有了存儲和輕松的設置,我們便可以輕松完成 8000+ reqs / s。 當然,1000 res / s 也是非常好的數字。
Tal:這似乎與“ NoSQL”的智慧幾乎相反,但是從您的經驗來看,這似乎是一個很好的實用結論。
Ramki:不確定是否與 NoSQL 相反。 原則上我們離它更近。 例如:沒有“ sql” :),幾乎沒有架構。 我說這幾乎是因為 Solr 迫使我們擁有一些架構,分布式和鍵值之類的存儲。
Maxim:您是在 4 刀片系統上直接處理 3900 Request / second,還是還包括 Akamai 流量?
Ramki:這里沒有 Akamai。 它是我們所有的后端,不在 akamai 上。 一旦我們有了用于 URL 無效的緩存引擎和規則方法,我們將遠遠超過 3900 r / s。 我們的開發測試是 8500+ r / s 的清漆。 但是請記住,考慮到延遲,這些數字可能并不完全是我們將從外界得到的數字。
Maxim:您如何處理負載平衡?
拉姆基:這現在可以通過一種彎腰/麻木的方式來解決:)。 我們的資源有限,但是我們需要“無 SPOF”,因此我們在同一個 LB 內針對不同層有點循環。 考慮到 H / W LB 的成本,我們可能不得不采用這種方法。 我們正在尋找 S / W LB 作為替代方案,但我們需要使用刀片來部署它們! :)
塔爾:您擁有什么樣的“前端”基礎架構?
Ramki:我們也在這里遷移到基于 VM 的環境。 但是再過幾個月,我們將完全使用 VM,并在我們現在構建的系統之上運行。 舊系統將被淘汰。
希望我已經回答了問題。
請確保提出建議。 我希望得到社區的反饋。
-拉姆基
嗨,
我研究的一件事是每秒 3900 req。
您的每日網頁價值為 1544943(http://www.websiteoutlook.com/www.sify.com)。
因此,假設每位用戶 5 次瀏覽量將帶來每天 30 萬用戶或每小時 12500 位用戶或每分鐘 208 位用戶。
或大約每秒 3 個用戶訪問服務器。
所以我的問題是 3 個用戶每秒可以生成 3900 個請求嗎?
RB & GK:如前所述,整篇文章都是關于后端而不是前端。 正如您在我上面的評論中所看到的那樣,“如果我們能夠使前端數量大約相同,那將是非常棒的事情!”
后端不僅會受到前端的攻擊。 后端有許多直接 API 調用。
因此,以上計算并不能完全轉換為后端匹配。
也就是說,我們已經在開發前端,希望我們能達到接近后端的數字。
如果你們在同一方面確實有一些投入,那就太好了。
-ramki
工具的傳播非常有趣。 您對文件系統復制器有何建議? 你是怎樣做的 ?
我們在一個城市中擁有 Windows SAN 存儲。 我們想將添加和刪除的文件實時復制到另一個城市的另一個 Windows 框中。 僅當完全寫入文件時,才應復制文件。
杰米:“ Lighty 曾經有內存泄漏。”
過去……過去……一段時間以前……這有什么意義?
Apache 過去有一些問題,nginx 過去有一些問題。
軟件并不完美,并且會通過更新得到修復。
我運行了一堆 lightys,它們處理幾乎相同數量的靜態文件請求(8000 req / s)而不會費力。
以及 PHP 的一些 Hundret re / s 也沒有問題。
很多人將內存泄漏誤認為是 Lighty 緩沖來自后端(例如 PHP)的請求。 因此,如果您通過 Lighty 從 PHP 發送 10MB 數據,它將使用 10MB。 并且它將重新使用此內存以供以后的請求使用。
為什么這樣做? 好吧,它有助于加快請求的速度,因為您只有數量有限的 PHP 后端,否則這些后端將被速度較慢的客戶端占用。 它可以更快地釋放 PHP“插槽”。
我會在任何時候減少使用 RAM 的情況。
要記住的唯一事情是不要通過 lighty 通過 PHP 發送大文件,這反而是一個壞主意,因為它還有其他一些原因(為此使用 X-sendfile 標頭或直接提供它們)。
因此,為了做出決定,而不是走“呃,但我聽說有人過去有問題..”,而不得不*立即*并針對您的用例來研究它的工作方式。
我想講的教訓是:使用現在(以及將來當然)可以最好地完成任務的工具。
我以前曾經在 PHP 中看到過 100%CPU 的情況,這很奇怪,在某些情況下更新 PHP 很有幫助。 不幸的是,PHP 的 FastCGI 接口不如 mod_php 穩定。 但是它工作得很好。
Ramki:感謝您分享您的架構和經驗教訓,我發現無數據庫方法特別有趣和令人耳目一新。 對 NoSQL 想法的深入了解可能不是更好的選擇。 榮譽
沒有,
我不確定 websiteoutlook 的統計信息,但對于我知道其審計數的幾個網站,它們顯得有些低(10 倍)。
無論如何,每月有 1.5 億次頁面瀏覽量(是網站外觀數字的 3 倍),平均每秒 57 次頁面瀏覽量。 3900 次/秒是每頁瀏覽 68 次(您的 3 個用戶(真正是 3.57 個用戶)x 5 頁/訪問 x 不足 3 的因素)。 頭版頁面有 80 個元素,即使緩存率很高,考慮到高峰期和一個前端請求也會導致多個后端請求,因此乘數似乎并不是很大的乘數。
廣泛的數字對我來說似乎很合理。
關于進行綜合瀏覽和請求計算的人員:
將網頁瀏覽量視為用戶的完整呈現頁面是很常見的,這反過來可能轉換為針對后端的 1 到 50 個請求,具體取決于呈現頁面所需的后端信息源的數量。
您無法對它們進行計算,因為您將對蘋果和梨進行計算。
每月觀看次數總計超過 30 天,而 3900 req / s 則是特定時刻的峰值
根據視圖的數量和使用情況的一些假設,您可以計算出大約并發用戶的平均數,該數量永遠不會接近峰值時的并發用戶數。
您正在運行哪個 GFS 版本的 GFS1 或 GFS2? 您將在文件系統中存儲多少數據?
我們曾經將許多數據存儲在 GFS(1)中,但是由于可伸縮性問題而遠離了它。
主要問題是鎖定,無法擴展文件系統而沒有停機時間以及對復制/冗余的不良/不存在的支持。 從那時起,我們的數據量已經增長到了驚人的水平。 1 PB。
我也很好奇您用于在以下位置存儲 GFS 數據的基本存儲硬件:iscsi,光纖,AoE?
拉蒙
Mohan Radhakrishnan:您對文件系統復制器有何建議? 你是怎樣做的 ? 我們在一個城市中擁有 Windows SAN 存儲。 我們想將添加和刪除的文件實時復制到另一個城市的另一個 Windows 框中。 僅當完全寫入文件時,才應復制文件。
Ramki:我們已經嘗試解決這個問題已有相當長的時間了。 到目前為止,我們僅在一個數據中心上運行,并且 GFS 集群安裝在局域網中的 2-3 個節點上,因此其他節點可以立即看到每次寫入。 鑒于此,我們沒有復制問題。
但是,我們已經在尋找在大約 800 英里之外的印度兩個城市中部署應用程序的選項,我們希望使用主動-主動設置。 根據上下文,我們要求存儲提供商在兩個城市之間進行實時復制。 作為 ISP,我們的延遲相對較小(我認為),大約 40 毫秒。 即使有這種延遲,任何存儲提供商都無法做到近乎實時。 有一家公司說我們可以做到,并要求他們證明這一點。 他們部署了箱子,這是災難性的失敗! 當然,這都是異步復制,同步復制是同時關閉兩個站點的最佳方法! 玩笑! :)同步鎖定源文件系統,同步到另一個站點,其他站點鎖定文件系統,寫入,確認到源,源站點釋放鎖定。 在這段時間內,編寫文件的客戶端正在等待……您猜對了。
總結:
-如果您的延遲超過 5 毫秒且實時,則任何存儲提供商都無法做到這一點。 即使延遲對您來說較小,也請他們先進行證明。
-構建您自己的復制系統。 保持異步。
我們現在正在考慮做的是:
我們已經將內容推送到 MQ。 現在,內容也將被推送到其他城市的另一個隊列。 這樣,幾乎可以立即在兩個位置復制數據。 然后我們將接受可能會有的輕微延遲。 我認為延遲將少于 5 秒,這比存儲提供商建議的 10-15 分鐘復制更好。 無論如何,我們必須自己進行測試。 我們擁有的一大優勢是,甚至文件的刪除也是 XML 請求,因此也要經過 Q。
對于較大的二進制文件(視頻&圖像),我們采用略有不同的方法。 所有這些都寫入臨時目錄,并且守護程序將文件移動到適當的目錄。 我認為有 2 個城市時,這不會給我們帶來很多頭痛。 除了基于 ESB / MTOM 的方法外,別無其他想法,并通過隊列推送元數據。
Ramon:您正在運行哪個版本的 GFS 或 GFS2? 您將在文件系統中存儲多少數據?
我們曾經將許多數據存儲在 GFS(1)中,但是由于可伸縮性問題而遠離了它。
主要問題是鎖定,無法擴展文件系統而沒有停機時間以及對復制/冗余的不良/不存在的支持。 從那時起,我們的數據量已經增長到了驚人的水平。 1 PB。
Ramki:我們在 GFS1 上遇到了同樣的問題,我們現在在 GFS2 上。 但是,當我們必須在 VM 上運行節點時,仍然存在擴展問題。 支持的虛擬機數量不超過 2 個,添加集群的第 3 個節點有時會掛起。 也許這也是 GFS1 的問題,我們擔心被吊死。 您對此有一些了解嗎? 當前數據大小約為 1.5 Tera。 我們尚未將舊內容遷移到新系統。
拉蒙:我也想知道您用來在 GFS 數據上存儲 iscsi,光纖,AoE 的底層存儲硬件嗎?
Ramki:iSCSI
希望答案。
-ramki
您還將向用戶提供電子郵件。 您是否還保留沒有數據庫的身份驗證記錄?
另外,你們使用哪個郵件服務器?
嗨 Ramki,
想知道你們是否看過 AWS(http://aws.amazon.com)? 在它們上運行會簡化你們正在做的許多 VM 管理工作嗎?
它們還提供了負載平衡和自動擴展解決方案(http://aws.amazon.com/autoscaling/)和隊列服務(http://aws.amazon.com/sqs/)。
嗨,杜沙爾,
我們查看了 AWS 的其他項目。 我們面臨的最大問題是延遲。 我們不能忍受這種延遲。
除此之外:
-我們有自己的管道
-我們在各個城市都有自己的數據中心。
-我們已經在下文中介紹了許多內容。
因此,在我們的案例中,這實際上沒有任何意義。
-ramki
- 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 內容平臺的經驗教訓