Cassandra中的分布式日志

时间:2018-04-17 12:24:01

标签: apache logging cassandra cassandra-3.0 distributed-system

我找到了将应用程序日志存储在Cassandra中的方法。

我有三个节点设置(节点1,节点2和节点3),其中我的Web应用程序在所有三个节点中作为集群运行并且负载平衡,因此将从所有节点生成日志。

Cassandra在所有三个节点中运行,并且日志从所有三个Web应用程序转储到Cassandra集群中,该集群每天都被分区。

这种方法存在问题:
1)我正在使用我的Web应用程序将数据写入Cassandra 2)对于每天的分区,数据量非常高

那么有更好的方法吗?

这是一种好的设计方法吗?

谢谢,
哈利

1 个答案:

答案 0 :(得分:1)

在Cassandra中存储日志的选择值得商榷;因为对数据的分析变得困难但可行。 ELK(Elastic-Logstash-Kibana)或Splunk因其原生的“文本”搜索支持和仪表板而成为日志分析的更受欢迎的选择。

话虽如此,让我们看看手头的问题

  

1)我正在使用我的Web应用程序将数据写入Cassandra。

我想到的建议是:

  • 写入是异步完成的吗?推荐使用。
  • 这些写入期间使用的一致性级别是多少?一致性越高,Web应用程序在C *上等待的时间就越慢(假设是同步写入)。记住C *仍然可以有RF = 3,但你可以做一致性= 1。
  • 如果C *群集出现故障会怎样?网络应用程序随之而来吗?
  

2)对于每天的分区,数据量非常高

  • 这里有两个问题 - 胖分区和同一个节点被打了一整天(导致热点)。工作负载未分发到整个群集。
  • 分区大小可以减少为每小时而不是整天。但是我们只是将一个节点的占用空间从一天缩短到一小时。它仍然是一小时的热点。
  • 您可以执行“第二级”分区,以便跨节点统一分配数据,而不会导致巨大的分区(取决于应用程序的繁琐程度)。但是,这是用于日志监控的C *值得怀疑的地方吗?
  • C *将解决的所有查询是什么?如何聚合二级数据分区并回答典型日志分析过程中出现的各种问题?

使用此C * DB必须回答的所有日志分析问题(查询)重新审视设计?答案应该自动排队。