编程语言只是一种工具,它不应该成为我们技术前进之路上的壁垒。

redis 官网文档 sentinel 简单翻译 && 简单总结QA

笔记只是笔记,适当做总结可以提前提炼出将来可能在实践中遇到的问题。

sentinel简单Q-A:

Q1:sentinel有什么特点?

A1:

主从模式是redis高可用的一个基本模式,但是没有自动故障转移,sentinel实现了自动故障转移;

sentinel可以monitor多套master-replica集群,以master-name区分;

sentinel可以发现其他的sentinel,还可以通过monitor的master节点来发现它的replicas节点列表,这种自动发现功能是通过订阅了“__sentinel:hello”通道实现的,机理是每个sentinel往通道上发布自己信息,监控同一个master的sentinel可以收到其他sentinel发布的信息。

 

Q2:使用sentinel后客户端有什么改变?

A2:

使用sentinel架构后,客户端不再处理繁多的redis master和replica节点的地址信息,只需要和sentinel进行连接就可以获取到相应的 master-replica 集群的地址信息。这在 redis 节点变更时能做到客户端层面透明无“感知”。

虽然通过Q1中的部分内容我们知道 sentinel可以发现其他的sentinel,但是出于需要在客户端高可用的考虑,仍应该填写两个或两个以上的sentinel节点信息(从厮大的《深入理解Kafka核心设计与实践原理》学的,想学 kafka 的童鞋们推荐入手一本),避免只填一个节点导致单点故障。代码示例如下:

(注意:不管用什么redis客户端,需要你用的redis客户端支持sentinel API)

 1 public static void testSentinel() throws Exception {
 2          String masterName = "mymaster";
 3          Set<String> sentinels = new HashSet<>();
 4          sentinels.add("192.168.92.100:26379");
 5          sentinels.add("192.168.92.101:26379");
 6  
 7          JedisSentinelPool pool = new JedisSentinelPool(masterName, sentinels); 
 8          Jedis jedis = pool.getResource();
 9          jedis.set("key1", "value1");
10          pool.close();
11 }

 

 

 

posted on 2019-09-12 11:13  独角没有戏  阅读(293)  评论(0编辑  收藏  举报

导航