IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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的主从复制

1,redis的复制是什么

对于redis来说,单机的布置是当然不够的,这时候就需要多个redis节点,当有多个节点的时候,就要确定谁是主机,谁是从机,还有数据的一致性问题。为了维护数据的一致性问题,从机就要从主机复制数据,要使两台机器的数据处于同一个阶段,这就是redis的复制。在执行slaveof(现在采用replicaof)命令后就会进行复制。

从机A的Ip地址:端口号 slaveof 主机B的ip地址:端口号

2,旧版redis的复制功能

redis的复制功能是分为两个部分,一个是同步操作,一个是命令传播机制。

同步

从服务器向主机发送同步的操作是需要使用SYNC命令来完成的。其步骤如下:

1)从机向主机发送SYNC命令。
2)收到SYNC命令后的主机执行bgsave命令,创建一个子进程,子进程创
   建一个RDB文件,把当前主机的状态保存到文件中。同时还创建一个缓冲
   区,记录在生成RDB文件的时候所记录的写命令。
3)主机RDB文件生成后。把RDB文件发送给从服务器,从机载入这个文件。
4)把缓冲区的命令也发送个从机。

在这里插入图片描述

命令传播

在进行同步过后,主机有写入的操作,这时候就会使得数据不一致。这个时候就采用命令传播,把主机执行过的命令再次发送给从机。

旧版本复制得缺点

复制分为两种,

  • 初次复制,从机从0开始复制
  • 断线后复制,在初次复制得时候,断线了,然后连接上了,重新复制,所以要重新进行一次全局复制,效率低

SYNC是一个非常消耗资源的操作
1),在主机生成RDB文件得时候,会大量得消耗CPU,IO,内存等资源。
2),当发送RDB文件得时候,会消耗大量得网络资源,带宽等。
3),当从服务器接收到RDB文件进行读取得时候,主线程会被阻塞。

3,新版的复制

对于新版复制,redis采用得是PSYNC操作
PSYNC分为完整重同步,和部分完整重同步。在初次复制得时候,采用的是完整,这和SYNC是没有区别得。在断线复制时采用得时部分重新同步,就是接着上次断线的地方继续复制,不需要重新来一遍。

部分完整重同步的实现

由以下三部分构成:

1)主从两机的复制偏移量
2)主机的复制积压缓存区
3)服务器的运行ID

复制偏移量
当进行复制的时候,主从两机都会维持一个复制偏移量offset
当主机向从机传播N个字节的数据的时候,就会在偏移量上加上N,
当从机接收N个字节数据的时候,就会在从机的偏移量上加上N。
所以判定两个数据是否一致的时候,就可以比较偏移量的大小是否相同

复制积压缓冲区
复制积压缓冲区是主机维护的一个固定大小的队列(默认是1M),这个队列中存储的是最近这1m主机发送的数据,当然这个大小你是可以设置的,设置的太小,没什么用,设置太大,浪费内存。
在这里插入图片描述

这个队列中维护着发送的字节值,每个字节值对应着主机上的复制偏移量。
在这里插入图片描述当出现断线重连后,会进行判断:

  • 如果从机的offset在这个队列中,那么就执行部分重同步操作。
  • 如果在的话,就进行全部重同步操作。

运行ID
每个redis服务器都会有自己对应的一个40位随机组成的16进制组成的字符id。当进行初次复制的时候,主机会把自己的id发送给从机,当断线重连后,从机会验证主机的id,如果两次id是一样的,执行上述操作,如果两个id不一样,就执行完整重同步

执行PSYNS的完整步骤
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:31:26  更:2022-05-12 16:32:10 
 
开发: 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/25 14:58:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码