SpringCloud-高级篇(十一)

news/2024/10/22 9:53:37/

(1)搭建Redis-主从架构

前面我们实现了Redis的持久化,解决了数据安全问题,但是还有需要解决的问题,下面学习Redis的主从集群,解决Redis的并发能力的问题

Redis的集群往往是主从集群,Redsi为什么做成主从的集群,而不做成传统负载均衡的集群呢?因为Redis应用当中往往都是读多写少的场景,查询比较多,增删改比较少,我们更多应对的是读的压力,做读写分离,一主多从,多个从节点共同承担读的请求,并发能力能够做到很大的提升,这就是为啥搭建主从集群

需要保证客户端无论访问那个从节点都要拿到相同的结果

修改每个配置文件

修改数据保存目录:默认是当前目录:

一个一个配置文件改比较麻烦可以使用一个命令:

s表示替换:把6379替换成7001 g是全局  把dir .替换成、tmp\7001

 

1a:表示在第一行的后面追加一行

7002设置为7001的从节点: 

此时7001会有日志产生:来自7002的请求数据同步

把7003设置为7001的从节点:replicaod跟slaveof命令效果一致

此时7001会有日志产生:来自7003的请求数据同步

查看7001的状态信息:从属关系

主节点: 

从节点 

从节点不能够写: 

就实现了主节点做些操作,从节点做读操作

(2)数据同步原理

数据同步的底层是如何做到的

全量同步:有一个RDB的过程,会把内存形成快照,整体发送给slave,是比较消耗性能的,生成RDB的速度比较慢,全量拷贝

Redis全量同步

第二次来,就可以根据offset来判断你的进度了,可以基于它做增量同步

查看我们的日志

7002日志:连接    sync同步

第一次7002请求尝试做局部的同步:增量同步,它会传过去id 和offset:1

7001主节点:主节点接口到增量同步,判断id不一样,就拒绝增量同步

拒绝之后做全量同步: 

7002只能做全量同步:

Reids增量同步

在什么情况下无法做增量同步:

offset底层是一个数组,

当slave宕机后,master在一直接收新数据,一直走,当它超多slave的宕机处,走了一环还在走,

slave欠的太多了一环没有记下,又多了一部分

这部分的数据被覆盖了,就消失了只能去master的内存中去找,只能去做全量同步了

(3)主从同步的优化

从两个方面:

1.尽可能的减少全量同步,全量同步的性能比较差嘛

2.优化全量同步的性能

   在配置文件中做无磁盘复制:正常的复制要生成RDB文件,比如说内存有10g,要在磁盘写10g,然后在把磁盘的文件通过网络发送给我们slave,磁盘的读写是比较慢的导致了,同步复制的效率比较低,无磁盘复制就是,当要写RDB文件时,就是io流,不去把它写入磁盘的io流,直接网络中,直接发给slave,减少了磁盘读写

在什么时候可以用呢?当磁盘很慢,网路很快,如果网络带宽不够快,会导致网络阻塞,一定要增加网络带宽

全量同步可以这样优化 

尽可能避免全量同步


http://www.ppmy.cn/news/1295645.html

相关文章

什么是跨域以及怎么处理跨域问题

文章目录 什么是跨域?跨域问题常见场景怎么处理跨域1、配置代理2、CORS(跨域资源共享)3、JSONP(仅限 GET 请求)4、使用 WebSocket 注意事项: 什么是跨域? 跨域(Cross-Origin&#x…

Ubuntu 24.04 Preview 版安装 libtinfo5

Ubuntu 24.04 Preview 版安装 libtinfo5 0. 背景1. 安装 libtinfo52. 安装 cuda 0. 背景 Ubuntu 24.04 Preview 版安装 Cuda 时报确实 libtinfo5 的错误。 1. 安装 libtinfo5 wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.4-2_amd64.deb dpk…

机器学习笔记 - win11 + camke + vs2022 + vcpkg编译pcl点云处理库,并创建c++项目,加载3d点云文件并显示

一、环境说明 这里编译的环境主要是基于vcpkg、cmake、Visual Studio 2022、win11。 1、首先更新vcpkg 因为我本地是已经安装过vcpkg的,但是很久没有更新了,所以首先更新一下,该挂梯子的要挂梯子了,如果挂了梯子也不好用,那就更新的时候看看什么下载不下来,就想办法手动…

ClickHouse基础知识(七):ClickHouse的分片集群

副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。 要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切 分,不同的分片分布到…

C/C++动态内存分配 malloc、new、vector(简单讲述)

路虽远,行则将至 事虽难,做则必成 今天来主要讲C中动态内存分配 其中会穿插一些C的内容以及两者的比较 如果对C语言中的动态内存分配还不够理解的同学 可以看看我之前的博客:C语言动态分配 在讲解C的动态内存分配之前 我们先讲一下C内存模型 &#xff1…

【C++20】编译期检测所有未定义行为undefined behavior和内存泄漏(不借助编译选项以及任何外部工具)

文章目录 一、未定义行为Undefined Behavior(UB)1.返回一个未初始化的局部变量的值2.数组越界访问3.有符号数的常量表达式溢出4.new与delete5.vector6.空指针解引用 参考 一、未定义行为Undefined Behavior(UB) 在C中,未定义行为(Undefined Behavior&am…

二维码地址门牌系统技术服务:让您的生活更便捷,一码通行,安全无忧

文章目录 前言一、融合二维码技术与门牌的便捷服务二、手机开门便捷功能三、智能化安全保障四、智能化、便捷化的新型技术 前言 在数字化时代,二维码门牌系统技术应运而生,为了满足人们对安全、便捷生活的需求。这项技术将二维码与门牌结合,…

YOLOv5改进 | 主干篇 | CSWinTransformer交叉形窗口网络改进特征融合层

一、本文介绍 本文给大家带来的改进机制是CSWin Transformer,其基于Transformer架构,创新性地引入了交叉形窗口自注意力机制,用于有效地并行处理图像的水平和垂直条带,形成交叉形窗口以提高计算效率。它还提出了局部增强位置编码(LePE),更好地处理局部位置信息,我将其…