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

回到顶部