企业级NoSql数据库Redis集群

数据库主要分为两大类:关系型数据库与 NoSQL 数据库
关系型数据库 ,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库
中的数据主流的 MySQL Oracle MS SQL Server DB2 都属于这类传统数据库。
NoSQL 数据库 ,全称为 Not Only SQL ,意思就是适用关系型数据库的时候就使用关系型数据库,不适
用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键
值存储( memcached Redis )、永久性键值存储( ROMA Redis )、面向文档的数据库
MongoDB CouchDB )、面向列的数据库( Cassandra HBase ),每种 NoSQL 都有其特有的使用
场景及优点
为什么还要用 NoSQL 数据库呢?
主要是由于随着互联网发展,数据量越来越大,对性能要求越来越高,传统数据库存在着先天性的缺
陷,即单机(单库)性能瓶颈,并且扩展困难。这样既有单机单库瓶颈,却又扩展困难,自然无法满足
日益增长的海量数据存储及其性能要求,所以才会出现了各种不同的 NoSQL 产品, NoSQL 根本性的优
势在于在云计算时代,简单、易于大规模分布式扩展,并且读写性能非常高

 

关系型数据库的特点

  • 结构化数据存储:关系型数据库使用表格结构来组织数据,每一行代表一条记录,每一列代表一个字段,数据之间通过外键等关系相互关联。
  • 数据完整性:支持定义主键、外键等约束,保证数据的准确性和一致性。
  • SQL查询语言:使用结构化查询语言(SQL)进行数据的查询、插入、更新和删除操作。
  • 事务管理:支持事务处理,确保数据库操作的原子性、一致性、隔离性和持久性(ACID属性)。
  • 复杂查询能力:支持复杂的多表连接查询、聚合函数、子查询等。
  • 可扩展性:通过分布式数据库系统、集群技术等手段实现一定程度的水平扩展。

NoSQL数据库的特点

  • 非关系型数据模型:NoSQL数据库采用键值对、文档、图形等多种数据模型,不需要预先定义表结构,可以根据实际需求动态调整数据模型。
  • 高性能和高扩展性:通常具有更高的读写性能,特别是在处理大量写入操作时更为高效,支持水平扩展,可以在集群中添加更多的节点来提高性能和容量。
  • 最终一致性:通常采用最终一致性模型,即在数据更新后,不保证立即在所有节点上一致,而是在一段时间内达到一致状态。
  • 简单的事务支持:事务支持较弱,部分NoSQL数据库可能不支持事务或只支持简单的事务处理4。
  • 灵活的数据模型:可以存储非结构化或半结构化数据,数据结构要求不严格,表结构可变。
  • 高可用性:可以方便地实现高可用的架构,例如通过复制模型来实现NoSQL的高可用。

关系型数据库与NoSQL数据库的区别

  • 数据模型:关系型数据库基于表结构,而NoSQL数据库支持多种数据模型,如键值对、文档、图形等。
  • 扩展性:关系型数据库的扩展性相对较弱,主要通过垂直扩展来提升性能,而NoSQL数据库设计之初就考虑了水平扩展。
  • 一致性和事务支持:关系型数据库追求强一致性和完整的事务支持,而NoSQL数据库通常采用最终一致性模型,事务支持较弱。
  • 查询能力:关系型数据库提供丰富的查询操作和聚合函数,支持复杂的SQL查询语句,而NoSQL数据库的查询能力相对较弱,通常只支持基本的查询操作。
  • 应用场景:关系型数据库适用于需要强一致性、复杂查询和事务处理的应用场景,如银行系统、电商订单管理等;NoSQL数据库适用于需要高扩展性、高性能和高可用性的应用场景,如大数据分析、社交网络、物联网等
Redis 特性
速度快 : 10W QPS, 基于内存 ,C 语言实现
单线程
持久化
支持多种数据结构
支持多种编程语言
功能丰富 : 支持 Lua 脚本 , 发布订阅 , 事务 ,pipeline 等功能
简单 : 代码短小精悍 ( 单机核心代码只有 23000 行左右 ), 单线程开发容易 , 不依赖外部库 , 使用简单
主从复制
支持高可用和分布式

redis源码安装

tar zxf redis-7.4.0.tar.gz

dnf install make gcc initscripts -y

[root@redis-node1 redis-7.4.0]#make

[root@redis-node1 redis-7.4.0]# make install

cd redis-7.4.0

cd utils/

vim install_server.sh

注释以下内容

 

启动redis

vim /etc/redis/6379.conf

配置端口

主从复制

Redis主从复制的原理

Redis主从复制是一种数据复制技术,它允许将主服务器(Master)的数据实时复制到一个或多个从服务器(Slave)。主从复制的主要目的是实现数据的高可用性、读写分离以及数据备份。

