IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

知乎技术方案初探

标点符 2012-06-17 17:46:44 累计浏览 12,071 次
本机暂存

    知乎的整个网站架构图如下:

    原图已失效

    知乎是国内很少的使用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。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,250)
  2. 配置Nginx+uwsgi更方便地部署python应用 (累计阅读 107,164)
  3. 程序员技术练级攻略 (累计阅读 35,469)
  4. python实现自动登录discuz论坛 (累计阅读 32,833)
  5. python编程细节──遍历dict的两种方法比较 (累计阅读 20,371)
  6. 每个程序员都应该学习使用Python或Ruby (累计阅读 17,917)
  7. Chrome和goagent的配置方法,你懂的 (累计阅读 16,842)
  8. 30分钟3300%性能提升――python+memcached网页优化小记 (累计阅读 13,741)
  9. 使用python爬虫抓站的一些技巧总结:进阶篇 (累计阅读 13,301)
  10. 我的PHP,Python和Ruby之路 (累计阅读 13,146)