【转载】知乎技术方案初探

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

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

原文地址:http://www.biaodianfu.com/zhihu-technique.html

时间: 2024-12-01 00:40:26

【转载】知乎技术方案初探的相关文章

知乎技术方案初探

知乎的整个http://www.aliyun.com/zixun/aggregation/11116.html">网站架构图如下: 知乎是国内很少的使用Python开发的一个网站,也很多值得我们学习的地方,从知乎让我们也可以了解到一些新的WEB技术. 一.Python框架 知乎目前使用的是Tornado 框架.Tornado 全称Tornado Web Server,是一个用Python 语言写成的Web 服务器兼Web 应用框架,由 FriendFeed 公司在自己的网站FriendFe

服务器RAID技术方案你知多少?

有些东西,我们看表面就可以理解,有些东西,我们看表面,看到的只是表面,啥?不信?那么请问,Raid 0+1和Raid 1+0 有什么区别?论坛地址:http://bbs.51cto.com/thread-975296-1.html  图中简单的说明了2中RAID的组成方式,简单介绍如下:RAID 0+1说明黑色线:RAID 0的组成过程红色线:RAID 1的组成过程组建过程:先组建Raid 0 在Raid 0的基础上在组建Raid 1,最后形成Raid 0+1RAID 1+0说明青色线:RAID

DockOne微信分享(六十六): Docker网络方案初探

本文讲的是DockOne微信分享(六十六): Docker网络方案初探[编者的话]这次主要跟大家聊聊Docker的网络方案,首先是现有容器网络方案介绍, 接下来重点讲解Calico的特性及技术点,作为引申和对比再介绍下Contiv的特性,最后给出对比测试结果. 随着容器的火热发展,数人云越来越多的客户对容器网络特性要求也开始越来越高,比如: 一容器一IP: 多主机容器互联: 网络隔离: ACL: 对接SDN等等. 这次主要跟大家聊聊Docker的网络方案,首先是现有容器网络方案介绍, 接下来重点

缓存技术方案改造思考

这是我对一个正在进行的重构项目,缓存技术方案改造点之一的一个想法: rc现有的实时缓存(其实也是准实时,失效时间的存在)设计: 存在的问题:现有的实时缓存方案(也并非真正意义上的实时,缓存失效时间的存在),与上游核心系统耦合度较高,核心系统强依赖下游欠核心系统,而且目前的查询服务性能也存在问题,比如区域销售豆腐块接口返回的数据量大,并且从tair->rc,rc->delivery需要经过两次网络传输,这之间网络传输及序列化.反序列化消耗大,而且出现问题时,由于排查链路和时间周期都长: 升级方案

080_《Delphi技术方案宝典》

<Delphi技术方案宝典> Delphi 教程 系列书籍 (080) <Delphi技术方案宝典> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 作者: 梁冰 李钟尉 吕双 丛书名: 软件工程师典藏 出版社:人民邮电出版社 ISBN:9787115172549 上架时间:2008-2-2 出版日期:2008 年2月 开本:16开 页码:616 版次:1-1 内容简介 本书从delphi软件开发时必须掌握的核心技术入手,深入介绍各

java技术方案征集

问题描述 有哪位大虾 写过技术方案,征集一个范本,以作参照.有的话发往我邮箱,马上给分,谢谢.邮箱:wg871126@yahoo.com.cn 解决方案 技术方面要写的简单易懂,有针对性,需求中提到的都能解决.第三方产品可以给客户多些选择,比如,数据库(mysql,sqlserver,oracle)报价除了开发费用还要包括第三方和硬件,每种方案都给出价格.哥们够意思吧解决方案二:你给的场景和分数都太少了.一般这样写:0.扯淡:)1.你理解的需求2.关键技术解决方案(安全,性能,难点,以及需求中要

小程序技术方案探讨

微信小程序上线大半年,大部分技术原理也有文章介绍了,本文尝试从需求出发探讨微信小程序技术方案的来源,以及最近公测的支付宝小程序技术方案上的考量. 微信小程序 微信小程序的需求是让第三方开发者可以接入,可以使用微信的提供的接口去开发应用嵌入在微信里.对于这个需求,最简单的实现方案是:让外部开发者开发纯H5应用,在微信的 H5 容器里打开,容器提供微信 native 接口,就行了.在有小程序之前,已经有很多这样的业务接入,像京东购物,钱包里的各种友商大众点评/滴滴出行等,都可以认为是一个"小程序&q

平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案

问题描述 平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案 5C 目前由于平台要处理2万设备,每秒能处理2万条数据,之前使用ActiveMQ,不能达到需求了,之前测试rabbitMQ,Redis 之类,在测试机子上面都不能达到需求,本地测试 模拟1000个线程并发处理,一个线程处理1000插入数据,始终未能达到!不知道大家有没什么好的解决方案能达到这种需求的? 解决方案 单机很难达到这样的吞吐量,需要使用负载平衡了. 解决方案二: 同多台机器分布式处理吧. 解决方案三: hadoop等

openfire-android实现P2P视频监控技术方案

问题描述 android实现P2P视频监控技术方案 现在来了个P2P视频监控项目,需要跨外网,已经了解过webRTC.openfire.linphone技术,总感觉走错了方向,大神们这个项目应该往哪走呢.