TongRDS分布式内存数据缓存中间件

命令

优势

支持高达10亿级的数据缓冲,内存优化管理,避免GC性能劣化
高并发系统设计,可充分利用多CPU资源实现并行处理。
数据采用key-value多索引方式存储,字段类型和长度可配置。
支持多台服务并行运行,服务之间可互为主备,实现负载分担。
数据同步采用独立队列,同步异常不影响主业务。
支持数据有效期设置,过期数据自动回收。
服务重启时可从其他服务获取在线数据,单台服务故障不影响整个系统

中心和服务节点区别

主从模式

主节点(master)负责数据写入,从节点(slave)数据读取和备份.
若主节点发生故障,需人工介入,将某个从节点提升为新的主节点,无法实现高度自动化。

主从模式特点:

主从关系的配置:一个主库对应多个从库,一个从库对应一个主库
从库的容错能力:从库故障,对系统其他部分的影响小。即使在从库宕机的情况下,其他从库仍可提供读服务,主库也能继续正常的读写操作。故障的从库在恢复后,能自动从主库同步缺失数据。
主库故障的影响:主库故障可能导致Redis暂停处理新的写请求,但已连接的从库可继续提供读服务。主库恢复后,Redis将重新提供完整的读写服务。
应对主库故障的机制:在当前主库故障时,系统不会自动在从库中选举新的主库。这需要借助额外的高可用性解决方案,例如Redis Sentinel或Redis Cluster,来管理主库的选举和故障转移

复制原理:异步复制,不能完全保证主从数据的一致性。
第一次启动:在从库第一次连接到主库时,将采用psync复制方式进行全量复制。这意味着从库会从头开始复制主库中的全部数据。
正常运行期间:在正常运行状态下,从库通过读取主库的缓冲区来进行增量复制。这个过程涉及复制主库上发生的新的数据变更。
从库第二次启动(主库缓冲区未溢出) :当从库重新启动且主库的缓冲区未溢出时,将通过读取主库的缓冲区进行部分复制。这种方式能够快速同步中断期间发生的数据变更,而不会对主库造成重大影响。
Redis 2.8及以上版本的从库第二次启动(针对主库) :当从库第二次启动且系统版本为Redis 2.8或以上时,将采用psync复制进行全量复制。这种情况通常发生在主库的缓冲区数据无法满足从库需要同步的数据量

哨兵模式

哨兵模式主要通过后台监控机制来确保Redis服务的稳定性。


在这一模式中,哨兵负责实时监控主节点的运行状况。一旦主节点出现故障,哨兵将基于预设的投票机制自动将某个从节点晋升为新的主节点,以保持服务的连续性和数据的可用性。

优势:继承了主从复制的所有优势,自动实现从切换和故障转移,即使主节点发生故障,系统也能迅速自动切换到备用节点,确保服务的连续性和可用性。

劣势:在线扩容方面,当集群容量接近或达到上限时候,扩容操作复杂

(redis2.8及后续版本,官方引入了Sentinel(哨兵)架构)

Cluster模式

定义:每个从节点都复制主节点的数据,但不直接参与读写操作,主要用于数据备份和故障恢复。
这种架构使得每个节点都可以在需要时承担主节点的角色,从而提高了整体系统的可靠性和容错能力。
支持更大规模的数据存储和管理

PSYNC

启动或重连判断:当从节点(Slave)启动或与主节点(Master)的连接断开后重连时,从节点需要确定是否曾经同步过。
如果从节点没有保存任何主节点的运行ID(runid),它将视为第一次连接到主节点。


第一次同步处理:在第一次同步的情况下,从节点会发送 PSYNC -1 命令给主节点,请求进行全量数据同步。
全量同步是指主节点将其所有数据完整地复制一份给从节点。


断线重连处理:对于之前已经同步过的从节点,它会发送 PSYNC runid offset 命令,其中runid是主节点的唯一标识符,offset是从节点上次同步数据的偏移量。


主节点的响应:主节点接收到PSYNC命令后,会检查runid是否匹配,以及offset是否在复制积压缓冲区的范围内。


