我目前正在考虑用Cassandra处理世界各地客户的最佳方法。我想我在美国和欧洲都有服务器。是否有影响存储数据的服务器的机制?对于在美国的用户来说,数据应该托管在美国服务器上,而在欧洲只有一个安全副本。一般来说,我在考虑UUID,它可以被识别为某个位置。例如,如果设置了最后一个位,那么它应该在美国的服务器上,而在欧洲则是这样。然后,我想写一个定制的分区器,它将值赋值给美国服务器范围内的值。例如,如果以00-7f开头是欧洲,80-ff是在美国。因此,我可以使用一个普通的Murmur3,它根据UUID中的位置信息设置第一个位。我能影响某个服务器的分区范围吗?我认为,特别是对于虚拟节点,这可能会变得更加复杂。是否有一种方法可以实现基于服务器位置的分区选择?你会如何解决这个问题?
发布于 2016-04-04 01:17:14
现在,您需要为每个区域提供不同的密钥空间。完成后,您可以将复制策略设置为NetworkTopologyStrategy
,然后使用NTS设置复制因子,以匹配您对数据局部性的期望。
有一个开放问题( 卡桑德拉-7306 ),它建议增加机会,以您所描述的方式来控制本地。现在,没有迹象表明它已接近正常工作,也没有迹象表明它将在不久的将来实现,因此实现该功能的实际方法是使用NetworkTopologyStrategy
和适当配置复制因子。
https://stackoverflow.com/questions/36391758
复制相似问题