【问题标题】:How store data on servers close to the users location in Cassandra?如何将数据存储在靠近 Cassandra 用户位置的服务器上?
【发布时间】:2016-04-03 22:00:46
【问题描述】:

我目前正在考虑使用 Cassandra 处理世界各地客户的最佳方式。我想我在美国和欧洲都有服务器。是否有一种机制可以影响数据存储在哪些服务器上?对于美国用户,数据应托管在美国服务器上,而在欧洲只有一份安全副本。一般来说,我在考虑可以识别为某个位置的 UUID。例如,如果设置了最后一位,则它应该在美国的服务器上,否则在欧洲的服务器上。然后我正在考虑编写一个自定义分区器,它将值分配给美国服务器范围内的值。例如,如果它以 00-7f 开头是欧洲,而 80-ff 是在美国。所以我可以使用一个普通的 Murmur3,它根据 UUID 中的位置信息设置第一位。我可以影响某个服务器的分区范围吗?我认为,尤其是对于虚拟节点,这可能会变得复杂。有没有办法实现所需的基于服务器位置的分区选择?您将如何尝试解决这个问题?

【问题讨论】:

    标签: cassandra location uuid partition


    【解决方案1】:

    现在,您需要为每个区域设置不同的键空间。完成后,您可以将复制策略设置为NetworkTopologyStrategy,然后使用 NTS 设置复制因子以匹配您对数据局部性的期望。

    有一个未解决的问题 (CASSANDRA-7306) 建议增加以您描述的方式控制局部性的机会。目前,没有迹象表明它已经接近工作,或者它会在不久的将来实现,所以实际上实现它的方法是使用NetworkTopologyStrategy 并适当地配置复制因子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2014-03-26
      • 1970-01-01
      • 2016-10-13
      • 2020-10-12
      • 2016-08-20
      • 1970-01-01
      相关资源
      最近更新 更多