標籤:
原文出處:http://nonfu.me/p/5935.html
知乎的整個網站架構圖如下:
知乎技術方案
知乎是國內很少的使用Python開發的一個網站,也很多值得我們學習的地方,從知乎讓我們也可以瞭解到一些新的WEB技術。
一、Python架構
知乎目前使用的是Tornado 架構。Tornado 全稱Tornado Web Server,是一個用Python 語言寫成的Web 服務器兼Web 應用程式架構,由 FriendFeed 公司在自己的網站FriendFeed 中使用,被facebook 收購以後架構以開源軟體形式開放給福士。
參考連結:http://zh.wikipedia.org/wiki/Tornado
學習文檔:http://www.tornadoweb.cn/documentation
二、資料庫
目前知乎採用的是MySQL作為主要的儲存,使用SqlAlchemy 為ORM進行資料庫的建模或者映射。
三、緩衝技術
知乎使用Redis來進行緩衝、隊列、計數或者任務,使用Redis-Py為其串連用戶端。
Redis參考連結:http://redis.readthedocs.org/en/latest/index.html
Redis-Py參考連結:http://redis-py.readthedocs.org/en/latest/index.html
四、Javascript架構
知乎使用Google的Closure Library作為前端的JavaScript 架構。
五、負載處理
目前知乎使用的是nginx做反向 Proxy,用nginx來做靜態檔案等大資料量的I/O操作。
六、圖片服務
知乎以前用到的Upyun,現在已經遷移到知乎自己建的圖片服務上。
七、郵件服務
知乎的郵件發送一開始使用的是Amazon的SES,由於SES有些功能不能滿足需求,目前已經轉換成Mailgun。
八、訊息系統
知乎訊息系統採用的是comet實現,comet是基於http長串連的“伺服器推”技術。
九、虛擬環境
作為一個Python網站,知乎很有可能採用Virtualenv來解決純淨的包環境問題。
中文文檔地址:http://virtualenv-chinese-docs.readthedocs.org/en/latest/index.html
十、代碼部署
常見的Python項目基本上採用Fabric進行部署,不知道知乎到底用的是哪一個。
十一、搜尋實現
知乎使用mmseg做中文分詞,對應的詞根存在redis中作為key,資料庫id作為value,每個資料項目是一個zset集合。查詢時根據key找到對應的value。
[轉載]知乎技術方案初探——基於Python的Tornado架構