如果匹配且offset有效,主节点将回复CONTINUE,并发送自从节点上次断开连接以来的所有写命令。
全量同步触发条件:如果runid不匹配,或offset超出了积压缓冲区的范围,主节点将通知从节点执行全量同步,回复FULLRESYNC runid offset。


复制积压缓冲区的作用:主节点会在处理写命令的同时,将这些命令存入复制积压队列,同时记录队列中存放命令的全局offset。


当从节点断线重连,且条件允许时,它可以通过offset从积压队列中进行增量复制,而不是全量复制。
数据一致性保障:PSYNC机制允许从节点在网络不稳或其他意外断开连接的情况下,能够以增量方式重新同步数据,保持主从节点数据的一致性。


PS:判断是否进行全量同步,需要考虑两个关键因素:首先,确认这是否是第一次进行数据同步;其次,检查缓存区是否已经达到或超过其容量上限。只有在是第一次同步,或者缓存区已溢出的情况下,才会执行全量同步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【大数据学习 | Spark调优篇】Spark之内存调优

1. 内存的花费 1)每个Java对象,都有一个对象头,会占用16个字节,主要是包括了一些对象的元信息,比如指向它的类的指针。如果一个对象本身很小,比如就包括了一个int类型的field,那么它的对象头实…

pageoffice最新版本浏览器点击没反应解决办法

一、问题现象 最新版本的谷歌、火狐浏览器,调用pageoffice时,点击后没反应(旧的谷歌浏览器不受影响)。 二、产生原因 服务器返回pageOffice的客户端唤起链接格式为: PageOffice://|http://192.168.1.120:8080/xxx …

知行合一:实践中的技术分享与学习

随着科技的不断发展,技术的更新迭代也在不断加速。在这个信息化、数字化的时代,技术人员之间的交流与合作显得尤为重要。为了帮助广大技术爱好者、从业者和专家们相互学习、分享经验、解决技术难题,涵盖了数据库、容器化技术、运维、研发、网…

使用经典的Java,还是拥抱新兴的Rust?

在当代互联网时代的企业级开发中,技术栈的选择往往牵动着每个团队的神经。随着Rust语言的崛起,许多开发团队开始重新思考:是继续坚持使用经典的Java,还是拥抱新兴的Rust?这个问题背后,折射出的是对技术演进…

【Qt】图片绘制不清晰的问题

背景 实现一个图片浏览器&#xff0c;可以支持放大/缩小查看图片。主要组件如下&#xff1a; // canvaswidget.h #ifndef CANVASWIDGET_H #define CANVASWIDGET_H#include <QWidget>class CanvasWidget : public QWidget {Q_OBJECT public:explicit CanvasWidget(QImag…

vscode 怎么下载 vsix 文件?

参考&#xff1a;https://marketplace.visualstudio.com/items?itemNameMarsCode.marscode-extension 更好的办法&#xff1a;直接去相关插件的 github repo 下载老版本 https://github.com/VSCodeVim/Vim/releases?page5 或者&#xff0c;去 open-vsx.org 下载老版本 点击这…

学习笔记043——HashMap源码学习1

文章目录 1、HashMap2、Hashtable3、TreeMap4、HashMap 底层结构4.1、什么是红黑树&#xff1f; 1、HashMap HashMap key 是不能重复的&#xff0c;value 可以重复 底层结构 key-value 进行存储&#xff0c;key-value 存入到 Set 中&#xff0c;再将 Set 装载到 HashMap pack…

火语言RPA流程组件介绍--键盘按键

&#x1f6a9;【组件功能】&#xff1a;模拟键盘按键 配置预览 配置说明 按键 点击后,在弹出的软键盘上选择需要的按键 执行后等待时间(ms) 默认值300,执行该组件后等待300毫秒后执行下一个组件. 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型…

电子应用设计方案-30:智能扫地机器人系统方案设计

智能扫地机器人系统方案设计 一、引言 随着人们生活节奏的加快和对生活品质的追求&#xff0c;智能家居产品越来越受到消费者的青睐。智能扫地机器人作为一种能够自动清扫地面的智能设备&#xff0c;为人们节省了大量的时间和精力。本方案旨在设计一款功能强大、智能化程度高、…

