redis哨兵机制

1)哨兵机制本质上是通过独立的进程来体现的,和之前的redis-server进程是完全不同的进程,redis-sentinel不负责存储数据,只是针对于其他的redis-server进程起到监控的效果,但是通常来说哨兵节点,也会搞一个集合,这本身是由多个哨兵节点构成的

2)主节点挂了,把选中的从节点,通过slave of no one自立山头,把其他的从节点,修改slave of 主节点的IP port连上新的主节点,告知客户端,修改客户端的配置,完成修改数据的操作,当之前挂了的的主节点修好了以后,就可以作为一个新的主节点挂到这组机器中,但是修复的过程中,至少需要半个小时,整个redis不能写?

1.监控:监控主节点和从节点的工作状态,及时发现某一个节点是不是挂了 

2.自动的故障转移:对于主节点如果要是挂了,就可以自动地挑选出一个主节点,保证整个redis主从还是可以进行读和写,全程不需要人工来干预

3.通知:自动通知客户端

 

从上面来看,单独的redis sentinel进程提供了多个,并且这三个哨兵进程就会监控现有的redis master和slave,这些进程之间,会建立TCP长连接,通过这样的长连接就可以定期发送心跳包,借助上述的监控机制,就可以发现某一个主机是否挂了,如果是从节点挂了,没有关系,但是如果是主节点挂了,哨兵就需要发挥作用了

1)此时如果是一个哨兵节点发现主节点挂了,还不够,需要多个哨兵节点来共同确认这件事情,主要是为了防止误判

2)主节点确实是挂了,那么在这些哨兵节点中,就会推选出一个哨兵leader,由这个leader来负责从现有的从节点中,选取一个作为新的主节点

3)挑选出新的主节点以后,哨兵节点就会自动控制被选中的从节点,执行slave of no one命令,并且控制器其他从节点修改slave of到新的主节点上面

4)哨兵机制会自动地通知客户端程序,告知新的主节点是谁,并且后续客户端再来执行写操作,就会针对于新的主节点进行操作了

其实redis哨兵节点只有一个也是可以的

1)但是如果哨兵节点只有一个,它自身也是十分容易出现问题的,万一这个redis哨兵节点挂了,就无法进行自动的恢复过程了

2)出现误判的概率也是比较高的,毕竟网络传输数据时容易出现抖动或者是延迟或者是持续性丢包的,如果只有一个哨兵节点,出现上述问题后,影响就比较大,所以说在分布式系统中,应该避免使用单点

因为分布式一方面是为了高可用,不能说一个服务器出现了问题,影响到整体的使用,效率也就是为了引入更多的硬件资源,如果全部放到一个机器上面了,那么两个条件都没有达成 

1.安装docker和docker compose,docker compose管理多个容器

2.停止redis服务器:后续使用docker启动redis的时候,在docker里面可能占用宿主机的端口号

3.使用docker获取到redis的镜像,在docker中,镜像和容器相当于是可执行程序和进程之间的关系,镜像可以自己构建,也可以直接拿别人已经构建好的,dockerhup包含了很多其他大佬们构建好的镜像,也提供了官方提供好的镜像,直接拖下来就可以使用

4.docker pull redis:5.0.9,git pull是使用git从中央仓库拉取代码,docker pull是使用docker从中央仓库来拉取镜像,默认是从dockerhup,本身拉取到的镜像,里面就包含一个精简的linux操作系统,并且上面会安装redis

5.拉取到的镜像,里面包含一个精简的linux操作系统,并且在上面会安装redis,只要直接基于这个镜像创建出一个容器跑起来,此时redis服务器就直接搭好了;

6.基于docker搭建redis哨兵模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin快速入门系列2

Kotlin的基本数据类型 Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。 Java和kotlin数据类型对照如下: Java基本数据类型 Kotlin对象数据类型 数据类…

goland课程管理(6)

项目目录结构如下图所示: core包下面: class.go package coreimport "github.com/gin-gonic/gin"func Class1(ctx *gin.Context) {}course.go package coreimport (. "cookie/database". "cookie/model""fmt"…

【Python】02快速上手爬虫案例二:搞定验证码

文章目录 前言1、不要相信什么验证码的库2、以古诗文网为例,获取验证码1)code_result.py2)gsw.py 前言 提示:以古诗文网为例,获取验证码: 登录:https://so.gushiwen.cn/user/login.aspx 1、不…

C++笔记之作用域解析符::和命名空间、作用域的关系

C++笔记之作用域解析符::和命名空间、作用域的关系 —— 杭州 2024-01-26 code review 文章目录 C++笔记之作用域解析符::和命名空间、作用域的关系1.`命名空间`和`作用域`两个术语的联系和区别命名空间(Namespace)作用域(Scope)联系与区别2.`作用域解析符::`和`命名空间`…

Stable Diffusion插件Recolor实现黑白照片上色

今天跟大家分享一个使用Recolor插件通过SD实现老旧照片轻松变彩色,Recolor翻译过来的含义就是重上色,该模型可以保持图片的构图,它只会负责上色,图片不会发生任何变化。 一:插件下载地址 https://github.com/pkuliyi…

