天天看點

Yupoo網站技術架構

http://www.dbanotes.net/arch/yupoo_arch.html

又有機會爆料國内 Web 2.0 網站的架構了。這次是 Yupoo! 。非正式的采訪了一下 Yupoo!(又拍網) 的建立人之一的 阿華(沈志華)同學,了解了一些小道消息。

作為國内最大的圖檔服務提供商之一,Yupoo! 的 Alexa 排名大約在 5300 左右。同時收集到的一些資料如下:

帶寬:4000M/S (參考)

伺服器數量:60 台左右

Web伺服器:Lighttpd, Apache, nginx

應用伺服器:Tomcat

其他:Python, Java, MogileFS 、ImageMagick 等

首先看一下網站的架構圖:

Yupoo網站技術架構

該架構圖給出了很好的概覽(點選可以檢視在 Yupoo! 上的大圖和原圖,請注意該圖版權資訊)。

關于 Squid 與 Tomcat

Squid 與 Tomcat 似乎在 Web 2.0 站點的架構中較少看到。我首先是對 Squid 有點疑問,對此阿華的解釋是"目前暫時還沒找到效率比 Squid 高的緩存系統,原來命中率的确很差,後來在 Squid 前又裝了層 Lighttpd, 基于 url 做 hash, 同一個圖檔始終會到同一台 squid 去,是以命中率徹底提高了"

對于應用伺服器層的 Tomcat,現在 Yupoo! 技術人員也在逐漸用其他輕量級的東西替代,而 YPWS/YPFS 現在已經用 Python 進行開發了。

名次解釋:

  • YPWS--Yupoo Web Server YPWS 是用 Python開發的一個小型 Web 伺服器,提供基本的 Web 服務外,可以增加針對使用者、圖檔、外鍊網站顯示的邏輯判斷,可以安裝于任何有空閑資源的伺服器中,遇到性能瓶頸時友善橫向擴充。
  • YPFS--Yupoo File System 與 YPWS 類似,YPFS 也是基于這個 Web 伺服器上開發的圖檔上傳伺服器。

【Updated: 有網友留言質疑 Python 的效率,Yupoo 老大劉平陽在 del.icio.us 上寫到 "YPWS用Python自己寫的,每台機器每秒可以處理294個請求, 現在壓力幾乎都在10%以下"】

圖檔處理層

接下來的 Image Process Server 負責處理使用者上傳的圖檔。使用的軟體包也是 ImageMagick,在上次存儲更新的同時,對于銳化的比率也調整過了(我個人感覺,效果的确好了很多)。”Magickd“ 是圖像處理的一個遠端接口服務,可以安裝在任何有空閑 CPU資源的機器上,類似 Memcached的服務方式。

我們知道 Flickr 的縮略圖功能原來是用 ImageMagick 軟體包的,後來被雅虎收購後出于版權原因而不用了(?);EXIF 與 IPTC Flicke 是用 Perl 抽取的,我是非常建議 Yupoo! 針對 EXIF 做些文章,這也是潛在産生受益的一個重點。

圖檔存儲層

原來 Yupoo! 的存儲采用了磁盤陣列櫃,基于 NFS 方式的,随着資料量的增大,”Yupoo! 開發部從07年6月份就開始着手研究一套大容量的、能滿足 Yupoo! 今後發展需要的、安全可靠的存儲系統“,看來 Yupoo! 系統比較有信心,也是滿懷期待的,畢竟這要支撐以 TB 計算的海量圖檔的存儲和管理。我們知道,一張圖檔除了原圖外,還有不同尺寸的,這些圖檔統一存儲在 MogileFS 中。

對于其他部分,常見的 Web 2.0 網站必須軟體都能看到,如 MySQL、Memcached 、Lighttpd 等。Yupoo! 一方面采用不少相對比較成熟的開源軟體,一方面也在自行開發定制适合自己的架構元件。這也是一個 Web 2.0 公司所必需要走的一個途徑。

非常感謝一下 Yupoo! 阿華對于技術資訊的分享,技術是共通的。下一個能爆料是哪家?