java 什么是哨兵_Java中使用redis哨兵模式

Redis概述

在传统的软件项目中,使用数据库进行数据存储,但是有一些致命的缺陷,这些缺陷反映在性能方面。由于数据库存储数据的介质是磁盘,而磁盘读写的速度比较慢。在不存在大量高并发的应用场景中,这个缺陷显得并不那么重要,甚至可以忽略。但是在某些互联 项目中,高并发业务比比皆是,例如:双十一的大促,热销商品的抢购等等。在这类场景之下系统需要在极短的时间内完成成千上万次读写操作,传统的关系型数据库在处理这类业务场景显得有点力不从心,往往很容易造成数据库崩溃,严重影响业务。

为了克服这些问题,人们为此引入了NOSQL数据库,Redis是当下主流的nosql数据之一。它是一种基于内存的nosql数据库,读写性能远远优于传统的关系型数据库,并且支持集群,分布式,主从同步。这篇文章主要讨论redis的主从同步。

什么是主从同步

和我们常说的一句话“人不能吊死在一棵树上”,道理一样。要保证系统的高可用性,我们不能把希望完全寄托在一个数据库节点上,所以我们需要多个数据库备份来保证我们系统的高可用性。一般的做法就是一主多从,一个主库,多个从库。

主库负责写操作,从库负责读操作,也就是常说的读写分离,主库和从库之间通过数据同步来保证主从库的数据是一致的。这样在其中一台或者多台数据库挂掉之后我们还可以切换到其他数据库来保证系统的正常运行。

什么是哨兵模式

在一主多从的数据库架构中我们说过当其中一个或多个数据库挂掉之后我们可以通过切换到其他还在正常运转的数据库来保证系统的运行。哨兵模式通过监控每个数据库节点,当主库发生故障的时候哨兵会从其他从库中选取一个作为主库。

哨兵是一个独立的进程,独立于redis单独运行。哨兵运行架构如下图:

从上面的图中可以看到当前redis的role是master,也就是主库,它有两个从库:slave0,slave1。那这两个从库是怎么来呢,可以用以下步骤来配置。

三、在Spring中使用哨兵模式

在本案例中我使用的是xml配置的方式使用redis。配置如下所示:

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xmlns:context=”http://www.springframework.org/schema/context”

xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd”>

java测试代码:

public static void main(String[] args) {

Logger logger =Logger.getLogger(RedisService.class.getName());

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“spring-cfg.xml”);

RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class);

redisTemplate.opsForValue().set(“key1”, “value1”);

String value = (String) redisTemplate.opsForValue().get(“key1”);

}

运行上面的代码可以得到下面的日志信息:

错了,因为哨兵不是马上能检测到主服务器挂掉的,检测到之后哨兵之间还会发起一轮投票决定是否进行故障切换(多哨兵的情况),所以中间会有几分钟是不可用的状态,redis哨兵默认3分钟后进行主机切换。3分钟后重新运行得到下面的日志:

024edfc0f5565dfe05affd9212c1c2b6.png

master已经切换到134,端口6379的从节点上。

至此,就完成了一次简单的哨兵模式在redis主从配置中应用的案例。纯属个人笔记,如有遗漏和错误欢迎指正。

标签:主库,Java,数据库,redis,哨兵,从库,主从

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92765 人正在系统学习中 相关资源:哨兵软件测试SAS/SATA硬盘软件_hbasas-Web服务器工具类资源-CSDN…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月22日
下一篇 2021年1月22日

相关推荐