Instagram 架構分析筆記)

來源:互聯網
上載者:User

Instagram 團隊上個月才迎來第 7 名員工,是的,7個人的團隊。作為 iPhone 上最火爆的圖片類工具,instagram 使用者數量已經超過 1400 萬,圖片數量超過 1.5 億張。不得不說,這真他媽是個業界奇蹟。

幾天前,只有三個人的 Instagram 工程師團隊發布了一篇文章:What Powers Instagram: Hundreds of Instances, Dozens of Technologies,披露了 Instagram 架構的一些資訊,足夠勾起大多數人的好奇心。讀罷做點筆記,各種線索還是有一定參考價值的。能開啟原文的建議直接讀原文。

Instagram Team Dev奉行的三個核心原則:

  • Keep it very simple (極簡主義)
  • Don't re-invent the wheel (不重複發明輪子)
  • Go with proven and solid technologies when you can(能用就用靠譜的技術)

 

OS/主機

作業系統的選擇,在Amazon EC2上跑 Ubuntu Linux 11.04 (Natty Narwhal) ,這個版本經過驗證在 EC2 上夠穩定。因為只有三名工程師,只有三名工程師,所以自己部署機器到 IDC 是不靠譜的事情。幸好有亞馬遜。

 

負載平衡

此前曾用過兩台 Nginx 做 DNS 輪詢承載前端請求,這樣做會有副作用,現在已經遷移到Amazon的ELB(Elastic Load Balancer),起了三個 Nginx 執行個體,在 ELB 層停掉了 SSL , 以緩解 CPU 壓力。DNS 服務使用 Amazon Route53 服務。
 

 

應用伺服器

啟用了 25 個 Django 執行個體,運行在 High-CPU Extra-Large 類型的伺服器執行個體上,之所以用 High-CPU Extra-Large 執行個體是因為應用請求是 CPU 密集型而非 IO 密集型。

 

使用 Gunicorn 作為 WSGI 伺服器。過去曾用過 Apache 下的 mod_wsgi 模組,不過發現 Gunicorn 更容易配置並且節省 CPU 資源。使用 Fabric 加速部署。

資料存放區

使用者資訊、圖片中繼資料、標籤等大部分資料存放區在 PostgreSQL 中。主要的 Shard 資料庫叢集有 12個節點。

實踐中發現 Amazon 的網路磁碟系統單位時間內尋道能力不行,所以有必要將資料盡量放到記憶體中。建立了軟 RAID 以提升 IO 能力,使用的 Mdadm 工具進行 RAID 管理。

管理記憶體中的資料,vmtouch 這個小工具值得推薦。

PostgreSQL 設定為 Master-Replica 方式,流複製模式。利用 EBS 的快照進行Database Backup。使用 XFS 檔案系統,以便和快照服務充分配合。 使用 repmgr 這個小工具做 PostgreSQL 複製管理器器。

串連池管理,用了 Pgbouncer。Christophe Pettus 的文章包含了不少 PostgreSQL 資料庫的資訊。

TB 層級的海量圖片儲存在 Amazon S3 上,CDN 採用的也是 Amazon 的服務,CloudFront。

Instagram 也是 Redis 的重度使用者,Feed 以及 Session 資訊都用 Redis 處理,Redis 也是以 Master-Replica 方式部署。在 Replica 節點上進行資料備份。

使用了 Apache Solr 承擔 Geo-search API 的工作,Solr 簡單的 JSON 介面也不錯。

緩衝使用了 6 個 Memcached 執行個體,庫使用 pylibmc 和 libmemcached。亞馬遜也提供快取服務-Elastic Cache service ,Instagram 也有嘗試,不過不便宜。

任務隊列/發布通知

佇列服務使用 Gearman ,通知系統則使用 pyapns 來實現。

監控

前面提及的伺服器執行個體數量加起來,的確有100多個,有效監控是相當有必要的。使用 Munin 作為主要監控工具 , 也寫了不少定製外掛程式,外部監控用 Pingdom 的服務。通知服務使用 PagerDuty。

對於 Python 的錯誤報表,使用 Disqus 團隊開源的 Sentry 來處理。

幾個感想

0)輕裝上陣說起來容易,做起來非常難。這也是 Instagram 團隊目前最令人著迷的地方;

1)Python 社區已經足夠成熟,各個環節上都已經有不錯的解決方案了。

2)如果要問我最大的一個感慨,我要說:Amazon 真是一家偉大的公司,甚至比 Google 還偉大

 

轉自 http://www.eit.name/blog/read.php?504

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.