redis中的集群模式

 主从复制、主从同步(解决高并发读的问题)

3f07f3e0845b4e09a70b73dd92e5feef.png

主从同步原理:

1.全量同步

b302f813312b4916b879b01bd810147c.png

slave(从节点)每次请求数据同步会带两个参数:replid和offset。

        replid:第一次请求同步时,replid和master的replid不一样,这时主节点就知道当前从节点是第一次来。就把自己的版本信息(包括master的replid)发送给从节点,从节点保存主节点的replid,下一次就发这个主节点的replid。就知道当前节点是哪个主节点的从节点。

        注意:如果从节点不是第一次来了,主节点就不会发送RDB文件。而是通过repl_backlog文件去同步数据。

        offset:从节点每次同步信息,就会维护一个偏移量offset。比如说这次从节点保存到了第50条数据,offset就为50。主节点的信息不断再更新。下次再来同步的时候,发现主节点中的offset是80,说明这次我们就需要同步50-80的数据了!

2.增量同步

cf6ab2e363914bb2860fd0d3ee7796ea.png

869c63531a6145328bdceab3c7fe0486.png

 哨兵模式(解决高可用)、集群脑裂

哨兵的作用

ea19bbc8d149413d855eac6c1fe5df79.png哨兵如何选择新的主节点

f2b659f2920e46d99dfa81d71d3d91ce.png

说明:

1.判断主节点和从节点断开时间长短,如果某个从节点断开时间很长,就不会被选为主节点。(断开时间越长,从节点丢失数据越多)

2.slave-priority可以在配置文件中设置

3.offset值越大代表当前从节点越接近主节点的数据。

脑裂问题

487d2a085a3c4fac80d853abe0f2a372.png

例:现在由于网络原因,哨兵监测不到主节点了。就会从剩余从节点中选取一个作为主节点。但是原来的主节点没有宕机,RedisClient连接的还是老的主节点。这样就出现了两个主节点!现在客户端连接的是老的主节点,还会持续往里面写入数据,但是从节点已经同步不了数据了!

d5d8b2b8d55d4eddb76036479163a9a4.png

现在网络恢复了,哨兵会将老的主节点降级为从节点。并且把新的主节点中的数据同步给它,而它之前的数据会被清空!!!客户端写入的数据就丢失了。

解决方案

配置参数

1.第一个参数min-replicas-to-write表示:当客户端写入数据时,这个主节点至少要有一个从节点。才能接受客户端的数据,否则直接拒绝请求。

2.min-replicas-max-lag:主从数据同步延迟

小结

0781ccf5e6ec4894804e7fa5642edf90.png

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

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

相关文章

Git Commit命令撤销操作

Git Commit命令撤销操作 在某些时候,通过git commit命令讲代码提交到了暂存区,但还未推送至远程仓库需要进行撤销,可以使用git reset命令来完成 文章目录 Git Commit命令撤销操作1. git commit 撤销操作2. 撤销多次想回到某一次撤销 1. git c…

探索AI工具的巅峰:个人体验与深度剖析

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

[C++] 类和对象 _ 剖析构造、析构与拷贝

一、构造函数 构造函数是特殊的成员函数,它在创建对象时自动调用。其主要作用是初始化对象的成员变量(不是开辟空间)。构造函数的名字必须与类名相同,且没有返回类型(即使是void也不行)。 在C中&#xff0…

Vue2动态添加属性方式

Vue2不允许在已经创建的实例上动态添加新的响应式属性;若想实现数据与视图同步更新,可采取下面两种解决方案: 1.使用Vue.set,里面的参数是Vue.set(target,index, value) // 部分代码 export default {data() {return {info: {username: ala…

【Canvas技法】流星雨的实现

【关键点】 流星的绘制,本质上还是绘制一条直线,但在渲染上有差别。 通常绘制直线都是给的固定颜色,绘制流星给的是渐变色,渐变色的开头是与背景色对比度明显的亮色,结尾是与背景色相同的暗色,中间渐变过…

Vue---router实现路由跳转

Vue—router实现路由跳转 目录 Vue---router实现路由跳转基本使用路由跳转html实现路由跳转JS实现路由跳转 基本使用 所谓路由&#xff0c;就是将一个个组件映射到不同的路由url中 首先要将App内的内容换成router-view // App.vue <template><div id"app"…

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab)

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基…

【八股】UML 2的基础结构和上层结构

UML&#xff08;统一建模语言&#xff09;是一种广泛使用的建模语言&#xff0c;用于软件工程中的系统设计。UML 2是UML的一个重要版本&#xff0c;它扩展了原有的功能&#xff0c;提供了更加丰富和灵活的建模能力。UML 2的结构可以分为两部分&#xff1a;基础结构&#xff08;…