从简单的自动化脚本到复杂的智能助手:Agent技术的实践与应用

现代软件开发中&#xff0c;Agent技术正在悄然改变着我们构建应用程序的方式。一个Agent就像是一个能独立完成特定任务的智能助手&#xff0c;它可以感知环境、作出决策并采取行动。让我们通过实际案例&#xff0c;深入了解如何运用Agent技术来构建智能系统。 想象你正在开发一…

Ubuntu Server 22.04.5 从零到一:详尽安装部署指南

文章目录 Ubuntu Server 22.04.5 从零到一&#xff1a;详尽安装部署指南一、部署环境二、安装系统2.1 安装2.1.1 选择安装方式2.1.2 选择语言2.1.3 选择不更新2.1.4 选择键盘标准2.1.5 选择安装版本2.1.6 设置网卡2.1.7 配置代理2.1.8 设置镜像源2.1.9 选择装系统的硬盘2.1.10 …

定时/延时任务-ScheduledThreadPoolExecutor的使用

文章目录 1. 概要2. 固定速率和固定延时2.1 固定速率2.2 固定延时 3. API 解释3.1 schedule3.2 固定延时 - scheduleWithFixedDelay3.2 固定速率 - scheduleWithFixedDelay 4. 小结 1. 概要 前三篇文章的地址&#xff1a; 定时/延时任务-自己实现一个简单的定时器定时/延时任…

Linux操作系统学习---初识环境变量

目录 ​编辑 环境变量的概念&#xff1a; 小插曲&#xff1a;main函数的第一、二个参数 获取环境变量信息&#xff1a; 1.main函数的第三个参数 2.查看单个环境变量 3.c语言库函数getenv() 和环境变量相关的操作指令&#xff1a; 1.export---导出环境变量&#xff1a; 2.unse…

husky,commit规范,生成CHANGELOG.md,npm发版

项目git提交工程化&#xff08;钩子&#xff0c;提交信息commit message&#xff09;&#xff0c;npm修改版本&#xff0c;需要涉及到的包&#xff1a; husky&#xff0c;允许在git钩子中执行不同的脚步&#xff0c;如commitlint&#xff0c;eslint&#xff0c;prettier&#…

基于Python的飞机大战复现

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【趣味】斗破苍穹修炼文字游戏HTML,CSS,JS

目录 图片展示 游戏功能 扩展功能 完整代码 实现一个简单的斗破苍穹修炼文字游戏&#xff0c;你可以使用HTML、CSS和JavaScript结合来构建游戏的界面和逻辑。以下是一个简化版的游戏框架示例&#xff0c;其中包含玩家修炼的过程、增加修炼进度和显示经验值的基本功能。 图片…

005 MATLAB符号微积分

前言&#xff1a; 在MATLAB中&#xff0c;数值与符号的主要区别在于它们的处理方式和应用场景 数值计算适用于实际的数值计算问题&#xff0c;如矩阵运算、数据分析等。符号计算适用于符号推导、公式化简和符号解析&#xff0c;如理论物理和工程计算。 01 符号对象 1.基本符…

Android 13 编译Android Studio版本的Launcher3

Android 13 Aosp源码 源码版本Android Studio版本Launcher3QuickStepLib (主要代码) Launcher3ResLib(主要资源)Launcher3IconLoaderLib(图

Ubuntu交叉编译 opencv for QNX

前言 在高通板子上开发一些程序的时候,会用到opencv帮助处理一下图像数据,高通车载板子sa8155和sm8295都有QNX os,需要交叉编译opencv的库,(这个交叉编译真是搞得我太恶心了,所以进行一个记录和分享) 搜了很多资料,有些太过于复杂,有些也存在错误导致最后没有编译成…

NVR监测软件EasyNVR多个NVR同时管理:录播主机的5条常见问题与解决办法

视频监控广泛应用于城市治安、交通管理、商业安保及家庭监控等领域。在使用EasyNVR平台管理多个NVR设备时&#xff0c;尤其是涉及到海康录播主机的场景中&#xff0c;使用者可能会遇到一些常见问题。本文将探讨海康录播主机的五个常见问题及其解决办法。 1、海康录播主机的5条常…