主从复制的过程主要包括以下几个步骤:

  1. 建立连接:从服务器连接到主服务器,并进行身份验证(如果配置了密码)。
  2. 全量复制:对于初次同步或从服务器数据丢失的情况,主服务器会执行BGSAVE命令生成RDB快照文件,并将该文件发送给从服务器。同时,主服务器还会记录从当前RDB快照生成后收到的所有写命令到复制缓冲区中。
  3. 命令传播:全量复制完成后,主服务器会将复制缓冲区中的写命令发送给从服务器,确保主从数据一致性。
  4. 增量复制:在主从复制环境中,如果从服务器与主服务器的连接中断,从服务器可以在重新连接时请求增量复制。主服务器会根据从服务器的复制偏移量,发送自断开连接以来主服务器执行的写命令,以实现数据的部分同步。

Redis主从复制的作用

Redis主从复制的作用主要包括:

  • 数据冗余:通过在不同的服务器上保持数据的副本,提高数据的安全性,防止数据丢失。
  • 故障恢复:当主服务器出现故障时,可以迅速切换到从服务器提供服务,实现快速的故障恢复。
  • 读写分离:主服务器处理写操作,从服务器处理读操作,可以提高系统的读性能,尤其适用于读操作远多于写操作的场景。
  • 高可用基石:主从复制是实现Redis高可用性解决方案(如哨兵模式和集群模式)的基础.

主机配置

vim /etc/redis/6379.conf

从机:

测试

在主机中写入内容并查看

从机上查看

哨兵模式

Redis哨兵模式的原理

Redis哨兵模式(Sentinel)是Redis的高可用性解决方案,它通过一组哨兵进程来监控Redis主从服务器的健康状态。哨兵模式的主要作用是实现对主节点的监控、自动故障转移和通知。哨兵模式不是一个单独的进程,而是由多个哨兵服务组成的分布式系统。

哨兵的工作流程

  1. 监控:哨兵会周期性地向所有Redis节点发送PING命令,以检查它们是否正常响应。如果哨兵在预定时间内没有收到节点的响应,它会将该节点标记为主观下线(sdown)。

  2. 客观下线判断:哨兵之间会通过发布/订阅(pub/sub)模式相互发现,并使用投票协议来达成共识,判断主节点是否真的宕机(客观下线,odown)。这需要超过法定人数(quorum)的哨兵同意主节点不可用。

  3. 选举领导者:在主节点客观下线后,哨兵会选举一个领导者(leader)来执行故障转移。选举过程中,哨兵会投票给得票最多的哨兵,直到有哨兵获得超过半数的投票并满足法定人数的要求。

  4. 故障转移:领导者选举产生后,它会选择一个合适的从节点作为新的主节点,并指挥其他从节点和哨兵更新配置,将新主节点的信息传播给客户端。

  5. 通知:哨兵可以通过API向客户端发送通知,告知主节点发生了更换。

  6. 客户端重定向:客户端在接收到哨兵的通知后,会连接到新的主节点继续操作。

哨兵模式的作用

  • 监控:哨兵持续监控Redis主从节点的健康状态。
  • 自动故障转移:当主节点发生故障时,哨兵能够自动将一个从节点提升为主节点,确保服务的连续性。
  • 通知:哨兵能够通知客户端主节点的变化,帮助客户端及时切换到新的主节点。
  • 配置提供:哨兵作为配置中心,可以提供当前主节点和从节点的信息给客户端。

开启哨兵

#编辑配置文件

[root@redis-node1 ~]# cd redis-7.4.0/

[root@redis-node1 redis-7.4.0]# cp sentinel.conf /etc/redis/

[root@redis-node1 redis-7.4.0]# vim /etc/redis/sentinel.conf

protected-mode no #关闭保护模式

port 26379 #监听端口

daemonize no #进入不打如后台

pidfile /var/run/redis-sentinel.pid #sentinel进程pid文件

loglevel notice #日志级别

sentinel monitor mymaster 172.25.254.100 6379 2 #创建sentinel监控监控master主

机,2表示必须得到2票

sentinel down-after-milliseconds mymaster 10000 #master中断时长,10秒连不上视为

master下线

sentinel parallel-syncs mymaster 1 #发生故障转移后,同时开始同步新

master数据的slave数量

sentinel failover-timeout mymaster 180000 #整个故障切换的超时时间为3分钟

\####复制配置文件到其他阶段

[root@redis-node1 redis-7.4.0]# scp /etc/redis/sentinel.conf

root@172.25.254.201:/etc/redis/

root@172.25.254.201's password:

sentinel.conf

100% 14KB 9.7MB/s 00:00

[root@redis-node1 redis-7.4.0]# scp /etc/redis/sentinel.conf

root@172.25.254.200:/etc/redis/

root@172.25.254.200's password:

