Cassandra 数据中心复制高级用法
Cassandra datacenters replication advanced usage
对于一个项目,我们使用 Cassandra 集群以便快速 reads/writes 处理大量(面向列的)生成的数据。
到目前为止,我们只有 1 个数据中心用于原型设计。
我们现在计划将我们的集群拆分为 2 个数据中心以满足性能要求(两个数据中心之间的数据传输非常慢):
- 数据中心#1:位于我们的数据生产者服务附近:在 Cassandra 中集中写入所有数据定期(每次写入在其主键中都有一个“run_id”列)
- 数据中心#2:位于我们的数据消费者服务附近:针对给定的“运行_id”集中读取数据中心#1 生成的所有数据。
但是,我们希望我们的消费者服务仅在它们附近的数据中心(数据中心 #2)访问数据和,当给定“run_id的所有数据” 已完全从数据中心 #1 复制(生产者服务生成的数据)。
我的问题是:在告诉生产者服务(数据中心 #2 附近)开始使用它们之前,我们如何确保所有数据都已复制到数据中心 #2?
到目前为止我们最好的解决方案(但仍然不够好:-P):
- 生产者服务(数据中心 #1)以一致性写入“全部”。但这会导致分区容错能力差,写入性能也很差。
- 生产者服务(数据中心#1)以一致性“local_quorum”写入,最后一个“运行完成”值可以以一致性“全部”写入。但似乎 Cassandra 不确保复制顺序。
你有什么建议吗?
非常感谢,
面料
看来这个问题没有灵丹妙药。
我们设法为我们的应用程序使用单个数据中心。我们将使用另一个,但作为备份并可能以降级方式使用。
对于一个项目,我们使用 Cassandra 集群以便快速 reads/writes 处理大量(面向列的)生成的数据。
到目前为止,我们只有 1 个数据中心用于原型设计。
我们现在计划将我们的集群拆分为 2 个数据中心以满足性能要求(两个数据中心之间的数据传输非常慢):
- 数据中心#1:位于我们的数据生产者服务附近:在 Cassandra 中集中写入所有数据定期(每次写入在其主键中都有一个“run_id”列)
- 数据中心#2:位于我们的数据消费者服务附近:针对给定的“运行_id”集中读取数据中心#1 生成的所有数据。
但是,我们希望我们的消费者服务仅在它们附近的数据中心(数据中心 #2)访问数据和,当给定“run_id的所有数据” 已完全从数据中心 #1 复制(生产者服务生成的数据)。
我的问题是:在告诉生产者服务(数据中心 #2 附近)开始使用它们之前,我们如何确保所有数据都已复制到数据中心 #2?
到目前为止我们最好的解决方案(但仍然不够好:-P):
- 生产者服务(数据中心 #1)以一致性写入“全部”。但这会导致分区容错能力差,写入性能也很差。
- 生产者服务(数据中心#1)以一致性“local_quorum”写入,最后一个“运行完成”值可以以一致性“全部”写入。但似乎 Cassandra 不确保复制顺序。
你有什么建议吗?
非常感谢,
面料
看来这个问题没有灵丹妙药。
我们设法为我们的应用程序使用单个数据中心。我们将使用另一个,但作为备份并可能以降级方式使用。