5

我们当前的 Redis 设置是一个 Web 应用程序客户端,使用 Jedis 直接连接,使用一个 JedisPool 写入单个 Redis 主服务器,使用第二个 JedisPool 读取单个 Redis 从属服务器。从站设置为复制主站。

我们正在转向在客户端上使用 JedisSentinelPool 并引入 Sentinel 以更干净地处理故障转移。As far as I know, it seems that the JedisSentinelPool only communicates with the currently elected master, so now all writes/reads go to the master. 与之前可以将读取分配给从属设备相比。

有什么方法可以使用 JedisSentinelPool 将读取分配给从站以实现负载平衡?或者有必要使用 JedisPool 手动实现这一点(如前所述)在这种情况下,如果 master 失败,JedisSentinelPool 现在将指向旧奴隶(新主人),JedisPool 仍将愚蠢地指向旧奴隶,并且有效旧奴隶(新主人)现在将处理读写?

Redis Sentinel(或其他)是否具有任何负载平衡(而不是故障转移)功能?我们目前只有一个slave,是否可以添加更多的slave来进行负载均衡?如果是这样,推荐的配置是什么?

任何建议,这里的实际经验将不胜感激。

4

1 回答 1

1

我写了一个新的 JedisSentinelPool ,可以通过负载平衡从从站读取,从主站写入,它使用 redis 订阅从站,我在我的 Web 应用程序中使用它,参见代码github sentinel-slave-jedis-pool

于 2018-02-07T04:17:38.340 回答