【问题标题】:Concept for temporary data in Apache CassandraApache Cassandra 中临时数据的概念
【发布时间】:2020-06-13 13:57:35
【问题描述】:

我有一个关于 Cassandra 用于临时数据的问题(一次写入数据库的数据,从数据库读取一次然后删除)。

我们使用 Cassandra 在不同机器/不同容器上运行的进程之间交换数据。 Process1 正在向 Cassandra 写入一些数据,Process2 正在读取这些数据。之后,可以删除数据。 我们了解到 Cassandra 不喜欢经常在一个表中写入和删除数据,因为墓碑和性能问题,我们正在为此创建临时表。

Process1:创建表,将数据写入表。 Process2 : 从表中读取数据,删除表。

但是以非常高的数量(每小时创建和删除 500-1000 个表)执行此操作,我们在节点之间的模式同步方面面临问题(我们有 6 个节点的集群)。 Cassandra 集群变得非常慢,我们收到很多超时警告,我们收到有关节点上不同模式的错误,集群节点上的 CPU 负载增长到 100%,然后集群就死了 :-)。

Cassandra 是这个用例的正确数据库吗?

是我们如何配置集群的问题吗?

为此创建临时键空间会是更好的解决方案吗?

有没有人知道如何使用 Cassandra 处理此类用例?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    这里不需要任何数据库。您的用例是使您的应用程序能够相互握手以异步共享数据。有两种可能的解决方案:

    1) 对于基于批处理的写入和读取,请考虑使用 HDFS 之类的东西作为中间存储。进程1将数据文件写入HDFS目录,进程2从HDFS中读取。

    2) 对于基于消息的系统,可以考虑 Kafka 之类的东西。进程 1 处理数据流并写入 Kafka 主题,进程 2 消费者从 Kafka 主题中读取数据。 Kafka 确实提供了 Ack/Nack 功能。

    在 Cassandra 中连续创建和删除多个表不是一个好的做法,也不建议这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 2018-06-20
      • 2011-10-09
      • 2020-03-23
      • 2019-10-06
      • 1970-01-01
      • 2015-07-06
      相关资源
      最近更新 更多