Digg工程师讲述Digg背后的技术

虽然最近业绩有所下滑,也出现了一些技术故障,但Digg作为首屈一指的社会化新闻网站,其背后的技术还是值得一探,Digg工程师 Dave Beckett 在今年4月份写一篇名为《How Digg is Built》的文章,非常系统地将Digg背后的技术展现给大家,非常值得一看。

一、Digg提供的服务

  • 一个社会化的新闻网站
  • 对个人来说它又是一个私人社会化新闻发布平台
  • 一个广告平台
  • 一个开放API的平台
  • 博客及文档系统

二、Digg 的核心功能

  • 文章提交功能 – 提交你认为有价值的新闻
  • 文章列表功能 – 将用户提交的新闻做各种不同纬度的列表(个人新闻,最近发布等)
  • 对文章的操作 – 用户可以对文章进行各种操作,包括阅读、点击、digg、评论、为评论评分等等
  • 置顶文章功能 – Digg会定时将一些热门的文章置顶到Digg首页,从页让更多人能够看到

三、Digg功能的背后的实现

首先我们看一个流程图,描述了普通用户在使用Digg其间Digg的具体模块运作:

点击可查看大图

其实这中间的操作包括了两部分:同步和异步

  • 对用户进行即时响应的同步操作:同步操作主要表示对用户请求(包括API请求)的即时快速响应,包括一些在页面中通过AJAX方式进行的异步请求。这些操作通常要求最长一两秒的时间内就能完成。
  • 离线批量进行的异步计算:除了实时响应的请求外,有时候还需要进行一些批量的计算任务,这些任务可能是间接的被用户启动的,但用户不会等待这些任务的完成。这些异步计算通常可能会花费数秒,数分钟甚至几小时。

这两部分在Digg中的应用方式可以用下面这张图描述:

点击可查看大图

上面是总体概述,下面一部分我们会深入Digg的各个功能部件进行深入研究。

1.在线web系统

提供Web页面服务及API服务的部分组成如下:PHP作前端语言构建的CMS系统,Python构建的API服务器,它们运行在 Tornado 上。它们通过 Thrift 协议与主存储层进行交互,很多数据会被如Memcached 和Redis 这样的内存缓存系统缓存。

2.消息系统

Digg 使用RabbitMQ 作队列系统,将不用同步响应的操作放到队列异步地进行。

3.批量异步处理系统

上面的消息系统是指队列,而这个指的是具体从队列取出任务执行的部分。此系统将任务从队列中取出,进行一定的计算后再对主存储进行操作,对主存储的操作在实时系统和异步批量系统中都是一样的。

4.数据存储层

数据存储层Digg使用了多个产品来完成各种不同的任务,具体列表如下:

  • Cassandra:对诸如文章、用户、Digg操作记录等 “Object-like” 的信息,都是使用Cassandra来存储的。我们使用的是Cassandra0.6版本,由于0.6版本并没有劫持二级索引,于是我们将数据通过应用层处理后再用它进行存储。比如我们的用户数据层提供通过用户名及Email地址来查询用户信息的接口。
  • HDFS:主要用到日志信息存储及分析计算,利用Hive 操作 Hadoop,进行MapReduce计算。
  • MogileFS:是一个分布式文件存储系统,用以存储二进制的文件,比如用户头像,截屏图片等。当然,文件存储的上层还有统一的CDN。
  • MySQL:目前我们的文章置顶功能上使用了MySQL存储一些数据,因为这一功能需要大量的JOIN操作。与此同时 HBase 好像也是个不错的考虑。
  • Redis:由于Redis 的高性能及其灵活的数据结构,我们用它来提供对 Digg Streaming API 的存储,同时我们还用Redis 来构建实时浏览和点击计数器。
  • SOLR:用来构建全文索引系统。以提供对文章内容、话题等的全文检索。
  • Scribe:日志收集系统,比syslog-ng更强大更简单。用它收集的日志会被放到HDFS进行分析计算。

5.操作系统及配置

Digg runs on Debian stable based GNU/Linux servers which we configure with Clusto,Puppet and using a configuration system over Zookeeper.

时间: 2024-08-26 03:30:02

Digg工程师讲述Digg背后的技术的相关文章

阿里巴巴2016双11背后的技术(不一样的技术创新)

每年的"双11"是阿里技术的大阅兵和创新能力的集中检阅.2016年的"双11"背后,更是蕴藏了异常丰富的技术实践与突破. 历经1个月的编写,最终27篇精华技术文章入册<不一样的技术创新-阿里巴巴2016双11背后的技术>(以下简称<不一样的技术创新>)一书.这27篇"24K纯度"的技术干货,是阿里"双11"八年来技术演进结果的最新展示,凝聚了阿里工程师的智慧和创造力. 所有参与<不一样的技术创新&

探寻百度AI3.0背后的技术实践

