Redis实战案例19-Redis解决主从一致性问题

在这里插入图片描述

主节点(Master)“写操作”:

  1. 接收并响应客户端的读写请求。
  2. 持久化数据到磁盘(根据配置可以选择使用RDB快照或者AOF日志)。
  3. 将自己的写操作同步给所有的从节点。
  4. 处理发布/订阅(Pub/Sub)模式中的发布操作。

从节点(Slave)“读操作”:

  1. 复制主节点的数据。
  2. 提供只读服务,响应客户端的读请求。
  3. 可以支持读写分离,配置为从节点可以处理只读操作,如查询。
  4. 可以配置为提供故障转移(failover)支持,当主节点故障时可以选举一个新的从节点作为新的主节点。
  5. 可以进行备份和数据恢复。

从节点通过复制主节点的数据来实现数据的同步,复制过程中采用了异步的方式,在主从同步期间,从节点会不断地和主节点进行通信,获取主节点的更新操作,并将其应用到自己的数据集中。

问题引出:从节点通过复制主节点的数据来实现数据的同步,而数据的传输有延时,从而就可能出现问题。

当Java客户端获取锁,主节点此时记录线程锁的标识,而主节点会向从节点进行同步,此时主机发生宕机;这是哨兵机制会重新选择一个从节点作为主节点,但此时会出现问题:之前主从同步未完成,其它线程同样可以进行访问,这时就出现了并发安全问题。

在这里插入图片描述

解决方法只能说非常经典:多加一层

将每一层的节点独立起来,每一层的主节点都具有读写能力,获取锁必须从所有层的节点获取锁,每一层做主从同步(与之前的方案相同),但是并不会出现并发安全问题,因为即使有一层主节点发生了上述问题,有线程想趁虚而入访问也是不行的,它必须在每一层节点都获得锁,所以就不会有并发安全问题。

在这里插入图片描述

这种多个锁联合起来的方案叫做multilock

在这里插入图片描述

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

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

相关文章

【剑指offer】11. 机器人的运动范围(java)

文章目录 机器人的运动范围描述示例1示例2示例3示例4思路完整代码 机器人的运动范围 描述 地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上&#xff…

ARM 架构是什么?

ARM(Advanced RISC Machines)架构是一种处理器架构,它是一种精简指令集计算机(RISC)架构。ARM架构最初由ARM Holdings(现在是SoftBank Group的子公司)开发,并在1980年代末和1990年代…

【PAT】1028.List Sorting

【PAT】1028.List Sorting Excel can sort records according to any column. Now you are supposed to imitate this function. Input Specification: Each input file contains one test case. For each case, the first line contains two integers N (≤105) and C, wher…

mysql的完全包含关系怎么写

问: mysql从a表查到aid有两值1,2,b表中存在a表的主键作为外键,从b表中查找完全包含aid的的值(1,2)的bid 答 如果你有一个表a包含主键列a_id,并且有一个表b,它具有一个…

数据结构和算法:深度优先搜索 (DFS) 和广度优先搜索 (BFS) 相关题目

文章目录 1. 岛屿问题(岛屿连通)1.1 岛屿数量1.1.1 DFS 解法1.1.2 BFS 解法 深度优先搜索 (DFS) 和广度优先搜索 (BFS)是比较难的算法问题,但也是面试常考题,因此需要认真研究并掌握。 DFS 用递归实现,BFS用栈实现 1. …

使用 SageMaker 对 Whisper 模型进行微调及部署

使用 SageMaker 对 Whisper 模型进行微调及部署 Whisper 作为 OpenAI 最新开源的自动语音识别(ASR)模型,采用了编码器-解码器(encoder- decoder)transformer架构,并使用了 68 万小时的从互联网收集的多语言…

PersistentVolume:怎么解决数据持久化

Kubernetes 的 Volume 对数据存储已经给出了一个很好的抽象,它只是定义了有这么一个“存储卷”,而这个“存储卷”是什么类型、有多大容量、怎么存储,我们都可以自由发挥。Pod 不需要关心那些专业、复杂的细节,只要设置好 volumeMo…

安卓APK反编译+修改+重打包+签名

目录 1.下载反编译工具包。2.将APK包,重命名为ZIP,解压。放到反编译根目录下。3.使用apktool反编译修改smail文件,进行重打包4.重新打包5.重签名 1.下载反编译工具包。 反编译工具包地址:百度网盘 提取码:dsu3 解压后…

