首页 > 其他分享 >哨兵模式

哨兵模式

时间:2022-11-14 23:46:44浏览次数:51  
标签:主机 redis 模式 哨兵 jedisPoolConfig sentinel jedisSentinelPool

1、什么是哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

2、怎么玩

1、调整主从服务器为一主二仆模式,6379主、6380、6381仆

2、自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

3、配置哨兵,填写内容

sentinel monitor mymaster 127.0.0.1 6379 1

其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。

4、启动哨兵

/usr/local/bin
redis做压测可以用自带的redis-benchmark工具

redis-sentinel /myredis/sentinel.conf

5、当主机挂掉,从机选举中产生新的主机

(大概10秒左右可以看到哨兵窗口日志,切换了新的主机)
哪个从机会被选举为主机呢?根据优先级别:slave-priority
原主机重启后会变为从机。

6、复制延时

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

3、故障恢复

  • 优先级在redis.conf中默认:slave-priority 100,值越小优先级越高
  • 偏移量是指获得原主机数据最全的
  • 每个redis实例启动后都会随机生成一个40位的runid

4、主从复制



private static JedisSentinelPool jedisSentinelPool=null;

public static  Jedis getJedisFromSentinel(){
if(jedisSentinelPool==null){
            Set<String> sentinelSet=new HashSet<>();
            sentinelSet.add("192.168.11.103:26379");

            JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(10); //最大可用连接数
jedisPoolConfig.setMaxIdle(5); //最大闲置连接数
jedisPoolConfig.setMinIdle(5); //最小闲置连接数
jedisPoolConfig.setBlockWhenExhausted(true); //连接耗尽是否等待
jedisPoolConfig.setMaxWaitMillis(2000); //等待时间
jedisPoolConfig.setTestOnBorrow(true); //取连接的时候进行一下测试 ping pong

jedisSentinelPool=new JedisSentinelPool("mymaster",sentinelSet,jedisPoolConfig);
return jedisSentinelPool.getResource();
        }else{
return jedisSentinelPool.getResource();
        }
}

标签:主机,redis,模式,哨兵,jedisPoolConfig,sentinel,jedisSentinelPool
From: https://www.cnblogs.com/tanhongwei/p/16890935.html

相关文章

  • 软件设计模式白话文系列(九)装饰者模式
    1、描述通过把对象引入包含行为的特殊封装中来为对象增强功能的模式。2、模式结构与实现逻辑具体业务类:这个类的对象就是需要被装饰者模式加强的对象。需要实现抽象装......
  • Reactor模式
    Reactor模式基本设计思想,简单来讲就是I/O复用结合线程池 Reactor模式,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。服务端程序处理传......
  • ActiveMQ经典的使用模式(利用多线程处理消费端)
    今天看视频,里面讲了一个经典的例子,是工作中很常用的,特此将这种模式记录下来.这个例子使用了ActiveMQ的选择器,也使用了之前学的自定义线程池.队列的使用,而且很好的利......
  • Spring框架中都用到了哪些设计模式 ?
    1.简单工厂模式简单工厂模式的本质就是一个工厂类根据传入的参数,动态的决定实例化哪个类。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得......
  • 线程隔离(舱壁模式)
    线程隔离(舱壁模式)1.线程隔离的实现方式线程隔离有两种方式实现:线程池隔离信号量隔离(Sentinel默认采用)线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身......
  • 设计模式之【建造者模式】使用java建造者模式优雅创建对象
    文章目录​​什么是建造者模式​​​​一步一步认清建造者模式​​​​1、传统方式创建对象​​​​2、建造者模式创建对象​​​​建造者模式优缺点​​​​建造者模式适用......
  • 学习笔记-《游戏编程模式》
    《游戏编程模式》全书内容梗概总结这是一篇超过万字读书笔记,总结了《游戏编程模式》一书中所有章节与内容的知识梗概。 目录与说明《游戏编程模式》一书中总共介绍......
  • Java中DCL单例模式设计
    概述单例:某个类,对外永远只有一个对象。实现步骤:/***单例模式:懒汉式套路基础上加入并发控制(synchronized、volatile),保证多线程环境下,对外始终只有一个对象。*1、......
  • 转载 从瀑布到敏捷——漫画解读软件开发模式变迁史
      这张图片从上向下,五个房间,分别是瀑布模型(waterfall),敏捷开发(agile),看板(KANBAN),SCRUM和精益软件开发(lean)。软件过程:软件工程是为了获得高质量软件所需要完成的一系列......
  • 工厂方法模式
    概述《设计模式》中对工厂方法模式的意图描述如下:定义一个创建对象的接口,让子类来决定实例化哪一个类。FactoryMethod使得一个类的实例化延迟到子类一般工厂方法模......