2018年7月28日,安卓绿色联盟携手百度联盟和华为终端开放实验室共同举办的<探寻百度AI3.0背后的技术实践>主题技术沙龙在北京西二旗华为大厦圆满落幕.来自百度简单搜索.百度安全.百度AIG.百度地图.百度云的五位资深技术专家围绕AI这个主题进行了精彩的技术分享,吸引了近200名开发者现场参与. 1.简单搜索中的技术架构和人工智能落地 百度资深安卓研发工程师高扬从事多年安卓和移动端的开发工作,目前主要专注于简单搜索的Android端架构以及人工智能的技术落地. 高扬表示,现阶段人工智能相关的

【转发】前腾讯搜索技术专家:为你揭露产品ASO背后的技术

作者:王亮,曾在腾讯搜搜,搜狗从事过多年的搜索引擎算法研发,目前响应国家号召,投身于轰轰烈烈的全民创业中 Aso工具基本是App运营人员的标配了,目前有ann9,appannie,searchman,sensortower等众多aso工具,“鸟哥笔记”也有很多文章介绍这些工具的使用方法.但从小老师就教育我们,“知其然,并知其所以然”,才能学的更好,才能考上更好的大学,才能#¥%#¥%¥#...,作为从事搜索技术多年的码农,这里就为大家讲讲aso背后的技术. 网站需要搜索优化,对应的,app就需要

关于“吴亦凡入伍”H5背后的技术—兼容android

在“吴亦凡入伍”H5刷爆朋友圈之后,看到网上有较多同学对背后的技术感兴趣,正好借着机会跟大家分享一下.如果你正好也遇到在android下视频自动播放和两个视频连续播放(中间不需要触发)的问题,希望本文会对你有所帮助. 关于这个H5大概的实现原理,网上已经有人分析的很详细,我这里就不多做介绍了. 这次要分享是在兼容android下遇到的难点和兼容的思路: 第一个问题就是为了实现 Page1中里面图片中的人物要突然动起来,然后走出页面,那么video在初始化的时候就不能出现播放的icon,在IOS下

音频透传背后的技术实现

现在市面上流行的电视盒大部分都是Android,"音频透传"是一个经常见到的词,那到底什么是音频透传.音频透传背后的技术实现到底如何,引起了我的兴趣,因此花了点时间研究了一下.由于是针对全志H8的电视盒方案进行分析,因此分析的结果不具有普遍性,可能其它的方案在技术实现上有所不同. 在开始分析前先查找了一下关于"透传"这个概念的解释,根据度娘的说法是"透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,

会展工程师分享展示设计灯光效果技术

展示设计中可谓是最重要的环节,展示设计如果缺少了灯光效果,那就相当于一个人丢失了灵魂,所以,展示设计中最不可少的就是灯光效果.人的眼球,对光有很强敏感度,灯光可以引起消费者对整个展示设计的共鸣,提高人气.当然,灯光效果有利肯定有弊,如果利用的不好可能会引起消费者眼球的不适,造成展台无人光顾.通常灯光照明的方式有:点式照明.线式照明和面式照明三种方式.点式照明具有特殊的格调,气氛较宁静而不喧闹:线式照明擅长表现照明空间中的运动感,给人轻松.柔和的感觉,是视觉的引导者:面式照明的特点既宽容,为何又充

什么是web前端工程师?要掌握哪些技术?

随着互联网的迅猛发展和普及,一个新型的行业和新兴的职位正在上升到技术的层面:web前端开发工程师.对于很多零基础的web前端初学者而言,什么是web前端工程师?Web前端工程师是做什么的?学习web前端能做什么?刚接触web前端都会被各种问题困扰.下面,千锋小编为大家一一解惑. 1.什么是web前端工程师? Web前端开发工程师,其工作岗位主要职责是利用(X)HTML/CSS/JavaScript/DOM/Flash等各种Web技术进行产品的界面开发(不过现在flash已经基本淡出网页元素了,而

揭秘央视春晚直播背后的技术硬实力

2020年1月24日晚间8点,一首开年贺岁歌舞<春潮颂>拉开了鼠年春晚的序幕.<这就是街舞>.2019第一神曲<野狼Disco>的改编版本<过年迪斯科>.<风雪饺子情>.<走过场>等众多的节目更是将春晚推向了一波又一波的高潮. 今年的春晚不仅演员阵容庞大,就连主持人阵容进行了"大换血",各种创新的节目更是赢得观众的阵阵喝彩.本届春晚堪称一场科技的视觉盛宴,其中春晚舞台首次打造三层立体舞美,同时运用飞屏技术营造出36

阿里资深工程师分享支付宝热补丁技术—— AndFix原理

本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理,它本质上就是hook要修改的函数,这样一来在正式版本发布时就不能直接拿热补丁的代码集成进去了,因为热补丁是按hook的思路,并且按照实现XC_MethodReplacement类的方式写的,正式的补丁还需要重新包装一边.更重要的是dexposed对art的支持并不好,大大限制了它的使用范围. 今天我们介绍的是AndFix方案:https://github.com/alibaba/An