代码之家  ›  专栏  ›  技术社区  ›  Harry

Cassandra中的分布式日志

  •  0
  • Harry  · 技术社区  · 7 年前

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

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

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

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

    那么,有没有更好的方法?

    这是好的设计方法吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   dilsingi    7 年前

    在卡桑德拉存储日志的选择是有争议的;随着数据分析变得困难但可行。ELK(Elastic Logstash Kibana)或Splunk是更受欢迎的日志分析选择,因为它们的原生“文本”搜索支持和仪表盘。

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

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

    我想到的建议如下:

    • 写入是否异步完成?推荐。
    • 在这些写入过程中使用的一致性级别是什么?一致性越高,web应用程序将变得越慢,因为它在C*上等待的时间就越长(假设同步写入)。记住,C*仍然可以使RF=3,但可以使一致性=1。
    • 如果C*集群宕机会发生什么情况?web应用是否也会随之下降?

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

    • 这里有两个问题-Fat分区和同一个节点整天都被击中(导致热点)。工作负载没有分布到整个集群。
    • 分区大小可以减少为每小时一次,而不是一整天。但我们只是将一个节点被击中的时间从一天减少到了一小时。这仍然是一个小时的热点。
    • 您可以进行“第二”级分区,以获得跨节点的数据均匀分布,并且不会导致巨大的分区(取决于应用程序的聊天程度)。但这就是C*用于日志监控的优点值得怀疑的地方?
    • C*将解决哪些查询?如何聚合第二级数据分区并回答典型日志分析过程中出现的各种问题?

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