Quora 用了哪些技术(转)

原文:http://dbanotes.net/arch/quora_tech.html

很多团队都在学习、研究 Quora 。前段时间看到这篇 Quora’s Technology Examined ,阐述了 Quora 的技术架构,有一些值得关注的信息,记录并分享一下。

使用云计算服务

Quora 大量使用 Amazon EC2 与 S3 服务;操作系统部署的是 Ubuntu Linux,易于部署和管理;静态内容用 Cloudfront.服务分发,图片先传到 EC2 服务器,使用 Pyhon S3 API 处理后后传到 S3。

从开始就使用云计算服务的的好处是节省了大量人工维护硬件服务器的成本,当然这个做法在咱这片土地上不太可行。


(refer: Copyright)
Web 层与 CMS

HAProxy 作为前端负载均衡服务器,反向代理服务器是 Nginx,Nginx 后面则是 Pylons (Pylons + Paste) , 承担动态 Web 请求。

Webnode2 与 LiveNode 这两个内部系统承担创建、管理内容的重任,Webnode2 生成 HTMLCSS与 JavaScript ,并且与 LiveNode 轻度耦合。LiveNode 的作用用以显示 Web 页面内容。用 Python、C++ 与 JavaScript 写的。特别提到用到了 jQuery 与 Cython。LiveNode 有可能开源。

为什么用 Python?

前面已经提到了一些 Python 相关的技术组件。有意思的是从 Facebook 出来的团队居然用 Python 作为主要开发语言。Quora 对此有所解释: Facebook 选择 PHP 也并非是最佳选择,而是有历史原因。Quora 技术团队在考察了多个语言之后选择的 Python ,当然理由有一大堆,总体看来,并非很激进。

通信处理

后端通信使用的是 Facebook 开源出来的 Thrift,除了开发接口简单之外,可能更为熟悉也是一个因素吧 :) Comet 服务器使用的是 Tornado,用以处理 Long polling 以及 Push 更新(不知道知乎用的什么?),Tornado 是前 FriendFeed 技术团队开源的产品。

实时搜索

因为 Sphinx 不能满足实时性方面的要求,Quora 启用了自己开发的搜索引擎,只使用了 Thrift 与 Python Unicode 库,此外没有用别的。Quora 的搜索比较特别,因为要对输入内容做关联并且要做有效提示,所以需要提供更好的前缀索引(Prefix indexing)功能。

Quora 搜索的实现还是挺有技术含量的,对后端的查询请求压力也不小(或许当前的并发请求量还没那么大)。对这个场景,做相关开发的朋友不妨仔细研究一下。如果大体框架类似,那么决定最后生出的因素很可能是那些细节。

数据持久层

大量使用 MySQL 作为存储方案,Memcached 作 Cache 层。没有使用当前比较火爆的 NoSQL 相关产品。Quora 这样做有自己的理由,用户量级没有达到百万的 SNS 站点完全没必要用 NoSQL 的东西。或许以后 Quora 也会启用。

创始人查理·奇弗(Charlie Cheever)与亚当·德安杰洛(Adam D’Angelo)之前都在 Facebook ,所以,Quora 的技术还真有不少 Facebook 的基因。Quora 的团队规模并不大,做技术的估计十余人而已,这么紧凑的团队利用了这么多的技术与产品,可见很多人都是多面手了。这是国内技术团队需要向国外同行学习的地方。

EOF

这只是一篇概要性的描述,如果要知道一些更为细节的东西,请看 Quora 上的相关评论,上文中已经给出相关链接。

时间: 2024-08-07 15:57:16

Quora 用了哪些技术(转)的相关文章

Quora使用到的技术

本文主要参考了Phil Whelan的这篇文章<Quora’s Technology Examined>.关于Quora是个什么网站我就不多说了,国内对他的C2C网站叫“知乎”.呵呵.我们还是来看看Quora的技术吧. Search-Box Quora只能搜索问题,主题标签,用户名,和主题标题.没有全文搜索,所以,你无法搜索问题和答案的内容.而搜索中使用前缀搜索方式,比如你 输入mi,则Microsoft会马上出来.其搜索还会有一些非常简单的模糊匹配的算法.另外,如果有重复的问题,其中一个问题

Quora的技术探索(转)

原文:http://www.cnblogs.com/xiekeli/archive/2012/04/27/2473808.html 关于问答类的应用,最早接触的是stackoverflow和知乎 ,而Quora作为知乎的原型,因为其创始人来自FaceBook而吸引了我.事实上关于Quora的技术分析,冯大辉和陈皓都已经有所详细的阐述:<Quora 用了哪些技术 ?><Quora使用到的技术>.通过他们的文章,我看到了一篇更详细的说明<Quora’s Technology Ex

