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

原文地址:

http://www.dbanotes.net/arch/quora_tech.html

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

  1. Quora使用到的技术

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

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

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

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

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

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

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

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

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

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

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

  7. 收集的计算机编程电子书目录,仅供日后查阅方便

    本人有收集电子书的癖好.每日在网上收集经典的电子书籍,尤其喜欢原版的,看起来舒服.不过总是心血来潮,当时下载后瞅几眼,之后就束之高阁,再也不问津了.很为此苦恼,过后找某本书时也总是不知道在哪,为了查找 ...

  8. Java实现lucene搜索功能

    直接上代码: package com.sand.mpa.sousuo;//--------------------- Change Logs---------------------- //<p ...

  9. Quora的用到的一些技术

    [zt]Quora的用到的一些技术 很多团队都在学习.研究 Quora .前段时间看到这篇 Quora's Technology Examined ,阐述了 Quora 的技术架构,有一些值得关注的信 ...

最新文章

  1. MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征
  2. mysql定义外键_MySQL定义外键的方法
  3. 知识表示与融入技术前沿进展及应用
  4. java垂直拆分,MyCat分片:垂直拆分实例解析和代码实现
  5. Android 3.0细节曝光:Google程序更耀眼
  6. springxml解析
  7. java实现linux变量替换_linux java 配置 含环境变量 | 学步园
  8. functional correspondence by matrix completion
  9. 链表排序---迭代版本归并算法 + [leetcode]148. 排序链表
  10. java数组线性查找_数组查找: 线性查找与二分查找
  11. ls命令输出的文件颜色
  12. 如何获得Android手机的软件安装列表
  13. 搭建C语言开发环境,编写hello,world
  14. python绘制正多边形_python : turtle 画正多边形
  15. BBS中用SSH方式登录添加附件
  16. ITA和意大利荣耀与共,助力蓝衣军团欧洲杯决赛战胜英格兰!
  17. 阿里巴巴校招2017前端笔试题目 -- 原生js/html5 实现一个路由
  18. 机器学习实战(1)——概览
  19. debian重启ssh服务_Win10自带的ssh客户端key权限设置
  20. 网页游戏制作html5,利用HTML5 Canvas制作一个简单的打飞机游戏

热门文章

  1. C#笔记 Newtonsoft.Json
  2. Mac 安装和使用Nginx教程
  3. 韦布尔分布 matlab,MATLAB绘制威布尔分布曲线
  4. ArcGIS制图浮雕效果
  5. UE5 无法打开VisualStudio修复
  6. 低延时高RTSP兼容的EasyPlayer-RTSP-win解决H.264一帧多个nal单元录像花屏问题方案
  7. html js 无限循环,JavaScript For 循环
  8. C++从入门到进阶的系列书籍推荐
  9. Loadrunner进行手机APP压力测试(亲测可行)
  10. 血杀英雄为什么不显示服务器,血杀英雄游戏界面介绍_血杀英雄新手指南_游戏城...