需要为多个日志源提供分布式高性能持久日志解决方案

需要为多个日志源提供分布式高性能持久日志解决方案

寻找高性能分布式可扩展解决方案来存储大量日志消息。我们有多个并发日志源(=服务器)。

有趣的是性能至关重要如果日志系统性能更好,我们甚至愿意丢失一小部分(比如说最多 2%)的日常消息。

我们希望使用在线算法每天处理日志消息,因此我们不需要任何花哨的关系数据库。我们只想按顺序运行数据并计算一些汇总和趋势。

这就是我们所需要的:

  • 至少 98% 的消息必须被保存。丢失几条消息不是问题。
  • 一旦存储了消息,就必须可靠地存储它(持久性,又称为 ACID 中的 D - 因此基本上需要复制)
  • 多种来源。
  • 消息必须按顺序存储,但不需要精确排序(我们期望任何两个相隔几秒的消息都按正确的顺序排列,但彼此接近的消息可以按任意顺序排列)
  • 我们必须能够按顺序处理每日数据(理想情况下采用某种可靠的方式,如 map-reduce,这样可以处理机器故障并重新启动发生故障的节点上的处理)

任何 RDBMS 在这里肯定都不是一个选择,因为它保证了太多(对于这个任务来说是不必要的)属性。

答案1

我想你想要水槽。它似乎满足了您所寻找的大部分要点 - 多种来源、可靠性(E2E 保证)、写入 HDFS 的能力(分布式、容错存储,集成到 Hadoop 中用于 map/reduce)。

编辑:我还想提一下另一种可能性。它基于 C++,由 Facebook 编写,但似乎已被上游大部分抛弃。尽管如此,它的占用空间比 Flume 低得多,尽管包括所有 Flume 依赖项(如 Zookeeper)的占用空间。而且它也可以写入 HDFS。

答案2

分布式Splunk设置可以满足您的需求,但听起来您有大量的日志数据;它是根据每天索引的数据量进行许可的,所以并不便宜。

相关内容