(2024,预训练和微调扩散,图编码器,图特征与CLIP特征对齐)场景图到图像合成:集成 CLIP 指导与扩散模型中的场景图条件

Scene Graph to Image Synthesis- Integrating CLIP Guidance with Graph Conditioning in Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 扩…

Hugo使用且部署GitHubPages

hugo的使用 20201121 Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。 安装Hugo 0.windows安装(releases) 下载地址:https://github.com/spf13/hugo/releases。 配置环境变量 验证测试是否安装成功 hugo help1. 二进制安装&#xf…

Asp.Net Core 获取应用程序相关目录

在ASP.NET Core中,可以通过以下三种方式获取应用程序所在目录: 1、使用AppContext.BaseDirectory属性: string appDirectory AppContext.BaseDirectory; 例如:D:\后端项目\testCore\test.WebApi\bin\Debug\net6.0\ 2、使用…

Jmeter实现造10个账户、单元数据

今天简单介绍Jemeter的入门,Jmeter 的安装这边就跳过,直接讲述如何使用JMETER,如何运用Jmeter进行测试。Jmeter实现造10个账户、单元数据,之后大数据量批量造数据以此类推。 1.下载jmeter软件 2.安装jmeter软件 3.运行\bin\jmeter.bat批处理文件 4.选择脚本文件 5.…

Adobe ColdFusion 反序列化漏洞复现(CVE-2023-38203)

0x01 产品简介 Adobe ColdFusion是美国奥多比(Adobe)公司的一套快速应用程序开发平台。该平台包括集成开发环境和脚本语言。 0x02 漏洞概述 Adobe ColdFusion存在代码问题漏洞,该漏洞源于受到不受信任数据反序列化漏洞的影响,攻击者通过漏洞可以代码执行,可导致服务器失…

Linux 驱动开发基础知识—— 具体单板的 LED 驱动程序(五)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

Unity应用在车机上启动有概率黑屏的解决方案

问题描述 最近将游戏适配到车机上(Android系统),碰到了一个严重bug,启动的时候有概率会遇到黑屏,表现就是全黑,无法进入Unity的场景。 经过查看LogCat日志,也没有任何报错,也没有任…

代码随想录刷题笔记-Day12

1. 二叉树的递归遍历 144. 二叉树的前序遍历https://leetcode.cn/problems/binary-tree-preorder-traversal/94. 二叉树的中序遍历https://leetcode.cn/problems/binary-tree-inorder-traversal/145. 二叉树的后续遍历https://leetcode.cn/problems/binary-tree-postorder-tra…

java获取linux和window序列号

前言 获取系统序列号在Java中并不是一个直接支持的功能,因为Java语言本身并不提供直接访问硬件级别的信息,如CPU序列号。但是,我们可以使用一些平台特定的工具或命令来实现这一功能。下面我将展示如何使用Java获取Windows和Linux系统上的CPU…

【Qt无门槛入门】信号以及信号机制及其常用控件(1)

信号与信号槽 信号源:由哪个控件发出的信号。 信号的类型:用户进行不同的操作,就可能出发不同的信号。 信号处理的方式:槽(slot)某个对象接收到这个信号之后,就会做一些相关的处理动作。但是Qt对象不会无故…

【MAC】Multi-Level Monte Carlo Actor-Critic阅读笔记

基本思想: 利用多层次蒙特卡洛方法(Multi-Level Monte Carlo,MLMC)和Actor-Critic算法,解决平均奖励强化学习中的快速混合问题。 快速混合? 在强化学习中,当我们说一个策略"混合得快"…

HCS-华为云Stack-FusionSphere

HCS-华为云Stack-FusionSphere FusionSphere是华为面向多行业客户推出的云操作系统解决方案。 FusionSphere基于开放的OpenStack架构,并针对企业云计算数据中心场景进行设计和优化,提供了强大的虚拟化功能和资源池管理能力、丰富的云基础服务组件和工具…

文心一言情感关怀之旅

【AGIFoundathon】文心一言情感关怀之旅,让我们一起来体验吧! 上传一张照片,用ernie-bot生成专属于你的小故事! 此项目主要使用clip_interrogator获取图片的关键信息,然后将此关键信息用百度翻译API翻译成中文后,使用封装了⼀⾔API的Ernie Bot SDK(ernie-bot)生成故事…

「研发部」GitFlow规范-升级版(二)

前言 上一篇文章简单整理过一次产研团队的GitFlow《Git 分支管理及Code Review 流程 (一)》 GitFlow是一种流行的Git分支管理策略,它提供了一种结构化的方式来管理项目的开发和发布流程。以下是GitFlow规范的主要组成部分: 主要分支: mast…

上升子序列的最大长度,递归-记忆化搜索-动态规划三步走

题目描述: 小明有一个数组,他想从数组任意元素开始向后遍历,找出所有上升子序列,并计算出最长的上升子序列的长度。 数据范围: 每组数据长度满足 1≤n≤200 1≤n≤200 , 数据大小满足 1≤val≤350 1≤val≤…