知乎的整個網站架構圖以下:html
知乎是國內不多的使用Python開發的一個網站,也不少值得咱們學習的地方,從知乎讓咱們也能夠了解到一些新的WEB技術。前端
1、Python框架nginx
知乎目前使用的是Tornado 框架。Tornado 全稱Tornado Web Server,是一個用Python 語言寫成的Web 服務器兼Web 應用框架,由 FriendFeed 公司在本身的網站FriendFeed 中使用,被facebook 收購之後框架以開源軟件形式開放給大衆。web
參考連接:http://zh.wikipedia.org/wiki/Tornadoredis
學習文檔:http://www.tornadoweb.cn/documentation數據庫
2、數據庫緩存
目前知乎採用的是MySQL做爲主要的存儲,使用SqlAlchemy 爲ORM進行數據庫的建模或者映射。服務器
3、緩存技術架構
知乎使用Redis來進行緩存、隊列、計數或者任務,使用Redis-Py爲其鏈接客戶端。框架
Redis參考連接:http://redis.readthedocs.org/en/latest/index.html
Redis-Py參考連接:http://redis-py.readthedocs.org/en/latest/index.html
4、Javascript框架
知乎使用Google的Closure Library做爲前端的JavaScript 框架。
5、負載處理
目前知乎使用的是nginx作反向代理,用nginx來作靜態文件等大數據量的I/O操做。
6、圖片服務
知乎之前用到的Upyun,如今已經遷移到知乎本身建的圖片服務上。
7、郵件服務
知乎的郵件發送一開始使用的是Amazon的SES,因爲SES有些功能不能知足需求,目前已經轉換成Mailgun。
8、消息系統
知乎消息系統採用的是comet實現,comet是基於http長鏈接的「服務器推」技術。
9、虛擬環境
做爲一個Python網站,知乎頗有可能採用Virtualenv來解決純淨的包環境問題。
中文文檔地址:http://virtualenv-chinese-docs.readthedocs.org/en/latest/index.html
10、代碼部署
常見的Python項目基本上採用Fabric進行部署,不知道知乎到底用的是哪個。
11、搜索實現
知乎使用mmseg作中文分詞,對應的詞根存在redis中做爲key,數據庫id做爲value,每一個數據項是一個zset集合。查詢時根據key找到對應的value。
來源:http://www.thebigdata.cn/QiTa/11773.html