Quora的技术探索

关于问答类的应用,最早接触的是stackoverflow和知乎 ,而Quora作为知乎的原型,因为其创始人来自FaceBook而吸引了我.事实上关于Quora的技术分析,冯大辉和陈皓都已经有所详细的阐述:<Quora 用了哪些技术 ?><Quora使用到的技术>.通过他们的文章,我看到了一篇更详细的说明<Quora's Technology Examined>.看完以后感觉有很多东西值得深入的去学习和整理.于是决定将这篇文章先翻译出来,作为后面web学习的引子吧.下面开

作为一个软件工程师,在接下来的 5-10 年内应该掌握的技术

这是一个发布在Quora上的问题,提问者问到:“作为一个软件工程师,想要生存下去,在未来的 5-10 年内有哪些必须掌握的技能呢?例如人工智能?高等数学?” 下面是一位曾经在 Facebook 和 Google 工作过,目前在 Uber 就职的程序员 Pedram Keyani 的分享,目前已获得 3500+ 的赞: 如果你的目标是成为一名通用软件工程师,那么未来 5-10 年需要掌握的技能与过去 5-10 年并没有什么太多的差别. 通用技能: 深刻理解计算机科学的基本原理 数据库 网络技术 编

技术资料的几种读法

作为一名程序员,有几种获取知识的渠道,比如本文将要讨论的技术书籍.开源代码.学术论文.这些可能都不是什么秘密,但每个人都有不同的方式和习惯,也就对应有不同的效果和效率.本文就分享下自己这些年来的一些经验,不一定适用每个人,但也许每个人能有些小的触动和收获. 1.技术书籍 可能程序员都很少读书,因为这个时代就是这样的特点,读书的人在减少.大家更多地从工作日常获得知识,对于程序员来说比如CSDN.StackOverflow.Quora等.但这种获取知识的方式就好比上厕所时看手机,获取的都是所谓的“碎

国外前端高质量技术文章网站汇总

有些网站需要FQ 所以推荐一个FQ工具 链接:https://github.com/getlantern/lantern 中文:https://github.com/getlantern/forum google搜索japan av就可以看大片了!?????? 言归正传 注:带介绍的是一些很火很活跃的,不带介绍的一星期浏览一遍就够了 1.https://www.reddit.com/r/javascript/ reddit是一个娱乐社交新闻网站,其javascript频道有许多高质量文章 2.h

踏实学习前端,学技术,必有高薪,好的人生,学习量大能力要求高就对了

准备工作 欢迎大家加入百度前端学院,或者即使你没有报名成功,你也可以通过一起学习实践以下内容,来进行前端技术的学习.在正式开始学习之前,我们希望您做好以下准备: 时间 报名时很多同学都在疑虑每天3-4个小时的时间很难保证,事实上,除了某些在实验室确实有很多工作任务的同学,大部分同学读书时候的时间是被大量挥霍中,计算一下自己每天有多少时间在打游戏,刷微博,聊微信,逛BBS. 我们推荐您每天用两个时间段来学习,每天早上9点以前,如果没有课程或其他安排,用1-2个小时左右的时间进行阅读.信息的搜寻和记

技术问答站点与论坛为什么半死不活

前段时间写了本书,<深入浅出 Qt on Android >.在此过程中常常泡在 Qt 相关的各个论坛与博客,比方 qt-project .KDAB .CSDN移动开发 Qt 版 . qtcn . qter --之前我初学 Qt Embedded 时也以前出没于部分 Qt 论坛-- 技术问答的现状 我要说的是一个现象:在这些技术论坛里.提问的人非常多.回答的人也非常多,但真正能解决这个问题的.究竟有多少?这是无法统计的,虽然像 CSDN 的论坛有较为完好的结贴机制.依旧不能解决这个问题. 假设

Quora:一天就能Get的计算机技能

有哪些实用的计算机相关技能,可以在一天内学会? 这个问题来自 Quora 网友,题主还补充说: 注:这个问题特指和计算机打交道的技能. 寒假我有一个月的时间,我想学习很多大约一天就能学会的实用技能.我不期望(一天)精通,但有了良好理解后,我能做些基本操作.比如,我想学习如何使用 Eclipse 的调试器,如何创建 makefile,学习一些重要的 Linux 终端命令. 以下的列表是来自Quora网友回复的归纳总结.译者在有些技能下面添加了简明教程与技巧的文章,另外也推荐了一些相关联的简明课程.