知乎網的網站構架

知乎的整個網站架構圖如下:

知乎是國內很少的使用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做反向代理,用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。

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