iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >浅谈Redis哨兵模式高可用解决方案
  • 282
分享到

浅谈Redis哨兵模式高可用解决方案

2024-04-02 19:04:59 282人浏览 薄情痞子
摘要

目录一、序言1、目标与收获2、端口规划二、单机模拟(一)服务规划1、Redis实例2、哨兵服务(二)服务配置1、Redis实例2、哨兵服务(三)服务管理1、Redis实例2、哨兵服务

一、序言

Redis高可用有两种模式:哨兵模式集群模式,本文基于哨兵模式搭建一主两从三哨兵Redis高可用服务。

1、目标与收获

一主两从三哨兵Redis服务,基本能够满足中小型项目的高可用要求,使用Supervisor监控并管理Redis实例。通过本文将完成如下目标:

  • 哨兵模式服务规划与搭建

哨兵模式服务相比于单机版服务更加可靠,适合读写分离、数据量不是很大、要求可靠稳定性的场景。

  • 客户端整合与读写分离

通过spring框架对哨兵模式进行连接,完成生产环境的常见操作。

2、端口规划

端口规划是完成本方案的第一步。

二、单机模拟

单机模拟是指在单台物理机或者虚拟机上模拟操作,最大化还原本方案中间过程,适用于学习或者开发阶段使用。

为了简化操作,Redis服务做如下约定:数据不持久化到磁盘;服务实例以前台进程方式运行;节点的配置文件以默认配置文件为模版;无密码验证。

(一)服务规划

1、Redis实例

服务在第一次启动时明确知道第几个节点是master节点,当服务在长期运行并发生主从切换时,无法显示知道第几个节点是master节点,需要通过命令行间接查询。

节点主机端口角色额外配置
node01127.0.0.16380第一次启动时作为master服务 
node02127.0.0.16381第一次启动时作为slave服务replicaof 127.0.0.1 6380
node03127.0.0.16382第一次启动时作为slave服务replicaof 127.0.0.1 6380

额外配置指第一次启动Redis服务实例时,节点配置文件中新增配置。

2、哨兵服务

哨兵服务节点之间没有主从的区别,所有节点处于平等地位。当主服务异常时,哨兵服务之间会唤醒投票策略,从Redis实例从节点选择主服务的候选人。

节点主机端口额外配置
node01127.0.0.126380sentinel monitor mymaster 127.0.0.1 6380 2
node02127.0.0.126381sentinel monitor mymaster 127.0.0.1 6380 2
node03127.0.0.126382sentinel monitor mymaster 127.0.0.1 6380 2

(二)服务配置

1、Redis实例

节点的初始配置文件以默认配置文件为模版。

node01、node02初始化配置文件之后,显示指明节点间的主从关系,增加如下配置:

replicaof 127.0.0.1 6380

2、哨兵服务

节点的初始配置文件以默认配置文件为模版。

node01、node02、node03初始化配置文件后,增加如下配置:

sentinel monitor mymaster 127.0.0.1 6381 2

(三)服务管理

测试或者学习时,建议采用前台进程管理服务,便于模拟单点故障、查看日志观察主从切换。

生产条件下建议使用Supervisor管理服务,不仅易于管理而且能够实现服务异常终止后自动重启。高可用场景下使用的是三台物理机。

1、Redis实例

/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis80.conf --port 6380 --save '' --daemonize no 
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis81.conf --port 6381 --save '' --daemonize no
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis82.conf --port 6382 --save '' --daemonize no

2、哨兵服务

/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel280.conf --port 26380 --daemonize no
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel281.conf --port 26381 --daemonize no
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel282.conf --port 26382 --daemonize no

三、客户端整合

客户端实现是指基于SpringBoot的整合分为两步实现:一是完成作为基础的整合;二是结合生产需要补充新特性。

(一)基础整合

基础整合的内容是以Java客户端连接高可用哨兵模式Redis服务,实现单节点故障服务正常运行的要求。

1、全局配置文件

全局配置文件添加的配置信息有:master参数为哨兵服务名,此处为默认值;nodes参数为哨兵服务列表(不是Redis实例服务列表);database参数为数据库

spring:
  redis:
    database: 0
    sentinel:
      nodes: 192.168.181.171:26380,192.168.181.171:26381,192.168.181.171:26382
      master: mymaster

2、集成配置

集成进SpringBoot体系,最核心的是创建LettuceConnectionFactory连接工厂,通过Redis连接工厂,能够顺利继承进Spring体系下其他框架。

@Configuration
public class RedisSentinelConfig {
    @Autowired
    private RedisProperties redisProperties;
    
    @Bean
    public RedisConnectionFactory lettuceConnectionFactory() {
        RedisProperties.Sentinel sentinel = redisProperties.getSentinel();
        HashSet<String> nodes = new HashSet<>(sentinel.getNodes());
        String master = sentinel.getMaster();
        RedisSentinelConfiguration config = new RedisSentinelConfiguration(master, nodes);
        config.setDatabase(redisProperties.getDatabase());
        return new LettuceConnectionFactory(config);
    }
}

(二)读写分离

基础整合仅仅是实现了高可用Redis服务的流程,生产环境下仍需要增加其他配置:修改自定义连接数据库序号;授权连接;连接池配置;读写分离。

在高可用前提下,衍生出读写分离的特性,主库完成写请求;从库完成读请求(从库不允许写)。

@Bean
public LettuceClientConfigurationBuilderCustomizer lettuceClientCustomizer() {
    // 配置读写分离
    return builder -> builder.readFrom(ReadFrom.REPLICA);
}

 到此这篇关于浅谈Redis哨兵模式高可用解决方案的文章就介绍到这了,更多相关Redis哨兵模式高可用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Redis哨兵模式高可用解决方案

