本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 865|回复: 0
打印 上一主题 下一主题

(连载)90天创造奇迹:Digg与时间赛跑,打造Google Reader替代品(四)

[复制链接]
跳转到指定楼层
1#
发表于 2013-6-24 14:46:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编者按:前文讲述了Digg Reader的产生并非偶然。然而要打造一款Google Reader的替代品并非易事。甚至Google Reader之父Chris Wetherell也为Digg团队感到担心。此为连载第四篇:所以你们要打造一款阅读器?(前文详情:连载一连载二连载三
“我很欣赏他们的抱负,这是一份苦差事。要完成好将面临难以想象的挑战。”Chris Wetherell 说。许多年前,Wetherell 建立了 Google Reader——被枪毙掉的产品中最受欢迎且最实用的产品之一。当谈到 Digg 团队面临什么时,他摇着头,发出了一声常常的叹息:“此时此刻,我为他们感到同情和恐惧。”
RSS 阅读从技术上来说极度复杂。对于起步者来说,有一大堆的信息要抓取和整合。从博客到如《纽约时报》这类的主流出版物,再到日历订阅和种类繁多的个人服务。Digg 必须获取所有信息,并很快地反馈给你。
“数据库的之大是一个难以想象的挑战,”Wetherell 解释说,“互联网如此庞大,但它也只是一堆网页的集合。但 RSS 阅读数据存储潜在的大小可能几倍于互联网。”举个例子,一个网站可能有很多的订阅源,其中有一些是在搜索问题或标签时找到的订阅源,所有这些数据都要被收集到 Digg 的服务器中。Wetherell 说:“存储所有必要信息并将它们传送至一个世界级的 RSS 阅读器中,所花费的代价是巨大的。希望他们在银行里有一些积蓄。”
下面所说的可能是一种典型的阅读体验。比如说,你想要订阅你的 Flickr 中所有标签为“食物”的照片。那是 Digg 从 API 调用中抓取的一个特定照片子集。每次你打开 Digg Reader,它就要为你载入专属于你的数据。当越来越多的用户参与进来时,这需要非常强大而快速的计算能力。而这只是一个款阅读器要解决的众多问题之一。
当某位用户加载 Digg Reader 时,Digg 的服务器就要访问这位用户订阅的所有订阅源,找到用户上次访问之后加入的文章,然后将它们按逆向时间顺序整合起来。有两种方式来传递这些信息:Digg 等待用户发送载入请求(拉),或不断向他们推送新的文章(推)。后者速度更快,但将给服务器造成更大的负担。(目前,Digg 打算使用前者,最终期望能实现两者的混合使用。)
与此同时,阅读器要做许多的运算。在它推送文章之前,阅读器必须计算出哪些文章你已经读过,而哪些你还没有读过,并将这个信息展现出来。Digg 希望你对文章采取一些行动(至少是让你能够采取行动),因此它还必须把与每篇文章相关的数据记录下来:你把它分享到 Twitter 或 Facebook 上了吗?你 Digg 它了吗?你是否把它发送到 Pocket 或 Instapaper 以供日后阅读?如果答案是 Yes,它就需要通过相关的图标显示这个信息。——这或许没什么好说的,但这些信息是专属于你的,因此对每一位用户、每一篇文章,它都必须一次又一次地进行运算。
这还只是 Digg 团队要在三个月内解决的问题中最表层的一些,还有许许多多琐碎繁琐的问题等待着他们:数不清的对用户交互方式如何进行处理的小决策。比如,当人们思考如何“简单”移植现有产品时,大部分人从未考虑过的 API 缓存。而且所有交互处理都必须在非常短的时间内进行。对于一款 RSS 阅读器,它应该做到即时响应。
“速度快,利弊兼具。”Digg CTO Michael Young 解释说。他阐述的是对前端软件和后台数据的影响。“阅读器载入迅速、及时,这样我们就能第一时间获取到刚发布的文章。”这需要大量的工作,而时间是最关键的问题。“RSS 就很痛苦了。就拿《连线》的 RSS 来所说,我必须反复地检查。”(就在这时,Young 开始模仿起计算机访问服务器了)“有新的文章吗?有新的文章吗?有新的文章吗?如果频率很高的话,比如,每 15 分钟进行一次,一些网站就会阻止我的访问了。”更多情况下,每分钟就要进行一次。
从根本上说,这是一个残缺的体系。订阅者想要在新文章上线的第一时间就在 RSS 阅读器上看到它们。然而,除非发布者采取一种推送更新提示的方式,否则除了通过现阶段每 15 分钟才进行一次缓慢爬取订阅源的形式,Digg 阅读器是不可能知道的。有一些网站几个星期才发布一次,每 15 分钟进行一次的检测就足够了。但一些对于喷涌而出的新闻和服务讯息,如实时交通信息,这样的更新速度就实在太慢了。想像这样一个场景:Digg 在 3:00 爬取一次《连线》的订阅,但《连线》在 3:01 发出了一篇新文章,而我又恰好在 3:14 分载入了 Digg Reader。那么我就无法看到这篇新文章,即使在我载入之前相当一段时间,它已经发布了。
“想在 Google 之外解决这个问题,是让我陷入同情而紧张的思考中而忍不住摇头的巨大挑战之一。”Wetherell 说,“Google Reader 成功的原因之一是,它背后有世界上最棒的爬取系统做支撑。”
每个在互联网上发布信息的人都希望他的信息出现在 Google 上,因为 Google 就是流量的象征,而流量又是金钱的象征。发布者希望 Google 机器人尽可能多地访问他们的网站。但他们不一定希望几十个 RSS 阅读器一次又一次地检查他们的系统。太过频繁地访问,他们可能会处罚你,阻止你的机器人。失去了机器人,你也将失去你的读者。
当我于五月初拜访 Digg 时,白板上写满了待办事项。中间散落了一些如“国安局窃听”(现在看来,很有先见之明)和“Windows Phone 软件”(我问起这个时,他们只是笑笑)的笑话。然而 5 月 31 日时,大部分的待办事项已经完成,而且团队已经准备好把 Digg Reader 从测试服务器转移到 Digg.com 了。几乎与此同时,整个网站崩溃了。当 Young 意识到迎接所有访问 Digg 用户的是 503 error 时,他头都大了。天啊!
本以为问题重大,结果是,他们只重启一下路由器就解决了。
(未完待续……)

ChinaGDG.com
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表