很多团队都在学习、研究 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 生成 HTML、CSS 与 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 上的相关评论,上文中已经给出相关链接。

转载自:Quora 用了哪些技术 ?, 英文原文见:Quora’s Technology Examined

转载于:https://www.cnblogs.com/wufawei/archive/2012/02/25/2367772.html

Quora 用了哪些技术 ?(zz)相关推荐

  1. Quora使用到的技术

    本文主要参考了Phil Whelan的这篇文章<Quora's Technology Examined>.关于Quora是个什么网站我就不多说了,国内对他的C2C网站叫"知乎&q ...

  2. Quora 用了哪些技术 ?

    很多团队都在学习.研究 Quora .前段时间看到这篇 Quora's Technology Examined ,阐述了 Quora 的技术架构,有一些值得关注的信息,记录并分享一下. 使用云计算服务 ...

  3. 【分享】Quora使用到的技术

    http://sd.csdn.net/a/20110704/301038.html 导读:酷壳网的陈皓以前向大家介绍过Stack Exchange的系统架构和Facebook的系统架构,今天向大家介绍 ...

  4. Win2000/XP服务与后门技术(zz)

    一.序言 Windows下的服务程序都遵循服务控制管理器(SCM)的接口标准,它们会在登录系统时自动运行,甚至在没有用户登录系统的情况下也会正常执行,类似与UNIX系统中的守护进程(daemon). ...

  5. H.264编码技术(zz)

    转摘 http://www.360doc.com/content/06/1012/14/7551_228580.shtml 一.H.264的制定过程和应用场合 在制订完最初的H.263标准之后,ITU ...

  6. 机器人与机器人仿真技术(zz)

    http://www.viblue.com/archives/5587.htm 一.机器人简介: 机器人(Robot)是自动执行工作的机器装置.它既可以接受人类指挥,又可以运行预先编排的程序,也可以根 ...

  7. 机器学习、数据科学、人工智能、深度学习和统计学之间的区别!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Vincent Granville,来源:机器之心 在这篇文章中, ...

  8. 一文读懂机器学习、数据科学、人工智能、深度学习和统计学之间的区别!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 作者:Vincent Granville 来源:机器之心公众号 链接:http://www.d ...

  9. python知乎-学会python的好处,轻易搭建自己的知乎

    学会python的好处,轻易搭建自己的知乎 更新时间:2019年02月16日18时22分 来源:python培训 浏览次数: 关于python,有的人关注他的应用领域,有的人关注他有多大的号召力,不过 ...

  10. 学python的好处-学会python的好处,轻易搭建自己的知乎

    学会python的好处,轻易搭建自己的知乎 更新时间:2019年02月16日18时22分 来源:python培训 浏览次数: 关于python,有的人关注他的应用领域,有的人关注他有多大的号召力,不过 ...

最新文章

  1. 割点 割边 板子 UVA-796
  2. Debussy的安装
  3. Adapter (适配器模式)
  4. Struts2.3,s:iterator,c:forEach遍历map中的list集合
  5. 公路交通安全设施设计细则_转让江苏公路交通工程(公路安全设施分项)二级资质(包安许)...
  6. 基于selenium的爬虫
  7. Python接口自动化之logging日志
  8. SmartUpload出现的问题
  9. mingw 使用 HPSocket 进阶版
  10. JavaScript打点计时器
  11. 重置IDEA,将原来的设置清除
  12. AI为何成为云计算巨头的新战场?双剑合璧又会有怎样的表现?
  13. c语言程序设计拉丁方阵结构图,C语言实例:拉丁方阵
  14. ccxt php系统,CCXT中文开发手册
  15. Superset-轻量级开源可视化BI工具
  16. 餐饮水单打印软件_火锅店连锁企业使用哪款生鲜管理系统软件比较好呢?
  17. 【免费程序分享】Discuz仿手游控游戏论坛商业版网站模板/Discuz游戏论坛网站模板
  18. module java.base does not “opens java.util“ to unnamed module
  19. PXIe/PXI背板 全混合8槽 4 Link架构 系统带宽14GB/s 单槽4GB/s 兼容主流PXIe厂商PXIe控制器
  20. 木老师教笨笨课堂——系列讲座(从函数指针到委托) 三、C++语言里的函数指针...

热门文章

  1. 设计原则 里氏替换原则
  2. 小小恋歌(小さな恋のうた)
  3. Android - 获取字符串长度的宽度
  4. Linux - wxWidgets安装和编译HelloWorld
  5. Prototype对象
  6. 浅谈ViewState原理
  7. 程序员玩连连看的正确姿势
  8. http://blog.csdn.net/jiazimo/article/details/17265061
  9. My sql 常用函数
  10. Spring.Net学习笔记十(打造简易的依赖注入框架)