大型 RSS 阅读器的工作原理(netvibes、Google 阅读器...)

Posted

技术标签:

【中文标题】大型 RSS 阅读器的工作原理(netvibes、Google 阅读器...)【英文标题】:How large RSS reader works (netvibes, Google reader...) 【发布时间】:2011-04-26 08:50:17 【问题描述】:

我想知道 Google Reader、Blogline、techronati 等 Web 应用程序是如何工作的,以及它们使用 cron 作业一次解析数百万个 RSS 提要的技术是什么?

【问题讨论】:

【参考方案1】:

很多不同的技术......“最差”的技术就是你所描述的技术。 (基于时间的轮询)。

您需要考虑的第一件事是它们可能并非都在服务器端进行解析。例如,我知道 Netvibes 在客户端进行解析(但将内容缓存在服务器上),因此为他们节省了大量资源。这样,他们将仅在用户向他们询问时轮询提要,因此他们无需运行某种时间循环。

不幸的是,基于时间的轮询仍然是最常见的解决方案。有很多技术可以确定何时是进行民意调查的最佳时间。根据过去更新的频率,根据订阅用户的数量……等等。这些家伙也可以使用旧的 XML-RPC ping 服务器。

最有效的技术是使用PubSubHubbub,这是一种开放协议,被 Google Reader、Netvibes 和数千个其他应用程序(如 Digg.com、Twitterfeed、Friendfeed...)使用。它是一个开放协议,它允许提要发布者直接将提要的内容推送到订阅应用程序。它非常有效,但需要发布者实施。偶然地,所有大型博客平台(Tumblr、Posterous、Wordpress、Blogger、SixApart 等)都实施了它。其他提要发布应用程序(如 feedburner、Gowalla...)也实现了它。如果您确实发布了提要,我会鼓励您加入这个群体,如果您打算消费一些,请同时实施订阅方。

最后一个解决方案是使用第 3 方应用程序来收集数据(使用上述所有技术),并在这些提要实际上有新内容时 ping 您。我创建了一个:Superfeedr,我相信我们在这方面做得很好。我们还对内容进行规范化,并做一些其他事情来帮助您以最简单和廉价的方式使用提要数据(轮询可能会非常昂贵)。此外,我们使用完全相同的 PubSubHubbub 协议从任何供稿推送内容,这使得我们的用户除了订阅可用的集线器之外,还可以非常简单地使用我们的服务。

另外,我应该补充一点,我能够快速回复您的问题,因为我使用了一个应用程序,它会向我推送标记为 RSS 的问题的提要内容:)

【讨论】:

即使在轮询提要时,Google 阅读器也会进行一项有趣的优化:“Google 阅读器将大约每小时检查一次您的订阅是否有更新。对于订阅者很少的提要,更新的频率可能会稍低一些。” reference 这是官方声明,尽管我看到一些提要(Gizmodo、Slashdot)的更新频率更高(每 5 分钟一次?)。对于我是唯一订阅者的订阅源,通常每天只能看到 1 或 2 次更新。这被其他人证实是好的,但不是官方说的。

以上是关于大型 RSS 阅读器的工作原理(netvibes、Google 阅读器...)的主要内容,如果未能解决你的问题,请参考以下文章

PHP:索引大型RSS源数组

云原生之kubernetes实战在k8s环境下部署RSS阅读器Selfoss

《大型网站技术架构核心原理与案例分析》阅读笔记-01

阅读网页内容(可能是RSS)

如何将RSS源视为格式化XML?

从C#SyndicationFeed中读取所有rss项