使用全文搜索的多站点归档日志记录的NoSQL

时间:2016-06-26 05:44:23

标签: elasticsearch logging cassandra couchbase nosql

我正在考虑构建一个有点复杂的日志处理系统来替换旧的ad-hoc设置,并且可以使用一些建议。我对SQL数据库和网络非常熟悉,但对NoSQL商店来说却是一个新手,这似乎是解决这个问题的关键。请注意,我们有一个非常好的团队,但是有限的许可预算,所以免费/开源选项是非常受欢迎的。 (也就是说,如果事情变成梨形,那么支持的可用性会很好。)

要求:

  • 在全球多个站点以几GB /天的范围生成的存档(测试)日志。
  • 在每个站点上提供对这些日志的全文搜索,以便进行调试。
  • 将存档的数据推回到中心位置(尽管每个站点的副本都绝对可以)。
  • 在中心位置提供对该数据的分析。

约束:

  • 这些网站目前有相当废话的互联网连接(高延迟和相当低的带宽)。大部分数据都是在白天生成的,同步的很大一部分必须落后并且每天都过夜。
  • 如果WAN完全脱机,网站必须能够正常运行。

附加功能

  • 日志数据(通常)是高度可压缩的。任何压缩通过WAN在节点之间进行交易的数据的解决方案都是首选。
  • 许多日志文件在多级层次结构中彼此相关,这种关系非常重要,必须予以维护!
  • 网站一般不会修改相同的数据,也不会在存储后再次修改。这大部分都是档案。
  • 我们可以在生成日志时流式传输,也可以推送日志块。流媒体是首选,因为它会大大简化。

我知道的选项:

  • 用于日志记录和本地配置管理的本地MySQL和文件夹结构。
    • 这就是我们现在所拥有的,它正在运行,但无论如何都不是长期的解决方案。
  • Elasticsearch
  • 卡桑德拉
    • 这似乎有内置的多站点支持,但我并不完全熟悉数据模型。对于像这样的事情,这是一个很好的选择吗,或者如果我试一试,我会讨厌自己吗?
  • 的CouchDB
    • 这是一个文档存储,似乎(?)与日志数据很匹配,但似乎并没有多站点支持。
  • Apache Kafka
    • 我读了这篇文章,但我还没有完全理解它......

问题:

  • 这些中的任何一个实际上是否允许您对日志进行流附加,还是最适合转储已完成的文件?
  • 我有什么解决方案可能会更好吗?
  • 有关多站点的任何建议以及一些不支持多站点的选项吗?

有趣的链接:

1 个答案:

答案 0 :(得分:1)

我可能有点偏颇,因为Couchbase是我的雇主,但这听起来像是XDCR (Cross Datacenter Replication)要解决的那种问题。

您可以站在多个地理站点上的群集(Couchbase将这些称为“数据中心”),然后XDCR会自动在站点之间复制(双向)数据。如果我理解你的要求,这听起来就像你需要的那样。