# Tailrank 架构-了解如何在整个徽标范围内跟踪模因

> 原文： [http://highscalability.com/blog/2007/11/19/tailrank-architecture-learn-how-to-track-memes-across-the-en.html](http://highscalability.com/blog/2007/11/19/tailrank-architecture-learn-how-to-track-memes-across-the-en.html)

是否曾经觉得 Blogsphere 拥有 5 亿个频道却没有任何信息？ Tailrank 通过每小时索引超过 2400 万个 Web 日志和源来查找互联网上最热门的频道。 这是每月 52TB 的原始博客内容（不浪费），并且需要连续处理 160Mbit 的 IO。 他们是如何做到的？

这是 Tailrank.com 创始人兼首席执行官 Kevin Burton 的电子邮件采访。 凯文（Kevin）好心地花时间解释了他们如何扩展索引整个博客圈。

## 网站

*   [Tailrank](http://tailrank.com/) -我们跟踪博客圈中最热门的新闻！*   [Spinn3r](http://spinn3r.com/) -您可以用自己的行为来专门研究博客蜘蛛，而不用创建自己的行为。*   [凯文·伯顿（Kevin Burton）的博客](http://feedblog.org)-他的博客结合了政治和技术话题。 两者总是很有趣。

    ## 平台

    *   的 MySQL*   爪哇*   Linux（Debian）*   阿帕奇*   乌贼*   PowerDNS*   存储。*   联合数据库。*   ServerBeach 托管。*   用于工作分配的工作计划系统。

    ## 面试

    *   **您的系统是干什么的？**

    Tailrank 最初是一个 memetracker，用于跟踪博客圈中正在讨论的最热门新闻。

    我们开始收到大量要求许可我们的爬虫的请求，大约 8 个月前，我们以 Spinn3r 的形式发货了。

    Spinn3r 是自包含的搜寻器，适用于希望索引完整徽标和消费者生成的媒体的公司。

    与 Spinn3r 相比，Tailrank 仍然是一个非常重要的产品，我们正在开发 Tailrank 3.0，该产品应在将来推出。 目前没有 ETA，但正在积极研究中。

    *   **您的系统面临哪些特定的设计/架构/实施挑战？**

    我们面临的最大挑战是，我们必须处理和保持分布式系统中的数据一致的庞大数据量。

    例如，我们每月处理 52TB 的内容。 必须在高度可用的存储体系结构中对其进行索引，以便出现正常的分布式数据库问题。

    *   **您是如何应对这些挑战的？**

    我们花了很多时间来构建可以扩展和处理故障的分布式系统。

    例如，我们构建了一个名为 Task / Queue 的工具，该工具类似于 Google 的 MapReduce。 它具有集中式队列服务器，可将工作单元交给发出请求的机器人。

    它对于爬虫非常有效，因为速度较慢的机器以较低的速度获取工作，而更现代的机器（或性能更好的机器）要求以较高的速度工作。

    这样可以轻松解决网络异构的​​主要分布式计算谬论之一。

    任务/队列足够通用，我们可以实际使用它在系统顶部实现 MapReduce。

    我们可能会在某个时候将其开源。 现在它有太多触角缠绕在我们系统的其他部分中。

    *   **您的系统多大？**

    我们每小时索引 2400 万个 Weblog 和提要，并以大约 160-200Mbps 的速度处理内容。

    在原始级别上，我们以大约 10-15MBps 的速度连续写入磁盘。

    *   **您提供多少份文件？ 多少张图片？ 多少数据？**

    现在数据库大约是 500G。 我们预计随着我们扩大产品范围，它的增长将远远超过 2008 年。

    *   **您的增长率是多少？**

    主要是客户功能请求的功能。 如果我们的客户想要更多数据，我们会将其出售给他们。

    我们计划在 2008 年扩展集群，以索引网络和消费者生成的媒体的较大部分。

    *   **您的系统的体系结构是什么？**

    我们将 Java，MySQL 和 Linux 用于我们的集群。

    Java 是用于编写搜寻器的出色语言。 库的支持非常牢固（尽管 Java 7 在添加闭包时似乎将成为杀手））。

    我们将 MySQL 与 InnoDB 结合使用。 尽管看起来我最终花费了 20％的时间来解决 MySQL 错误和限制，但我们大多数还是对此感到满意。

    当然，没有什么是完美的。 例如，MySQL 确实是为在单核系统上使用而设计的。

    MySQL 5.1 版本在修复多核可伸缩性锁定方面更进一步。

    我最近在博客中写道，这些新的多核计算机实际上应该被视为 N 台计算机而不是一个逻辑单元：[分布式计算谬误＃9](http://feedblog.org/2007/09/23/distributed-computing-fallacy-9/) 。

    *   **您的系统如何设计以进行扩展？**

    我们使用联合数据库系统，以便我们可以在看到更多 IO 的情况下分配写负载。

    我们已经在许多基础架构中以开源形式发布了很多代码，并且这些代码也可能会以开源形式发布。

    我们已经开放了很多基础架构代码：*   http://code.tailrank.com/lbpool-与数据库连接池一起使用的负载均衡 JDBC 驱动程序。*   http://code.tailrank.com/feedparser-Java RSS / Atom 解析器，旨在优雅地支持所有版本的 RSS*   http://code.google.com/p/benchmark4j/-与 Windows 的 perfmon 等效的 Java（和 UNIX）*   http://code.google.com/p/spinn3r-client/-用于访问 Spinn3r Web 服务的客户端绑定*   http://code.google.com/p/mysqlslavesync/-克隆 MySQL 安装和设置复制。*   http://code.google.com/p/log5j/-Logger 门面，它支持 printf 样式的消息格式，以提高性能和易于使用。

    *   **您有多少台服务器？**

    到目前为止大约有 15 台机器。 我们花了很多时间来调整我们的基础架构，因此它非常有效。 也就是说，构建可扩展的爬虫并不是一件容易的事，因此确实需要大量硬件。

    我们将在 2008 年将 FAR 扩展到此范围之外，并且可能会击中 2-3 机架机器（约 120 箱）。

    *   **您使用什么操作系统？**

    通过 Debian Etch 在 64 位 Opteron 上运行的 Linux。 我是 Debian 的忠实粉丝。 我不知道为什么更多的硬件供应商不支持 Debian。

    Debian 是山谷中没人谈论的大秘密。 Technorati，Digg 等大多数大型 Web 2.0 商店都使用 Debian。

    *   **您使用哪个 Web 服务器？**

    Apache 2.0。 Lighttpd 也看起来很有趣。

    *   **您使用哪个反向代理？**

    大约 95％的 Tailrank 页面由 Squid 提供。

    *   **您的系统如何部署在数据中心中？**

    我们使用 ServerBeach 进行托管。 对于中小型创业公司来说，这是一个很好的模型。 他们将箱子放在架子上，维护库存，处理网络等。我们只需购买新机器并支付固定的加价。

    希望 Dell，SUN 和 HP 以这种方式直接出售给客户。

    现在一个。 我们希望将冗余扩展为两个。

    *   **您的存储策略是什么？**

    直接连接的存储。 我们每盒购买两个 SATA 驱动器，并将它们设置在 RAID 0 中。

    我们使用廉价数据库解决方案的冗余阵列，因此，如果单个计算机出现故障，则会在另一个盒中复制数据。

    便宜的 SATA 磁盘决定了我们的工作。 它们便宜，商品且快速。

    *   **您的网站是否有标准 API？**

    Tailrank 每页都有 RSS feed。

    Spinn3r 服务本身就是一个 API，我们有关于该协议的大量文档。

    研究人员也可以免费使用它，因此，如果您的任何读者正在攻读博士学位并通常从事研究工作，并且需要访问我们喜欢的博客数据以帮助他们。

    我们已经有使用 Spinn3r 在华盛顿大学和马里兰大学（我的母校）的博士学位学生。

    *   **您使用哪个 DNS 服务？**

    PowerDNS。 这是一个很棒的产品。 我们仅使用 recursor 守护程序，但它是 FAST。 虽然它使用异步 IO，所以它实际上并不能在多核盒子上的处理器之间扩展。 显然，有一种破解方法可以使其跨内核运行，但这并不是很可靠。

    AAA 缓存可能已损坏。 我仍然需要研究这个。

    *   **您欣赏谁？**

    唐纳德·克努斯是男人！

    *   **您如何考虑将来更改架构？**

    我们仍在努力完善完整的数据库。 MySQL 容错和自动升级也是一个问题。

<cite>MySQL 故障
容忍度和自动升级也是一个问题。</cite>

当数据库对您如此重要时，您应该将其像已存在可行替代品的任何其他基础结构商品一样对待：

吞咽困难，然后小便达到最佳状态。

“最好”在旁观者眼中，因此我将其留给读者。

中文 memeTracker 网站： [http://www.onejoo.com/](http://www.onejoo.com/)
监视超过 500 万博客，论坛和新闻。

您如何使用 InnoDB 支持全文搜索？

-伊沃

[http://www.web20friends.net](http://www.web20friends.net)

嗨，伊沃

我们不在 innodb 上使用全文本搜索。...实际上，我们将数据快照加载到 myisam 中，并将其用于全文本搜索。

对于小型文档集，MySQL 全文搜索在某种程度上是可取的。

tailrank feedparser Wiki 为何以票证的形式充满色情链接？
[http://code.tailrank.com/feedparser/report/6](http://code.tailrank.com/feedparser/report/6)

现在，世界上大多数参与计算环境的名人都在使用 MYSQL。 我猜它是从它自己的体系结构中获得流行的。
-----
[http://underwaterseaplants.awardspace.com“](<a rel=) >海洋植物
[http://underwaterseaplants.awardspace.com/seagrapes。 htm“](<a rel=) >海葡萄... [http://underwaterseaplants.awardspace.com/seaweed.htm”](<a rel=) >海藻