在3个服务器有1个主站和2个没有分区的从站的简单情况下。是否有经过验证的java和Jedis解决方案没有单点故障,并且会自动处理单个服务器故障,即主服务器或从服务器(自动故障切换)。例如在失败后促进主人和重新设置而不丢失任何数据。Redis/Jedis没有单点故障和自动故障转移
在我看来,它应该是一个解决的问题,但我无法找到任何代码,只是对可能的方式进行高级别描述。
究竟谁拥有这样的产品?
在3个服务器有1个主站和2个没有分区的从站的简单情况下。是否有经过验证的java和Jedis解决方案没有单点故障,并且会自动处理单个服务器故障,即主服务器或从服务器(自动故障切换)。例如在失败后促进主人和重新设置而不丢失任何数据。Redis/Jedis没有单点故障和自动故障转移
在我看来,它应该是一个解决的问题,但我无法找到任何代码,只是对可能的方式进行高级别描述。
究竟谁拥有这样的产品?
你可能想给一个尝试Redis Sentinel以实现:
Redis的哨兵是旨在帮助管理的Redis实例的系统。 它执行以下三项任务:
监测。哨兵不断检查你的主从实例是否按预期工作。
通知。 Sentinel可以通过API向系统管理员或其他计算机程序通知被监测的Redis实例的一个 有问题。
自动故障转移。如果主站未按预期工作,则Sentinel可以启动故障切换过程,其中从站升级为主站,其他附加从站重新配置为使用新主站,使用Redis服务器的应用程序通知新地址 连接时使用。
...或使用像Zookeeper和Jedis_failover外部解决方案:
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。
[Update] ...或者Jedis + Sentinel的纯Java解决方案是使用处理Redis Sentinel事件的包装器,请参阅SentinelBasedJedisPoolWrapper。
目前使用Jedis 2.4.2(来自git),我没有找到一种方法来仅基于redis或sentinel进行故障切换。我希望有一个办法。我正在考虑现在探索zookeeper选项。 Redis集群在性能和稳定性方面表现良好,但仍处于测试阶段。
如果有人有更好的见解让我们知道。
似乎没有一段代码可以用于java,我可以使用sentinels。我得到了压倒一切的想法,但是现在人们在生产中实际使用的是字面代码吗? – 2013-05-03 13:04:35
在没有Sentinel的情况下管理Redis **的自动故障转移**将始终需要一个外部软件。但是,您是否看过FailSafe实施? https://开头github上。com/xetorthio/jedis/pull/386它不会像真正的故障转移一样好,但如果你正在寻找一个快速解决方案,它可能是一个很好的起点 – FGRibreau 2013-05-03 13:09:01
“但是现在人们实际上使用的是字面代码在生产?“ Zookeeper现在主要是Redis Sentinel。 – FGRibreau 2013-05-03 13:14:05