知乎技术方案初探
2015-09-07 13:52
162 查看
知乎是国内很少的使用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。
相关文章推荐
- Ubuntu terminator 多窗口终端的快捷键
- c#、.net、asp.net、asp 、ado.net、.net framework的区别
- 2016美团 模拟题 去除首尾空格,内部多个空格变成一个空格
- AsyncTasks, Runnables, Handlers, and Threads, oh my!
- mysql查看所有存储过程,函数,视图,触发器,表
- wincc系统复位
- mysql查看所有存储过程,函数,视图,触发器,表
- 快速学会缓存工具DiskLruCache
- 用户、角色、权限数据库设计
- 获取当前年月日和星期
- ZOJ 1008 Gnome Tetravex
- git生成ssh key及本地解决多个ssh key的问题
- JS 打开新窗口的方法
- 你的第一台负载均衡器 - 15分钟的入门课
- ubuntu下tcpdump总结
- ListView使用过程记录
- 用户·角色·权限·表
- Java代理模式
- Android软键盘强制弹出,隐藏输入法.
- ORACLE 全局索引和本地索引