知乎技术方案初探

标签: 程序设计 架构 | 发表时间:2012-06-14 00:34 | 作者:标点符
出处:http://www.biaodianfu.com

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

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

Related posts:

  1. 在Windows上安装配置Redis及Python使用
  2. 微格式:让网页更加语义化
  3. PR=10 网站列表

相关 [知乎 技术] 推荐:

知乎技术方案初探

- - 标点符
知乎是国内很少的使用Python开发的一个网站,也很多值得我们学习的地方,从知乎让我们也可以了解到一些新的WEB技术. 知乎目前使用的是 Tornado 框架. Tornado 全称Tornado Web Server,是一个用Python 语言写成的Web 服务器兼Web 应用框架,由 FriendFeed 公司在自己的网站FriendFeed 中使用,被facebook 收购以后框架以开源软件形式开放给大众.

Quora使用到的技术,quora也就是国内的知乎,百度知道,你问我答那种网站

- wangdei - Starming星光社最新更新
以前向大家介绍过Stack Exchange的系统架构和Facebook的系统架构,今天和大家说说Quora的. 本文主要参考了Phil Whelan的这篇文章《Quora’s Technology Examined》. 关于Quora是个什么网站我就不多说了,国内对他的C2C网站叫“知乎”. 我们还是来看看Quora的技术吧.

扒一扒知乎上的帖子——“为什么有些大公司技术弱爆了?”

- - 四火的唠叨
知乎上看到一个热帖,我觉得很有意思,叫做“ 为什么有些大公司技术弱爆了. 我刚看到标题的时候,先入为主和刻板偏见了一下,正如同第一个回答一样,我皱了皱眉头,产生了对题主的鄙视之情;但是很快,读完帖子以后,我却立场明确地站到题主一边了. 看题目以为是题主傻逼,看了正文发现真的是公司傻逼. 上面这种情况其实发生的概率挺低的,但是我觉得这回是真的发生了.

知乎问答

- - 人月神话的BLOG
没有编程经验的,至少需要掌握哪些知识,才能胜任软件产品的需求分析工作. 在这里首先要注意编程经验和懂编程,编码和软件工程是两回事情. 举个例子你没有在生产线做过工人,但是不代表你不可以了解一个产品从原材料开始如何从生产线生产出来的. 你可以当生产线去参观和学习,当然如果你能够在生产线实习一段时间印象更加深刻.

知乎的困境

- zhengyun - 无网不剩
为什么有的照片拍出来建筑物是倾斜的. 陈奕迅的『爱情转移』到底想要表达什么. iphone4升级到ios5 beta3后,可不可以降到4.3.3. 第一反应是到知乎提问,且能在较短时间内得到满意的答复,那么知乎就成了. 其实从产品上是完全可以应付的,最难的是用户为什么要来这里提问. 如果我有iphone4,第一反应肯定是去weiphone.

知乎产品体验报告:于知乎,你真的知乎?

- - 人人都是产品经理
对于“知乎”,你真的知乎. 一份关于“知乎”的全方位产品体验报告帮你了解知乎. 系统版本:6.0.1MXB48T. 体验时间:2016.12.3-2016.12.9. Logo:以代表诚实、信赖、知性的蓝色为底色,以“知”字作为产品标识,特别是对其右侧的“口”做了仿对话框的改动,点明知乎是汇聚智慧的知识交流平台.

知乎招募工程师

- oxygen - 知乎的博客
Python工程师  有两年以上软件开发经验. 至少一年 Python 开发经验. 对开源技术有强烈的兴趣和爱好,参与或向开发者提交过bug和patch. 热爱探索和钻研,熟悉文本挖掘、自然语言处理相关知识能使用C/C++独立实现复杂的算法结构熟悉开源搜索项目(Lucene,Sphinx等)极强的逻辑分析能力对开源技术有强烈的兴趣和爱好,参与或向开发者提交过bug和patch认为自己是技术geek有极强的责任感.

网络图谱论“知乎”

- oxygen - 采铜学心录
引言:写这篇文章的初衷是为了让自己“读懂”知乎. 知乎是一个颇有吸引力的产品,甚至一度转移了我对微博的兴趣,由此我更想搞清楚知乎背后的逻辑是什么,它是如何运作的. 当然谈知乎很可能就是在谈Quora,可惜我还没用过Quora所以没有发言权,所以只能就知乎作一番分析. 一论:知乎是一种混合网络,由个人结点和知识结点两种结点构成.