豆瓣網:用Quixote和web.py打造強大的網站

pythontab發表於2012-12-25
豆瓣是一個使用Python進行開發的網站。


在開發框架方面,豆瓣主要使用Quixote(一個輕量級的Python Web框架,簡單、高效,程式碼簡潔);後臺執行的Web服務主要使用Web.py(web.py也是一個Python的Web框架,簡單且功能強大)。

豆瓣網可分割成兩大塊:一塊是前端的Web,也就是使用者在瀏覽器訪問的時候會觸發一系列的操作,從資料庫拿出資料,渲染成HTML頁面反饋給使用者,這是前端;另外一塊是後端,在豆瓣有一個很強的資料探勘團隊,每天把使用者產生的資料進行分析,進行組合,然後產生出使用者推薦,然後放在資料庫裡面,前端會實時的抓取這些資料顯示給使用者。

豆瓣(架構)設計現在在WEB這一端主要是用這麼幾種技術:前端是nginx和lighttpd,中間是Quixote的Web框架,後面是MySQL以及我們自己開發的DoubanDB。這些除了Quixote都是一些比較流行的、尖端的技術。Quixote稍微老一點,如果要重新設計的話,可能會在這方面做一些考慮。比如Python社群中的Django、Pylons等等都是可以考慮的,那麼在豆瓣的內部的話,我們一般是用web.py,很輕量的一個Web框架來做,也是非常不錯的選擇,它可能需要自己做的事情多一點。

豆瓣現在還沒有達到資料庫分片的程度。最常見的手段是,按照功能分割槽。我們會把資料表分成幾個獨立的庫,現在是一共有4個庫。每個表都是庫的一個部分,每個庫會有主副兩個。透過這種方式來減輕資料庫的壓力,當然這個是現在的方案,再往後的話,表的行數會增長,到達一定的程度後,還要進行水平分割,這是肯定的。然後我們現在的技術方面,在運算元據庫之前,首先獲取資料庫的遊標,有一個方法,這個方法會幹所有的事情,我們以後做的時候會從這個方法中進行判斷該從哪取東西。這個架構已經在了,只是現在還沒有做這一步而已。

相關文章