Redis群集/负载平衡

时间:2017-01-06 06:44:39

标签: redis queue cluster-computing

Redis不支持主复制。

在redis教程中我可以看到有一个配置,有6个节点,3个主服务器,3个从服务器,

任何人都可以告诉我这个配置的目的是什么(奴隶是故障转移,3个主人的目的是什么?)

我的要求是减少从应用服务器到Redis的连接数。所以我正在寻找一种可以指向多个redis节点的方法,所以如果我从redis节点1创建一个密钥,我可以从Redis节点2中删除该密钥。

有可能吗?

1 个答案:

答案 0 :(得分:1)

首先,如果你在

中做的很少,你可以改变默认配置
  

redis的-trib.rb

在函数def check_create_parameters中。您可以设置一个主副本和一个从副本。

此配置的目的是容错。从站也可用于读取(READONLY)。在三个主服务器中,哈希值均匀分布,并且可以使用负载平衡算法重新分配和实际密钥。在节点之间分配密钥的可能算法的步骤是(由我测试并且它按预期工作):

  1. 找到主人群
  2. 获取他们持有的密钥总数
  3. 为每个主节点存储主机名,端口和密钥数
  4. 计算每个主人必须持有的钥匙,以便 要平衡的密钥分配(集群/密钥的总密钥 (大师)
  5. 查找必须采用或提供密钥的总节点数和总金额 他们必须给予/采取的钥匙
  6. 根据是否将主服务器表征为源节点或目标节点 他们分别收到或赠送钥匙
  7. 开始从源节点迁移到目标节点,首先是 hashslots然后是相关的密钥并迭代直到所有的 主人拥有相同数量的钥匙
  8. 此算法有助于最大限度地缩短响应时间。我的意思是:

    使用三个主控器可以最小化响应时间。如果您的配置包含一个主设备,并且此主设备包含例如30000个#keys,则一次获得1000个密钥的响应时间为>来自具有2个主人的配置,每个主人拥有15000个。

    如果您在master1中创建了一个密钥,那么如果您尝试从master2访问(读取)该密钥,您将收到MOVED错误。因此,解决方案是创建一个智能客户端,将哈希值映射到相应的节点。因此,只有在master2将请求重定向到正确的主服务器的情况下,才能从master2中删除密钥。

    希望有所帮助。