Cassandra数据中心之间的一种复制方式

时间:2018-06-05 15:12:35

标签: deployment cassandra database-replication cassandra-3.0

我们建议将Cassandra实现为大型归档解决方案的数据库后端(与读取相比,大量写入)。我们正在寻找有关Cassandra复制和部署策略的输入,以适应我们的用例。

Cassandra的选择基于以下因素:

  • 支持“写入”操作的大吞吐量 - 每秒数千个同时写入
  • 工程数据的适用性(主要是时间序列数据)
  • 支持连续望远镜操作的高可用性
  • 工具支持,例如分析,报告

数据估算

  • 每年250 TB的增长(系统寿命50年)

使用案例

我们有两个数据中心 - Operations DC和Analytics DC(用于隔离读写工作负载)。在这篇文章的最后是描述所提出的架构的图表。 由于存储限制,我们无法在Operations DC上存储终生生成的数据。因此,我们计划根据定义的政策将操作DC中的数据移至Analytics DC(让我们说在1周后)。

问题

  1. 是否有可能在数据中心之间的Cassandra中进行单向复制? Operations DC的数据移至Analytics DC。但在Analytics DC中处理后存储的数据不得复制到Operations DC中。
  2. Cassandra能否控制复制的内容?我们不希望两个DC同步。我们希望将要复制(实际移动)的内容配置到Analytics DC中。 Cassandra本身可能存在吗?如果我想指定只应将最近一周的数据从Operations Data Center复制到Analytics数据中心。
  3. 我们计划使用Cassandra内置的生存时间功能来删除数据(仅限于操作DC)。从Operations DC中删除的数据不应从Analytics DC中删除。如何防止删除数据的复制?

  4. 我已经读过单个Cassandra节点最多可以处理2-3 TB的数据。任何较大的Cassandra实现的任何文档参考都会有所帮助。

  5. 应该部署多少个Cassandra节点来处理这种增长?什么是推荐的部署策略?

  6. 性能注意事项:尽管Operations DC的存储空间有限(3-7天数据,大约5-10 TB),但Analytics DC上的数据存储是累积的,并且会随着时间的推移而持续增长。分析DC上的数据库增长是否会影响复制并降低Operations DC的性能。

  7. 这里的目的是了解Cassandra的内置功能是否可用于支持上述要求。我知道最明显的解决方案。两个DC之间没有复制。从Operations DC转储最近一周的数据并将其移至Analytics DC。

    Proposed architecture diagram

2 个答案:

答案 0 :(得分:1)

我认为在你的情况下,只有"分开" DC - 例如,一个DC中的键空间不会复制到另一个DC中 - 只需创建具有必要的相应复制设置的键空间。

或者你可以复制" transactional"加载到两个DC,并有一个工作,将定期从"事务" keypace into" analytics"键空间,然后从"事务中删除数据" keypace释放空间。

但是,在你使用类似DSE的高级复制之类的东西之前,不可能有类似于你所描述的东西(但它不是关于DC,而是关于单独的集群)。

答案 1 :(得分:1)

  1. 是的,复制是按每个键空间配置的。

  2. 开箱即用,但可以使它起作用。我可以想到两个相对简单的选择。最简单的方法是批量写入两个密钥空间/ DC,一个写入TTL,另一个不写入。您还可以每月/每年创建一个密钥空间,从其复制到多个DC开始,并在适当时删除“正常” DC。

  3. Cassandra cluster - data density (data size per node) - looking for feedback and advises

  4. Cassandra在一个集群中最多可以容纳约800-1000个实例,但是为了便于操作,通常建议将其分片小于一个实例

  5. DC可以不对称。