当前位置: 首页 > news >正文

如何保持 mysql 和 redis 中数据的一致性?PegaDB 给出答案

MySQL 与 Redis 数据保持一致性是一个常见且复杂的问题,一般来说需要结合多种策略来平衡性能与一致性。

传统的解决策略是先读缓存,未命中则读数据库并回填缓存,但方式这种维护成本较高。

随着云数据库技术的发展,目前国内云厂商数据库很多采用磁盘 kv 存储,内存+磁盘结合的方式来解决这个问题。

比如百度智能云的 PegaDB、腾讯的 KeeWiDB 等等。

传统解决策略与挑战

在多地域数据管理中,保持数据的同步性常常着面临诸多挑战。不同地域的数据信息同步需要使用专业的数据复制和同步工具(如 GoldenGate、SharePlex 等)手动写入,并且操作过程中需要专业人员执行、维护。此外,还有一种方法是将数据库的事务日志定期或实时传输到远程地点,然后在远程数据库上重放这些日志来实现数据同步。尽管这种方法可以在不同地域之间同步数据,但整个过程复杂性高、时间周期长。

百度智能云 PegaDB 解决方案

Redis 容量型(PegaDB)自研多活实例组产品。多活实例组由至多 5 个实例组成, 每个实例均可以进行本地域读写。无需专业人员手动写入、维护,每个地域数据由同步组件自动化同步至其他地域,省时省力。多活实例组应用场景如下:

  • 异地多活: 业务需求应用就近访问同时数据整体一致。

  • 数据灾备: 可实现同城灾备、两地三中心灾备及三地灾备等多种数据灾备场景。

百度智能云数据库 Redis 容量型(PegaDB)异地多活同步通道单向可达 5 万 QPS。本地域读写与单实例的延迟基本一致。跨地域间同步,延迟几十毫秒至几百毫秒。不仅通过异地多活的架构设计解决了多地域数据同步一致性的问题。同时,数据自动化同步至其他地域,无需专业数据复制与同步工具手动写入,节省了人力成本。

具体实现

  • 在异地多活集群中,每个实例都会为其配置一个数据同步组件,这个同步组件的叫做 SyncAgent。单个分片内部,只有主节点的 SyncAgent 会工作。SyncAgent 会解析 Redis 生成的 AOF 并将增量的 AOF 同步到目标集群。

  • 当 SyncAgent 故障重启后,SyncAgent 需要继续从之前的同步位点继续同步,这就需要对 AOF 中的每一条命令增加一个编号。在 PegaDB 架构中,引入了一个叫 operator header 的结构。有了 op header 后,SyncAgent 就可以记录下 opid 来追踪同步进度了。

  • 当 SyncAgent 启动后,它会尝试获取同步点,并且在工作过程中,会周期性地记录更新后的同步点,而这些信息可以存储在一个 PegaDB 节点中。

http://www.dtcms.com/a/13617.html

相关文章:

  • FastExcel + Java:打造高效灵活的Excel数据导入导出解决方案
  • 【科技革命】颠覆性力量与社会伦理的再平衡
  • OpenCV机器学习(2)提升算法类cv::ml::Boost
  • 2024美团春招硬件开发笔试真题及答案解析
  • 基于云计算的分布式文件存储系统设计与实现
  • 24、深度学习-自学之路-卷积神经网络
  • 【OpenCV】双目相机计算深度图和点云
  • 归并排序 和 七大算法的总结图
  • 【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?
  • DeepSeek 指导手册(入门到精通)
  • C++从入门到实战(三)缺省参数与函数重载
  • Navicat导入海量Excel数据到数据库(简易介绍)
  • Spring 项目接入 DeepSeek,分享两种超简单的方式!
  • Redis7.0八种数据结构底层原理
  • HTML的入门
  • Vue笔记(十)
  • 深度剖析责任链模式
  • 游戏引擎学习第100天
  • 走进 Tcl 语言:历史、特性与应用
  • C++ ——从C到C++
  • C++,STL容器适配器,stack:栈深入解析
  • docker compose部署flink集群
  • 【Vue中BUG解决】npm error path git
  • macOS 上部署 RAGFlow
  • 【经验分享】Linux 系统安装后内核参数优化
  • 微信小程序医院挂号系统
  • Visual Studio踩过的坑
  • Mac上搭建宝塔环境并部署PHP项目
  • 侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用
  • 【深入探讨 ResNet:解决深度神经网络训练问题的革命性架构】