Cassandra数据中心复制高级用法

时间:2015-05-28 10:36:59

标签: cassandra bigdata datastax

对于项目,我们使用Cassandra集群,以便对大量(面向列)生成的数据进行快速读/写。

到目前为止,我们只有1个数据中心用于原型设计。

我们现在计划将我们的集群拆分为2个数据中心以满足性能要求(两个数据中心之间的数据传输速度非常慢):

  • 数据中心#1:位于我们的数据生成器服务附近:集中写入Cassandra中的所有数据定期(每个写入的主键都有一个“run_id”列)
  • 数据中心#2:位于我们的数据消费者服务附近:集中读取数据中心#1为给定的“run _id”生成的所有数据。

但是,我们希望我们的消费者服务仅在数据中心#1完全复制给定“run_id”的所有数据时,仅在其附近的数据中心(数据中心#2)中访问数据(生产者服务部门生成的数据)。

我的问题是:在告诉生产者服务(数据中心#2附近)开始使用它们之前,我们如何确保所有数据都已在数据中心#2中复制?

到目前为止我们的最佳解决方案(但仍然不够好:-P):

  • 生产者服务(数据中心#1)以一致性“全部”写入。但这会导致分区失败容忍度差,并且写入性能非常糟糕。
  • 生产者服务(数据中心#1)以一致性“local_quorum”写入,最后一次“run finished”值可以写成一致性“all”。但似乎Cassandra无法确保复制排序。

你有什么建议吗?

非常感谢,

和Fabrice

1 个答案:

答案 0 :(得分:0)

这个问题似乎没有灵丹妙药。

我们设法为我们的应用程序使用单个数据中心。我们将使用另一个但作为备份,并可能以降级方式。