0

我正在探索接收和持久化大量请求(并发和跨多个服务器)的方法,并且我对存储传入数据包以供以后处理的最快可靠方法的看法很感兴趣。我已将范围缩小到这些选项,但我确信有一个我没有想过的创造性解决方案:

  • 文件系统(在这种情况下,什么是最可靠的写入文件系统)?
  • 磁盘保留在内存数据存储(Redis/Memcached/etc)中?
  • 将数据排队到 AMQ 并从那里处理它们?
  • NoSQL 数据库(MongoDB/Couch)?
  • Hadoop集群?

谢谢

4

1 回答 1

2

我正在使用Fluentd将小数据包(请求日志)转储到中央日志接收器(s3)。这具有服务器上的低延迟和将所有数据集中在一个中心位置的优点。例如,您可以从那里使用您的 hadoop 集群来处理它们。

它在用作输入((sys)log、http 套接字、直接代码集成)及其输出(s3、文件、(no)sqldb、scribe 等)方面也非常灵活。

至于您的选择,我的发现是:

  • 文件系统:很快,但您在多台服务器上运行时会遇到麻烦,因为 rsync 与 cron 不是一个真正稳定的选项。
  • 在内存存储中:也很快,但是内存管理很困难,因为它很快就会被填满。
  • AMQ:可以工作,但并不是真正为非常高的吞吐量而设计的。
  • 中央数据库:可行的选择
  • Hadoop:真正用于处理这些数据,而不是存储它。

您还可以查看有关中央日志记录的这篇博文。

于 2012-10-29T17:02:13.540 回答