我目前正在考虑使用Cassandra处理全球客户的最佳方式。我想我在美国和欧洲都有服务器。是否存在影响数据存储在哪些服务器上的机制?对于美国用户,数据应托管在美国服务器上,并且只能在欧洲托管一份安全副本。一般来说,我在想UUID,可以将其识别为某个位置。例如,如果设置了最后一位,则它应位于美国的服务器上,否则应位于欧洲。然后我在想auf编写一个自定义分区程序,它将值赋给美国服务器范围内的值。例如,如果从00-7f开始是欧洲,而80-ff在美国。所以我可以使用普通的Murmur3,它根据UUID中的位置信息设置第一位。我可以影响某个服务器的分区范围吗?特别是对于虚拟节点,我认为这可能会变得复杂。有没有办法实现像所需的基于服务器位置的分区选择?你会如何解决这个问题?
答案 0 :(得分:1)
现在,您需要为每个区域设置不同的键空间。完成后,您可以将复制策略设置为NetworkTopologyStrategy
,然后使用NTS设置复制因子以匹配您对数据位置的期望。
存在一个未解决的问题(CASSANDRA-7306),建议以您描述的方式添加控制局部性的机会。现在,没有迹象表明它接近工作,或者它将在不久的将来实现,所以实现这一点的事实上的方法是使用NetworkTopologyStrategy
并适当地配置复制因子。