在一个简单的情况下,有3台服务器,1个主服务器和2个从服务器,没有分片。有没有经过验证的java和Jedis解决方案,它没有单点故障,可以自动处理单个服务器的故障,无论是主服务器还是从服务器(自动故障转移)。例如,升级主节点并在故障后重置,而不丢失任何数据。
在我看来,这应该是一个已经解决的问题,但我找不到任何关于它的代码,只是对可能的方法进行了高级描述。
究竟是谁负责这方面的工作并在生产中工作?
发布于 2013-05-03 20:56:11
您可能希望尝试一下Redis Sentinel来实现这一点:
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。
更新 ...或者使用Jedis + Sentinel的纯Java解决方案是使用处理Redis Sentinel事件的包装器,请参阅SentinelBasedJedisPoolWrapper。
发布于 2014-03-12 18:14:29
目前使用的是Jedis 2.4.2 (来自git ),我没有找到一种只基于Redis或Sentinel进行故障转移的方法。我希望有一种方法。我现在正在考虑探索一下zookeeper选项。Redis集群在性能甚至稳定性方面都工作得很好,但它仍处于测试阶段。
如果有人有更好的洞察力,请让我们知道。
https://stackoverflow.com/questions/16318877
复制相似问题