首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis/Jedis没有单点故障和自动故障切换

Redis/Jedis没有单点故障和自动故障切换
EN

Stack Overflow用户
提问于 2013-05-01 21:19:02
回答 2查看 7.7K关注 0票数 7

在一个简单的情况下,有3台服务器,1个主服务器和2个从服务器,没有分片。有没有经过验证的java和Jedis解决方案,它没有单点故障,可以自动处理单个服务器的故障,无论是主服务器还是从服务器(自动故障转移)。例如,升级主节点并在故障后重置,而不丢失任何数据。

在我看来,这应该是一个已经解决的问题,但我找不到任何关于它的代码,只是对可能的方法进行了高级描述。

究竟是谁负责这方面的工作并在生产中工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-03 20:56:11

您可能希望尝试一下Redis Sentinel来实现这一点:

Redis Sentinel是一个帮助管理Redis实例的系统。它执行以下三个任务:

  • Monitoring.Sentinel不断检查您的主实例和从实例是否作为expected.
  • Notification.工作Sentinel可以通过API通知系统管理员或另一个计算机程序受监视的Redis instances.
  • Automatic failover出现问题。如果主机未按预期工作,则Sentinel可以启动故障转移过程,将一个从服务器提升为主服务器,将其他其他从服务器重新配置为使用新的主机,并将连接时要使用的新地址通知给使用Redis服务器的应用程序。

..。或者使用外部解决方案,如ZookeeperJedis_failover

代码语言:javascript
复制
JedisPool pool = new JedisPoolBuilder()
    .withFailoverConfiguration(
        "localhost:2838", // ZooKeeper cluster URL
        Arrays.asList( // List of redis servers
            new HostConfiguration("localhost", 7000), 
            new HostConfiguration("localhost", 7001))) 
    .build();

pool.withJedis(new JedisFunction() {
    @Override
    public void execute(final JedisActions jedis) throws Exception {
        jedis.ping();
    }
});

请参阅此presentation of Zookeeper + Redis

更新 ...或者使用Jedis + Sentinel的纯Java解决方案是使用处理Redis Sentinel事件的包装器,请参阅SentinelBasedJedisPoolWrapper

票数 9
EN

Stack Overflow用户

发布于 2014-03-12 18:14:29

目前使用的是Jedis 2.4.2 (来自git ),我没有找到一种只基于Redis或Sentinel进行故障转移的方法。我希望有一种方法。我现在正在考虑探索一下zookeeper选项。Redis集群在性能甚至稳定性方面都工作得很好,但它仍处于测试阶段。

如果有人有更好的洞察力,请让我们知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16318877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档