本文链接: https://www.lsjlt.com/news/140846.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Redis哨兵模式高可用解决方案
    目录一、序言1、目标与收获2、端口规划二、单机模拟(一)服务规划1、Redis实例2、哨兵服务(二)服务配置1、Redis实例2、哨兵服务(三)服务管理1、Redis实例2、哨兵服务...
    99+
    2024-04-02
  • Redis哨兵模式高可用的示例分析
    这篇文章将为大家详细讲解有关Redis哨兵模式高可用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、序言Redis高可用有两种模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主两从三哨兵Red...
    99+
    2023-06-29
  • 【Redis】Redis高可用之Sentinel哨兵模式详解(Redis专栏启动)
    📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级...
    99+
    2023-09-10
    java 面试 开发语言 redis Sentinel
  • Redis超详细讲解高可用主从复制基础与哨兵模式方案
    目录高可用基础---主从复制主从复制的原理主从复制配置示例1、创建Redis实例2、连接数据库并设置主从复制高可用方案---哨兵模式sentinel哨兵模式简介哨兵工作原理哨兵故障修...
    99+
    2024-04-02
  • redis哨兵模式数据不一致如何解决
    在Redis的哨兵模式中,如果出现数据不一致的情况,可以采取以下方法解决: 检查哨兵状态:首先检查哨兵的状态,确保所有哨兵都正常...
    99+
    2023-10-25
    redis
  • 浅谈Redis缓存雪崩解决方案
    目录1.保持缓存层的高可用2.限流降级组件3.缓存不过期4.优化缓存过期时间5.使用互斥锁重建缓存6.异步重建缓存缓存层承载着大量的请求,有效保护了存储层。但是如果由于大量缓存失效或...
    99+
    2024-04-02
  • 浅谈Redis跟MySQL的双写问题解决方案
    目录写在前面三种读写缓存策略Cache-AsidePattern(旁路缓存模式)Read-Through/Write-Through(读写穿透)WriteBehindPattern(...
    99+
    2024-04-02
  • 浅谈SpringCache与redis集成实现缓存解决方案
    缓存可以说是加速服务响应速度的一种非常有效并且简单的方式。在缓存领域,有很多知名的框架,如EhCache 、Guava、HazelCast等。Redis作为key-value型数据库,由于他的这一特性,Redis也成为一种流行的数据缓存工具...
    99+
    2023-05-30
    spring cache redis
  • 浅谈Redis 缓存的三大问题及其解决方案
    目录一、缓存穿透1. 常见解决方案2. 布隆过滤器3. 缓存空数据与布隆过滤器的比较二、缓存击穿解决方案三、缓存雪崩解决方案Redis 经常用于系统中的缓存,这样可以解决目前 IO ...
    99+
    2024-04-02
  • 浅谈Java高并发解决方案以及高负载优化方法
    目录1、HTML静态化2、图片服务器分离3、数据库集群和库表散列4、缓存5、镜像6、负载均衡1)硬件四层交换2)软件四层交换一、高并发高负载类网站关注点之数据库需要注意的是:二、高并...
    99+
    2024-04-02
  • sql  server 2012高可用解决方案
    sql server 2012 提供了多种可用于高可用性的解决方案,例如: 1. 通过使用 alwayson 可以提供虚拟 ip 地址(vip)来实现故障转移和读取可扩展性。 2. ...
    99+
    2023-05-18
    sql  server 2012高可用
  • sql server 2012高可用解决方案
    sql server 2012 提供了多种可用于高可用性的解决方案,例如: 1. 通过使用 alwayson 可以提供虚拟 ip 地址(vip)来实现故障转移和读取可扩展性。 2. 镜像(mirroring)。它可以在两...
    99+
    2023-05-05
    sql server 2012高可用
  • 【Redis】Redis高可用之Redis Cluster集群模式详解(Redis专栏启动)
    📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级...
    99+
    2023-09-01
    java 面试 开发语言 redis 集群
  • PostgreSQL高可用性解决方案是什么
    PostgreSQL高可用性解决方案主要有以下几种: 流复制(Streaming Replication):通过设置主服务器和一...
    99+
    2024-04-09
    PostgreSQL
  • 实现高可用的分布式系统的Golang解决方案
    Golang是一种高效、简洁、安全的编程语言,它可以帮助开发人员实现高可用的分布式系统。在这篇文章中,我们将探讨Golang如何实现高可用的分布式系统,并提供一些具体的代码示例。 分布式系统的挑战 分布式系统...
    99+
    2024-01-16
    高可用 Golang 分布式系统
  • 使用Redis解决高并发方案及思路解读
    目录NoSQLRedis痛点思路分布式锁锁续命扩展结语NoSQL Not Only SQL的简称。NoSQL是解决传统的RDBMS在应对某些问题时比较乏力而提出的。 即非关系型数据库,它们不保证关系数据的ACID特性,数...
    99+
    2023-03-31
    Redis高并发 Redis解决高并发 Redis高并发思路
  • 解析高可用Redis服务架构分析与搭建方案
    基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysq...
    99+
    2024-04-02
  • 常见的高可用MySQL解决方案有哪些
    这篇文章主要介绍常见的高可用MySQL解决方案有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1. 主从复制解决方案   主从...
    99+
    2024-04-02
  • 破解分布式数据库的高可用难题:TDSQL高可用方案实现
    腾讯云数据库国产数据库专题线上技术沙龙正在火热进行中,3月12日张文的分享已经结束,没来得及参与的小伙伴不用担心,以下就是直播的视频和文字回顾。 关注“腾讯云数据库”公众号,回复“0312张文”,即可下...
    99+
    2024-04-02
  • 运维中的高可用MySQL解决方案有哪些
    运维中的高可用MySQL解决方案有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。数据库作为最基础的数据存储服务之一,在存储系统中有着非常重...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作