知乎技術方案初探[轉]

知乎的整個網站架構圖以下: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

相關文章
相關標籤/搜索