Redis / Jedis没有单点故障和自动故障转移
在简单情况下,如果3台服务器具有1个主服务器和2个从属服务器而没有分片。是否有使用Java和Jedis的经过验证的解决方案,该解决方案没有单点故障,并且将自动处理单个服务器(无论是主服务器还是从服务器)(自动故障转移)。例如,提升主机并在故障后重置,而不会丢失任何数据。
在我看来,这似乎应该是一个已解决的问题,但是我找不到关于它的任何代码,而仅是对实现此方法的高级描述。
谁实际覆盖并在生产中工作?
回答:
您可能想尝试Redis Sentinel来实现:
Redis Sentinel是旨在帮助管理Redis实例的系统。它执行以下三个任务:
。Sentinel不断检查您的主实例和从实例是否按预期工作。
。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();
}
});
请参阅Zookeeper + Redis的此演示文稿。
…或Jedis + Sentinel的纯Java解决方案是使用处理Redis
Sentinel事件的包装器,请参见SentinelBasedJedisPoolWrapper。
以上是 Redis / Jedis没有单点故障和自动故障转移 的全部内容, 来源链接: utcz.com/qa/403889.html