C++ //练习 14.8 你在7.5.1节的练习7.40(第261页)中曾经选择并编写了一个类,为它定义一个输出运算符。

C Primer&#xff08;第5版&#xff09; 练习 14.8 练习 14.8 你在7.5.1节的练习7.40&#xff08;第261页&#xff09;中曾经选择并编写了一个类&#xff0c;为它定义一个输出运算符。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代…

WPF中Nlog的使用--能够提取Nlog的日志内容,并定义使用

背景 使用Nlog日志进行本地文件输出,以及进行定时清理删除参考其他文章 在用户本地计算机上进行Nlog输出,或者使用Web的Http的Post请求输出到后端数据库使用File或者Web的数据类型就可以了,但是我这里希望把我的日志进行输出到自己的云端,但是存在如下情况: 1、用户在一天…

孩子多大可以学编程,需要具备哪些基础知识?

孩子学习编程的最佳年龄取决于孩子的兴趣和学习能力。一般来说&#xff0c;孩子从5岁开始就可以接触编程教育&#xff0c;但更多的孩子在7到12岁之间开始学习编程。这个年龄段的孩子通常具有较好的逻辑思维能力和抽象思维能力&#xff0c;更容易理解编程的概念。 要学习编程&a…

巧用 TiCDC Syncpiont 构建银行实时交易和准实时计算一体化架构

本文阐述了某商业银行如何利用 TiCDC Syncpoint 功能&#xff0c;在 TiDB 平台上构建一个既能处理实时交易又能进行准实时计算的一体化架构&#xff0c;用以优化其零售资格业务系统的实践。通过迁移到 TiDB 并巧妙应用 Syncpoint&#xff0c;该银行成功解决了原有多个 MySQL 集…

图搜索算法详解与示例代码

在计算机科学领域&#xff0c;图搜索算法是一类用于在图数据结构中查找特定节点或路径的算法。图搜索算法在许多领域都有着广泛的应用&#xff0c;包括网络路由、社交网络分析、游戏开发等。本文将详细介绍几种常见的图搜索算法&#xff0c;包括深度优先搜索&#xff08;DFS&am…

模方试用版水面修整,调整水岸线功能进程缓慢该怎么解决?

答&#xff1a;水面修整&#xff0c;第一个点选取准确的高程位置和水边&#xff0c;其他点就可以包含整个水面范围就行&#xff0c;可以绘制大一些。上图绘制区域没有包含到所有的水面&#xff0c;可以尝试下图的红线绘制区域。 模方是一款针对实景三维模型的冗余碎片、水面残缺…

【ARM 常见汇编指令学习 6.1 - armv8 乘加指令 madd详细介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 armv8 乘加指令 madd使用场景示例注意事项 armv8 乘加指令 madd 在ARMv8架构中&#xff0c;madd指令是一种乘加指令&#xff0c;用于执行两个数的乘法操作&#xff0c;并将结果与第三个数相加。madd指令是“Multiply-Add”的缩写&…

CentOS系统如何设置系统默认语言以及命令行输出的语言为英文? locale

要点 locale是地区相关&#xff1a;The locale command displays information about the current locale, or all locales, on standard output.通过全局变量进行配置&#xff0c;后台应该有程序读取环境变脸后进行输出确认。全局变量包括LANG和LC_ALL系统启动后首先初次读取/…

【Spring 】Spring MVC 入门Ⅱ

Spring MVC 入门Ⅱ 一、接收Cookie / Session 这两者都是用来保存用户信息的&#xff0c;但不同的是&#xff1a; Cookie存在客户端 Session存在服务器 Session产生时会生成一个唯一性的SessionID&#xff0c;这个SessionID可以用于匹配Session和Cookie SessionID可以在Cooki…

模型训练中的过拟合和欠拟合

基本概念 我们知道&#xff0c;所谓的神经网络其实就是一个复杂的非线性函数&#xff0c;网络越深&#xff0c;这个函数就越复杂&#xff0c;相应的表达能力也就越强&#xff0c;神经网络的训练则是一个拟合的过程。   当模型的复杂度小于真实数据的复杂度&#xff0c;模型表…

python中的进程线程和协程

目录 进程&#xff08;Process&#xff09;多进程代码实例 线程&#xff08;Thread&#xff09;多线程存在原因及其缺点多线程代码实例 协程&#xff08;Coroutine&#xff09;协程的优点协程代码实例 进程、线程和协程适合的任务性质和环境多进程更适合的场景多线程更适合的场…

智能优化算法--计算重复运行50次的最大值、最小值、均值、标准差

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…