AtcoderABC243场

A - Shampoo A - Shampoo ] 题目大意 高桥家有三个人:高桥、他的父亲和他的母亲。每个人每晚都在浴室洗头发。他们按照顺序使用AA、BB和CC毫升的洗发水。 问,今天早上瓶子里有VV毫升的洗发水。在不重新装满的情况下,谁会第一个用完洗发水洗头…

网工内推 | 美图秀秀招网工,大专以上,15薪,NP认证优先

01 美图公司 招聘岗位:网络工程师 职责描述: 1、美图大厦网络、分公司网络、IT相关项目的网络、办公内网服务器; 2、负责网络的设计、运行、管理和维护等工作; 3、负责远程办公环境的优化、运行、管理和维护工作; 4、…

python匿名函数Lambda

1、Lambda 函数简介 Lambda函数也被称为匿名(没有名称)函数,它直接接受参数的数量以及使用该参数执行的条件或操作,该参数以冒号分隔,并返回最终结果。为了在大型代码库上编写代码时执行一项小任务,或者在函数中执行一项小任务&a…

git merge详细用法

git merge用法 一、开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支 git checkout dev git pull git checkout master git merge dev git push -u origin master二、当master代码改动了,需要更新开发分支&#xff…

吴恩达机器学习2022-Jupyter-用scikitlearn实现线性回归

1可选实验:使用Scikit-Learn进行线性回归 有一个开源的、商业上可用的机器学习工具包,叫做 scikit-learn。本工具包包含您将在本课程中使用的许多算法的实现。 1.1工具 您将利用 scikit-learn 以及 matplotlib 和 NumPy 中的函数。 2线性回归封闭式解决方案 Sc…

nvm常用命令

查看node.js的所有版本: npm view node versions 查看 nvm 是否安装成功: command -v nvm查看当前使用的 Node 版本: node -v将安装 12.7.0 版本的Node: nvm install 12.7.0卸载 12.7.0 版本的Node: nvm uninstall 12…

为什么低代码只能掀起小浪花?了解低代码的得失与前景

导语:低代码是相对于高代码和无代码的一个中间概念,通常强调的是用户不需要学习如何写代码,就能完成工作。然而低代码模式一直不温不火,原因是什么呢?一起来看一下吧。 最近互联网大公司裁员消息又起,“低代…

Linux 配置常见服务器命令

Linux常见配置服务器的命令整理,基于Centos 7 。 基本操作命令 查看ens33 ip ifconfig ens33 查看系统版本 cat /etc/redhat-release 查找文件install.log、httpd.conf、hosts、smb.conf、network find -name te.txt 使用“cp 源文件 目标文件”命令进行复制 cp t…

Serial/TCP/NTRIP通信

1 串口通信 串口通讯 串口通信详解 串口通信中的4大参数含义 Qt 串口通信的简单demo 2 TCP通信 TCP协议简介 TCP协议详细介绍 TCP协议(全面) IP地址和端口号的详解 3 NTRIP通信 Ntrip通讯协议1.0 什么是Ntrip?Ntrip协议简介 TCP高并发数据转接服务器&#xff0…

【ElasticSearch】java 如何连接 elasticsearch

不同版本的java 与 Elastic 如何连接。 在 es 与 java 连接中最重要的就是『兼容性矩阵」,要严格按照兼容性矩阵的要求来部署 spring boot 或者 es的版本,否则会有意向不到的错误或者程序无法运行等等。 针对 es 6.2.2,java 客户端的配置代…

Linux: cannot read file data

报错: Could not load library libcudnn_cnn_infer.so.8. Error: /home/qc/miniconda3/envs/DNAqc/lib/python3.10/site-packages/torch/lib/libcudnn_cnn_infer.so.8: cannot read file data Please make sure libcudnn_cnn_infer.so.8 is in your library path! A…

【NLP】国外新动态--LLM模型

一、说明 NLP走势如何?这是关于在实践中使用大型语言模型(LLM)的系列文章中的一篇文章。在这里,我将介绍LLM,并介绍使用它们的3个级别。未来的文章将探讨LLM的实际方面,例如如何使用OpenAI的公共API,Hugging Face Transformers Python库,如何微调LLM,以及如何从头开始…