问题声明:我的应用程序将部署在三个不同的区域,即:北美、欧洲和亚洲。我想构建一个具有以下约束条件的redis体系结构:
让我对第二点稍作阐述:我希望所有区域都有自己的数据副本。因此,应用程序在欧洲写入的任何新数据都应该发送到欧洲地区的redis集群,而不是任何其他区域。然后,这些数据可以(异步)复制到亚洲和北美地区。
到目前为止,我发现我不能像我想要的那样使用红色哨兵。我不能使用(我认为)在不同区域的主服务器上使用红宝石集群,因为这会将所有地区的数据分割开来,因此欧洲的应用程序可以尝试在亚洲的一个红宝石主服务器上编写一个切分的键。
因此,我的问题是:这种架构现在()用Redis还是在不久的将来?
我读过这、这和这的文章,说明这个特性以前是不可用的,但是看起来这个特性在RedisEntireprise这里中是可用的,但是对于开放源码版本的Redis,我找不到关于这个主题的任何东西。
发布于 2018-04-18 02:48:08
一种可能的解决方案可以是使用redis键散列标记,在每个区域(如redis_master_US、redis_master_europe等)使用一个redis主键,在多个区域(以提高读取性能和可用性)中使用从键,其中键可以是{ US }_California、{US}_Texas、{EU}_Germany、{ASIA}_Japan等。但这里的问题是,前缀US的所有键都将转到相同的redis主键,但不一定是redis_master_US,这取决于主程序之间的散列槽分布。现在有一种方法可以解决这个问题,如果我们使用有预谋的redis键散列标记,就可以找到这里。
现在我们可以使用一个键,如{fyimk7v1CgnBo}_California、{fyimk7v1CgnBo}_Texas、{91Lnyl}_Germany、{6MQu4Y}_Japan,我们知道它们将分别指向槽0、16382和8325,并在创建集群时确保这些时隙分别分配给redis_master_US、redis_master_Germany和redis_master_asia。
尽管这种方法似乎带来了很多问题。
https://stackoverflow.com/questions/49082307
复制相似问题