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

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

转载于:https://www.cnblogs.com/whiterock/p/7227573.html

网上收集的“知乎网”技术方案架构相关推荐

  1. python web server 知乎_“知乎网”技术方案初探

    知乎的整个网站架构图如下: 知乎是国内很少的使用Python开发的一个网站,也很多值得我们学习的地方,从知乎让我们也可以了解到一些新的WEB技术. 一.Python框架 知乎目前使用的是Tornado ...

  2. Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨

    背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求.目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务 ...

  3. 一份完整齐全的技术方案文档

    2022年-[归一计划三期-用户中心三期第二阶段]技术方案 部门:基础架构部 时间:2022.02.25 1.背景 描述技术方案的背景 由于历史原因,旧服务存在很多代码不规范.冗余度高.扩展性差等问题 ...

  4. 内网无纸化会议/智慧教室实时同屏RTSP组播技术方案思考

    内网环境下,为了满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,好多开发者希望有RTSP的技术方案,用于小并发场景,特别是在组网环境好的有线环境下,使用RTSP服务配合组播,是 ...

  5. 思科新版ccna认证网工一定要知道的PIM技术概述

    思科新版ccna认证网工一定要知道的PIM技术概述PIM(Protocol Independent Multicast)称为协议无关组播.这里的协议无关指的是与单播路由协议无关,即PIM不需要维护专门 ...

  6. 网上收集的各网摘地址 备用

    网上收集的网摘地址 备用 1.名称:美味书签(del.icio.us) <a href="http://del.icio.us/post" οnclick="win ...

  7. 知乎网解决HTML5 Placeholder的方案

    使浏览器支持Placeholder有很多方法,都不是很完美,或多或少有点问题,且有些原生支持的浏览器在获得焦点时会清空Placeholder提示.发现知乎网的解决方法不错,特记录下. windows系 ...

  8. 基于SDN的蜜网技术概述

    云计算和虚拟化技术的发展,使得蜜网系统从传统的硬件蜜网,发展成动态灵活的虚拟化蜜网成为了可能.SDN(Software Defined Networking)架构将网络的控制平面从数据平面中分离出来, ...

  9. AI智能音箱技术方案开发

    随着智能科技的不断发展,我们身边的产品随时都能被攻城狮们赋予智慧.比如我们传统的家居音箱,以前它只能连接电脑或者手机蓝牙来当成外置扬声器播放,而现在它被程序猿赋予了更加人性化的的操作和功能,可以与无线 ...

最新文章

  1. TPOT: 自动化的sklearn
  2. java Random类详解
  3. saxon java_如何将Saxon设置为Java中的Xslt处理器?
  4. 【Nginx】截取URL中某个参数Parameter
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1109:开关灯
  6. S3C2440 IIS操作 uda134x录放音
  7. CF1556D-Take a Guess【交互】
  8. char 与 String 相等比较
  9. 理解SimpleExpandableListAdapter的构造函数
  10. 使用Spring框架对接Twitter(一)
  11. JQuery原生js ——实现剪刀石头布小游戏
  12. java添加缓存_实现 Java 本地缓存的方法解析
  13. VM VirtualBox 安装Window XP3安装版
  14. jaspersoft studio6.x 设计医院检查报告单样式
  15. 条码标签里的数据源如何使用
  16. 快学Big Data -- Hadoop(十三)
  17. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:07 规则式自然语言处理系统
  18. python能开发安卓app吗_如何Python写一个安卓APP
  19. Cadence Allegro巧用自动布线工具图文教程及视频演示
  20. Tomcat中如何配置使用APR

热门文章

  1. qq浏览器网页翻译_如何通过Edge浏览器调用“谷歌翻译”,将整个网页翻译为中文...
  2. css不继承上级样式_CSS基础知识(一)
  3. MYSQL round()函数
  4. Spring Security OAuth2 授权失败(401)
  5. windows cmd 定义和使用变量
  6. Linux下NTP时间同步客户端配置
  7. java 栈队列区别是什么意思_java栈和队列的区别
  8. 怎么看表_怎么和爸妈沟通?
  9. memset 和 memcpy 和 memcmp (strncmp遇到\0会中断)
  10. 分布式大数据多维数据分析(olap)引擎kylin[转]