知乎技术方案初探

知乎是国内不多的使用Python开发的一个网站,也不少值得咱们学习的地方,从知乎让咱们也能够了解到一些新的WEB技术。html

1、Python框架前端

知乎目前使用的是Tornado 框架。Tornado 全称Tornado Web Server,是一个用Python 语言写成的Web 服务器兼Web 应用框架,由 FriendFeed 公司在本身的网站FriendFeed 中使用,被facebook 收购之后框架以开源软件形式开放给大众。nginx

参考连接:http://zh.wikipedia.org/wiki/Tornadoweb

学习文档:http://www.tornadoweb.cn/documentationredis

2、数据库数据库

目前知乎采用的是MySQL做为主要的存储,使用SqlAlchemy 为ORM进行数据库的建模或者映射。缓存

3、缓存技术服务器

知乎使用Redis来进行缓存、队列、计数或者任务,使用Redis-Py为其链接客户端。框架

Redis参考连接:http://redis.readthedocs.org/en/latest/index.htmltornado

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。

相关文章
相关标签/搜索