Instagram架構揭祕

摘要:導讀:這幾天的媒體充斥着Facebook十億美元收購Instagram的消息,Facebook究竟買了些什麼?幾千萬的用戶?以及不斷流行的圖片分享習慣?13人的團隊?或者消滅了一個潛在的競爭對手(如果被Google收購,那是Facebook最不願意看到的)?除了這些,還有什麼,這就是你閱讀這篇文章的價值所在。 來自highscalabi...

導讀:這幾天的媒體充斥着Facebook十億美元收購Instagram的消息,Facebook究竟買了些什麼?幾千萬的用戶?以及不斷流行的圖片分享習慣?13人的團隊?或者消滅了一個潛在的競爭對手(如果被Google收購,那是Facebook最不願意看到的)?除了這些,還有什麼,這就是你閱讀這篇文章的價值所在。來自highscalability的文章對Instagram的架構列出了詳細清單,CSDN對其做了編譯,我們也非常希望國內的公司和團隊多做類似分享,貢獻於社區的同時,更能提升自身的江湖地位,對招聘、業務發展都好處多多。歡迎通過@CSDN雲計算的微博向我們投稿。

Instagram是一個在iPhone上基於社交網絡的圖片分享服務,創立之初的一年多時間就吸引了1400萬用戶,目前已經用戶達到3000萬。截至到去年八月,Instagram上總共有1.5億張圖片,所有的數據都建立在Amazon stack上。

Instagram的團隊曾經撰文《Instagram:數百的實例 大量的技術》披露了其架構。

Instagram混雜了不同的技術和策略。團隊雖然很小,但經驗快速增長讓他們趕上了社交和移動互聯網大潮。他們採用了混合的SQL和NoSQL技術,這裏有大量的開源項目,並選擇了雲服務,Amazon的服務提供了很高的槓桿率,這比他們自己建設要高的多,可靠性完全可用,按時間順序異步的將組件鏈接起來,系統包含了足夠多的服務,包括API和外部服務,這些都不用工程師重新開發。數據保存在內存中和雲端,多數代碼爲動態語言,從新開發的後臺傳輸服務將所有服務鏈接在一起,代碼更新很快並保持簡短。一個非常現代的架構。

我們將Instagram的詳細架構列在這裏,總結很到位,很有價值。以下是所有要點:

  • Instagram告訴我們:1)保持簡單 2)利用現成的一切 3)採用被證明穩定成熟的技術
  • 3名工程師(最新的報道稱已經增加到13名,這只是暫時的數據)
  • Amazon商店。他們採用了大量Amazon的服務。曾經只有3名工程師,你可以想象他們根本沒有時間照看服務器。
  • 超過100個Amazon EC2實例,用於各種目的。
  • Ubuntu Linux 11.04(“敏捷獨角鯨”)。非常穩定,其它版本的Ubuntu也包含在其中。
  • Amazon的Elastic Load Balancer路由請求服務以及背後的3個nginx接口
  • 安全套接層在Elastic Load Balancer終止,可減少nginx佔用的CPU資源
  • DNS採用Amazon Route53
  • 超過25個Django應用服務器,集成在高性能CPU和超大號的機器上
  • 通信對CPU的要求比內存的要求高,因此高性能CPU的大型機器帶來更好的平衡
  • 網關接口採用Gunicorn。Apache調試更困難而且對CPU要求更高。
  • Fabric用於輸入所有機器控制指令。部署任務只需要以秒計。
  • PostgreSQL(用於存儲用戶信息、圖片說明,tag以及其它)數據庫,運行在12個四重超大內存的機器上。
  • 12個PostgreSQL的備份
  • PostgreSQL的主鏡像通過複製分發內容。Amazon EBS提供快照服務,並頻繁的備份。
  • Amazon EBS配置了軟件RAID。使用mdadm命令獲得適當的I/O
  • 所有這些工作存儲在內存中。Amazon EBS不能提供足夠高的磁盤尋址服務。
  • Vmtouch命令(文件系統緩存診斷)用於內存中的數據,特別是當數據從一臺機器傳輸到另一臺機器失敗的時候
  • 採用XFS文件系統。保證快照的一致性。
  • Pgbouncer用於連接池鏈接到PostgreSQL
  • 數TB的圖片存儲在Amazon S3上
  • CDN服務採用Amazon CloudFront
  • Redis提供feed、進程和其它服務支持
  • Redis運行在幾個四重超大內存機器上。
  • Redis運行在主鏡像上,副本不斷的存儲在磁盤上。Amazon EBS備份數據庫傾倒的信息。在主鏡像上備份十分困難。
  • Apache的Solr提供geo-search的API。就像一個JSON的接口。
  • 6個內存緩存實例,通過pylibmc和libmemcached鏈接。Amazon Elastic Cache並不便宜。
  • Gearman用於:異步的將圖片分享到Twitter、Facebook及其它網站;實時的發佈訂閱者的新圖片;
  • 200個Python工作分派任務進入Gearman的任務隊列
  • Pyapns(Apple通知服務)控制上十億的通知發佈,岩石般的穩定。
  • Munin繪製系統警報圖表,開發了許多定製插件用於Python-Munin繪圖,包括每秒的註冊數、每秒圖片發送數等等
  • Pingdom用於服務的外部監控
  • PagerDuty控制通知和事件。
  • Sentry用於Python的錯誤報告

現在,你終於知道了10億美元買到了什麼......

Update 2012.4.13:這裏,Instagram的聯合創始人Mike Krieger在12日做了《如何成爲十億美元公司》的演講,PPT很長。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章