sentinel.conf

 

可以查看主机和从机情况

可以看出20和30是从机,复制的10的内容

停掉10后

20和30中显示10已经宕机了

查看,主机由10变为了30

重启10

显示-sdown

30中从机变为两个

 

Redis Cluster(无中心化设计)

Redis Cluster采用了无中心化的设计,这意味着集群中没有专门的中心节点来协调其他节点的操作。集群中的每个节点都是平等的,它们之间通过Gossip协议进行通信,以实现节点发现、故障检测和状态信息的交换。集群中的节点负责管理一部分数据,这些数据通过哈希槽(Hash Slot)的方式进行划分,确保数据的分布和冗余。

Redis Cluster的作用和优势

Redis Cluster的主要作用是提供高可用性和水平扩展能力。通过数据分片和主从复制,Redis Cluster能够在节点故障时自动进行故障转移,确保服务的连续性。集群中的每个主节点都可以有一个或多个从节点,从节点在主节点故障时可以被提升为新的主节点。此外,Redis Cluster支持在线扩容,可以通过增加新节点来扩展存储容量和处理能力,而不需要停机

Redis Cluster的优势包括:

  • 高可用性:通过主从复制和自动故障转移机制,即使部分节点发生故障,集群也能继续提供服务。
  • 水平扩展:集群可以通过增加节点来扩展,提高读写性能和存储能力。
  • 数据分片:集群内部将所有的key映射到16384个槽中,每个节点负责一部分槽的读写,实现数据的分布式存储。
  • 透明性:客户端可以直接连接集群中的任何节点,集群会自动将请求路由到正确的节点,对外提供统一的接口。
  • 无需中间件:客户端与Redis节点的交互不需要通过代理或中间件,简化了架构。

[root@redis-master1 ~]# redis-cli --cluster create -a 123456 \

\> 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 \

\> 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 \

\> --cluster-replicas 1

添加集群

查看集群状态

检测集群

[root@redis-master1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

每个master对应一个slave

无法在maste1上写入数据,被分配到20的hash槽位上,只能在master2上写入数据

扩容集群

添加要扩容的IP

分配槽位

分配的node id 要与上面想要获得槽位的id一致

开始添加槽位

添加salve,master id要与40一致,因为40是新添加的master,slave添加的id是40的id

再次查看集群,四主四从,添加集群成功

clsuter集群维护

移除要下线主机的哈希槽位

redis-cli -a 123456 --cluster reshard 172.25.254.20:6379

正在移除

删除master

删除的主从id得一致

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

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

相关文章

中仕公考怎么样?2025国考报名流程介绍!

现在是八月下旬,距离2025年国考的开始日期越来越近,今天来给大家分享一下国考报名的流程,希望大家提前做个了解。 报考时间(参考去年) 职位表发布:24年10月中旬 网上报名:24年10月中下旬 报名确认:24年…

昂科烧录器支持Melexis迈来芯的位置传感器MLX90365KDC

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中Melexis迈来芯的位置传感器MLX90365KDC已经被昂科的通用烧录平台AP8000所支持。 MLX90365KDC是第II代Triaxis位置传感器IC。 这款单片器件可凭借其表面的集磁点(IMC)&#xf…

ai变声:视频怎么变音?分享6个语音变声器,视频变声不再难!

想过如何让自己的直播内容更吸引人吗?你是否希望通过变声器来打造独特的声音效果?或者,如何用创意声音提升观众的互动体验呢?随着直播行业的不断发展,每位主播都在努力寻找吸引观众的独特方式,而变声器正是…

鸿蒙南向开发:测试框架xdevice核心组件

简介 xdevice是OpenHarmony中为测试框架的核心组件,提供用例执行所依赖的相关服务。 xdevice主要包括以下几个主要模块: command,用户与测试平台命令行交互模块,提供用户输入命令解析,命令处理。config,…

【机器学习】梯度下降算法

梯度下降算法 这篇博客更加详细,以下只是我个人的理解 梯度下降算法原理讲解——机器学习-CSDN博客 梯度下降算法是一种优化算法,通过梯度下降找到函数最小值时的自变量值。 其基本思想是沿着梯度方向的反方向更新参数,直到逼近函数的极值…

DaxPay:一套开源支付网关系统【送源码】

项目介绍 DaxPay是一套开源支付网关系统,已经对接支付宝、微信支付、云闪付相关的接口。可以独立部署,提供接口供业务系统进行调用,不对原有系统产生影响 特色功能 封装各类支付通道的接口为统一的接口,方便业务系统进行调用&am…

wps题注为表格或图片编号

word中为表格添加题注: 问题:多次或多人编辑导致--序号不能联动更新(域代码不一致,如图) 所以是否可以批量替换word里的域代码?如果可以这问题就解决了————失败 解决办法: 如图,复制表头&…

uni-app 手记集。

1、uni-app 是一个使用 Vue.js 开发的前端应用的框架&#xff0c;所以不会Vue.js的小伙伴可以先去看看Vue.js的基础教学。 2、.vue文件结构 <template><div class"container"></div> </template><script type"text/ecmascript-6&q…

Code Llama: Open Foundation Models for Code论文阅读

整体介绍 Code Llama 发布了3款模型&#xff0c;包括基础模型、Python 专有模型和指令跟随模型&#xff0c;参数量分别为 7B、13B、34B 和 70B。这些模型在长达 16k tokens 的序列上训练。都是基于 Llama 2。 作者针对infilling (FIM) 、长上下文、指令专门做了微调 long-con…

内网穿透的应用-戴森球计划利用cpolar内网穿透实现好友异地远程联机游戏

文章目录 游戏简介1. 下载MOD2.配置cpolar内网穿透3. 主机开启联机3.1 玩家加入游戏 4. 配置固定的TCP端口5. 游玩体验 游戏简介 《戴森球计划》是一款融合了科幻冒险与经营管理元素的优秀游戏。玩家将在浩瀚宇宙中探索未知星球&#xff0c;建立从零开始的工业帝国&#xff0c…

流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)

