【问题标题】:Redis Sentinel and ShardedJedis for ShardedJedisPipelineRedis Sentinel 和 ShardedJedis 用于 ShardedJedisPipeline
【发布时间】:2015-10-03 01:49:52
【问题描述】:

我最初在生产环境中以集群模式使用Redis。但后来我意识到,如果我使用Redis independent serversShardedJedis java API,我可以使用性能更好的ShardedJedisPipeline,原因很明显。 但是在使用Redis Server 来维护自动故障转移和高可用性时,我必须使用Redis Sentinel。所以,我开始研究Sentinel。但是在做最初的POC时,我知道我不能同时使用ShardedJedisSentinel

现在看来我所有的路径都关闭了

  1. Redis Cluster 不支持流水线
  2. 没有Sentinel,我无法实现高可用性和自动故障转移
  3. 我不能将SentinelShardedJedis 一起使用。

如果我在任何地方有错误,请纠正我,并建议我实现性能以及高可用性和自动故障转移的最佳策略。

【问题讨论】:

    标签: java redis jedis redis-sentinel


    【解决方案1】:

    笼统地说:

    • Redis Cluster 支持 Pipelining 的方式与 Redis Standalone 相同。这里的重要部分是在使用键发出命令时击中正确的节点。没有键的命令(例如 MULTIEXEC)对于 Redis 集群是不行的
    • HA 部分并非 100% 正确。虽然 Redis 集群确实没有像 Redis Sentinel 那样的 HA-Registry,但集群本身维护了一个拓扑。如果使用主服务器和从服务器,对新主服务器进行客户端故障转移并不是什么大问题。这里唯一的技巧是找到合适的时机并相应地更新集群视图。

    AFAIK,Redisson 具有自动拓扑更新机制。我不确定 Jedis 是否会定期更新其集群视图,但可以手动执行此操作。 lettuce 具有自动重新连接功能,自动集群视图更新为scheduled for the 3.3 release

    HTH。

    【讨论】:

    • 我找到了一个third party API,它为 JedisSentinelPool 提供了 ShardedJedis。但是当你建议更多的 API,比如 Redisson 和 lettuce 时,我真的很困惑哪个 API 更好或最好。您能帮我选择正确的 API 吗?
    • 是的,这取决于您的要求。这里有一个类似的问题:stackoverflow.com/questions/30878431/…
    【解决方案2】:

    您应该考虑 Redis Cluster 的行为(Redis Cluster 可以在任何操作中响应触发重定向)。

    Redis Cluster 的每个进程都像普通的 Redis 进程一样,所以它支持 Pipelining。 但是,它并不能保证我们在使用多个节点进行流水线操作时是安全的。

    这是一个漫长的讨论,所以我附上了我发布到 Redis Google Groups 的关于 Redis Cluster with Pipeline 的链接。 请参阅此处了解更多详情。

    Redis Cluster with Pipeline

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多