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

本文涉及的产品
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
简介:

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

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
设计模式 架构师 算法
限量!阿里技术官纯手打架构师进阶宝典全网首发,理论+项目齐飞
可能有些人会常常有这样的感觉,同是开发有些人比我工资高却什么代码都不写呢?当我听到这个问题的时候第一次映入脑海的就是:工程师的分类。 大家可以来看看Java工程师在招聘网站上的区分:
限量!阿里技术官纯手打架构师进阶宝典全网首发,理论+项目齐飞
|
消息中间件 安全 Java
全网首发!消息中间件神仙笔记,涵盖阿里十年技术精髓
消息中间件是分布式系统中的重要组件,在实际工作中常用消息中间件进行系统间数据交换,从而解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构。
|
SQL 关系型数据库 MySQL
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(中)
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(中)
20 张图搞懂「分布式事务」 | 🏆 技术专题第五期征文(中)
|
消息中间件 运维 Cloud Native
分布式架构设计与技术分析 | 开发者社区精选文章合集(三十)
系统学习分布式架构设计对于技术人的成长非常关键,对于云原生开发者而言如何设计出符合云原生设计哲学的应用往往离不开分布式系统知识与方法论的运用。如何设计出高弹性、可配置、可分布、高性能、高容错、更安全、更韧性、快交付的原生应用往往是衡量开发者水准的重要参考。
分布式架构设计与技术分析 | 开发者社区精选文章合集(三十)
|
数据采集 数据挖掘 Python
知乎好物自动化(一)
当然,很多人觉得自动化赚不可能,在我看来这就是归因于认知问题和技术问题。认知不够永远不了解某些玩法居然还能赚钱,技术不够就算知道也没用(当然技术够了,也很容易走上计算机信息破坏罪,需要谨慎)。
176 0
知乎好物自动化(一)
|
前端开发 BI Python
知乎好物自动化(二)
还记得上上篇的文章分享了我的自动化赚钱理念吗,一键赚钱的事情不是不可能,重要的是认知问题。
161 0
知乎好物自动化(二)
|
弹性计算 运维 Cloud Native
知识太枯燥?带你趣味学!云开发技术图谱首发上线,开启探索之旅!
开发者社区云开发技术图谱活动首发上线,新任务模式带你解锁图谱学习“新姿势”!赶快邀上你的好友们,一起探索云原生应用开发技术图谱的趣味宇宙吧!参与活动有超高机会赢得小米移动电源一个,礼品限量,先到先得!
知识太枯燥?带你趣味学!云开发技术图谱首发上线,开启探索之旅!
|
缓存 前端开发 rax
|
Linux Windows
直播一对一源码快速搭建的终极秘诀,技术分享
初创公司如果打算自建视频直播平台,其实技术研发成本比较高,由于目前直播技术相对都比较成熟,设备也都支持硬编码,建议可以自主购买一整套的程序源码,把程序架构搭好,然后再进行程序的二次开发。直播一对一源码作为直播平台坚实的技术支持更成为打开新营销时代的钥匙.直播平台几乎每隔几天也会有新的直播APP上架更新迭代。
直播一对一源码快速搭建的终极秘诀,技术分享
【直播预告】云栖社区特邀专家颜群:大型系统设计原则与阿里云产品的应用
如何在设计阶段避免项目开发中可能会遇到的问题,从而避免返工的情形? 大型系统在设计时,应该遵循什么样的原则? 如何使用阿里云产品降低硬件成本,以及提高开发效率? 本课程会通过图文结合的方式,详细的讲解CAP、幂等性、无状态等经典设计原则及适用场景,并且会介绍如何在大型项目中使用阿里云提供的产品。
2254 0