为了这一整套的解决方案&#xff0c;调研研发整整花费了差不多半年多的时间&#xff0c;需达成的目标&#xff1a; 流媒体服务器端不需要将H.265转码成H.264&#xff0c;就能让Chrome解码播放H.265&#xff1b; 注意&#xff1a;现在很多市面上的软硬件通过转码H.265成H.264的…

xss-labs靶场6-10关

第六关 使用a标签&#xff0c;发现a标签可以。 "><a hreFjavascript:alert(aa)>aa</a> 点击aa 第七关 使用双写绕过 1"><ScscriptRipt>alert(1)</ScscriptRipt> 第八关 将javascript:alert(1)进行编码 然后将编码输入再次点击链…

day8JS-作用域

1. 变量的作用域(变量函数) 作用域是变量的可作用范围&#xff0c;变量只有在自己的作用域下才会生效。 函数会产生作用域&#xff0c;在函数内定义的变量只能在函数内使用。 2. 作用域分类 局部作用域&#xff1a; 函数内定义的变量和形参的作用域就是局部作用域&#xff1b;这…

基于SpringBoot的酒店管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架技术 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 用户注册界面…

rabbitMQ安装与简单demo

安装 mac安装有了brew很方便&#xff0c;windows的可参考 win10 安装rabbitMQ详细步骤 brew install rabbitmq启动 brew services start rabbitmq关闭 brew services stop rabbitmq出了问题之后可以重启一下 brew services restart rabbitmqsome issue 某些库下载超时 比…

学习笔记七:基于Jenkins+k8s+Git+DockerHub等技术链构建企业级DevOps容器云平台

基于Jenkinsk8sGitDockerHub等技术链构建企业级DevOps容器云平台 安装Jenkins在kubernetes中部署jenkins创建名称空间创建pv,上传pv.yaml创建pvc创建一个sa账号通过deployment部署jenkins更新资源清单文件把jenkins前端加上service&#xff0c;提供外部网络访问 配置Jenkins获取…

PeriodWave: Multi-Period Flow Matching for High-Fidelity Waveform Generation

preprintKorea Seoul, Korea 文章目录 abstractmethodFlow Matching for Waveform GenerationHigh-frequency Information Modeling for Flow Matching demo page&#xff0c; PeriodWave 三者最好&#xff0c;而且能把原声中的噪声去掉&#xff0c;GAN一类声码器做不到的。 Pe…

Unity编辑器扩展之Project视图扩展

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity编辑器扩展之Project视图扩展 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01…

一家物流装备企业终止,业绩下滑严重,恐不符合创业板新上市标准

鸿安机械终止的原因如下&#xff1a;首先&#xff0c;报告期内鸿安机械的营业收入和净利润出现下滑趋势&#xff0c;公司最近一年净利润恐不达标&#xff0c;或许不能满足创业板更新的第一套上市标准&#xff1b;其次&#xff0c;鸿安机械经营业绩对比同行业可比公司&#xff0…

智能优化特征选择|基于鹦鹉优化(2024年新出优化算法)的特征选择(分类器选用的是KNN)研究Matlab程序 【优化算法可以替换成其他优化方法】

智能优化特征选择|基于鹦鹉优化&#xff08;2024年新出优化算法&#xff09;的特征选择&#xff08;分类器选用的是KNN&#xff09;研究Matlab程序 【优化算法可以替换成其他优化方法】 文章目录 一、PO基本原理PO基本原理基本流程示例应用 二、实验结果三、核心代码四、代码获…