| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis主从复制原理 -> 正文阅读 |
|
[大数据]Redis主从复制原理 |
首先我们先会启动master,使用完master以后,我们随后会去做一个配置。配置是配置到这个slave这个节点里面的。这是两个不同的服务器。 当我们的这一台配置并且启动以后,它其实会发送一个ping包发送给我们的master。这个slave我会告诉他,我现在已经是启动了,启动了以后,你应该要交给 然后呢,通过它内网的一个网络传输,它会传给我们的slave,slave去拿到RDB以后,它并不是直接把它读到它的内存里面去掉,而是把这个RDB先相当于是进行了一个下载,下载到自己的一个硬盘里以后,随后他才会。把这个RDB再一次的加载到他的这个slave的内存里面去。这样子其实就是完成了它的一个复制的过程。这个过程是它的第一次过程。第一次过程其实就是一个init,就是一个初始化的一个过程。 在第一次以后,第二次第三次,只要是有一些相应的写的请求进来,只要是写操作,有一条写一条,他会把相应的一个命令会同步的传输给我们的slave。 另外呢它的一个数据在做同步的一个过程,其实呢它是不会去影响或者说是阻塞它master的一个写操作,也不会去阻塞它slave的一个读操作的。这主要是因为他们会使用老的数据来提供服务。如果说数据一旦同步完成以后,就会替换掉我们老的数据使用我们新的数据来提供相应的服务了。这样子,其实他们的一个数据呢就能够做到一个同步。 在这里呢,我们可以再举一个例子,就是说我们这个master和这个slave打个比方。 这个master他可能是一个在客服部的一个部门经理,然后slave呢可能就是一些普通的打电话的一些客服人员。 如果说我们在后续的一些过程,一旦我们的这个master,也就是他的一个领导收到更多的一些客户的信息以后收到一个,他就会递交给我们的下面的客服人员,一个一个的去分发给他们,让他们去做相应的一个拨打电话的一个动作。也就是他有了相应的写操作。读就让我们的slave去做一个处理。这个其实就是咱们的一个数据复制数据同步的一个过程。 在这里面我们一定要注意,初次第一次它是一个全量的数据同步。如果说是我们第二次以后,第二次开始它的一个数据的一个同步过程,它是一个增量式的。 在这里面如果说我们的一个slave,这个slave如果说宕机重启,对于我们的一个数据呢是一开始他会做一个增量的恢复。也就是说现在我们停了一个小时,在停了一个小时的这一段的数据,其实都会在咱们的master。一旦他恢复了以后,我们的master就会把一部分缺失的一个数据同步给我们的slave。 这个其实也跟我们的客服打电话是一样的。如果说你的客服人员生病了几天没有来,肯定会有很多的一些额外的一些客户数据。等到你来了之后,我才会把些新增的一些客户数据给到你,你再去做你自己的业务。这也是同样的一个道理,ok在我们的主从里面,其实有一点我们是必须要去注意的。就是说我们要使用主从复制主从架构,在我们的这个master它必须要开启持久化。 如果说你不去开启它的持久化,一旦我们的一个master停掉,虽然停掉了以后,咱们的这个slave它还是能够去提供一些读的服务的,我们的master它能够恢复,但是恢复了以后,由于它是没有持久化,它内存里面是没有任何数据的。所以它重启以后,它再次的做数据同步的时候,master会把slave里面的数据给清空的。所以呢这一点一定要注意,必须要开启master的一个持久化机制。因为你不去开启,一旦的数据被清空了以后,这简直就是一个灾难性的。 随后呢我们可以再来看一下主从实现的一个模式,它其实会分为三种形态。 随后再有一个slave2,这样子其实就是一个一主二从。一主二从是我们在平时使用的过程中最多的一种组成复制的模式。,所以说我们其实也是扩展了。我们的一个独立请求,独立请求它可以支持原来的两倍。但是呢我们却不会构建太多,我们不可能会去构建一组多重。 所以说我们在这个master的下面,挂了很多很多的slave,你挂上了10台,几十台不可能会这么做的。因为在我们的一个内网里面,我们的master他要去做一个组成复制,要去把数据同步给其他的slave的时候,它其实就相当于是一个上传和下载。一旦你的客户端,你的slave比较多了,其实他们做同步的时候,其实就会一直在使用,一直在占用我们的一个内网的网络的带宽。很显然这样子就不太好,因为你的slave实在是太多了。 所以呢一般来说我们要使用主从,我们使用一主二从,使用两个就可以了。这个就相当于是我们在古代的时候娶妻的一个道理,就说你娶老婆,你娶了多个老婆,可能你会忙不过来。你只有一个老婆,两个老婆,还可以就像韦小宝样,就是说你老婆太多了,肯定会忙不过来嘛。 随后我们可以再来看一下我们下一种模式,这种模式其实是一种树状的模式,可以看得出来。在我们这里面就是包含了两个主从。 它其实可能会有一个同步的压力。有了这样的压力之后,他会把同步的压力交给我们的第二个主从,让他去做到一个相应的分摊。 或者说其实他们又相当于是一种祖孙三代,就是爷爷辈、父亲辈和儿子辈,祖孙三代,子子孙孙无穷尽远。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:12:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |