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

如何保证mysql数据库到ES的数据一致性

1.同步双写方案

在代码中对数据库和ES进行双写操作,确保先更新数据后更新ES。
优点:

  1. 数据一致性:双写策略可以保证在MySql和Elasticsearch之间数据的强一致性,因为每次数据库的变更都会在Elasticsearch同步反映。
  2. 实时性:双写策略可以实现数据的实时同步,用户在MySql中进行的任务操作都会立即在ElasticSearch中体现。
  3. 易于实现:从技术角度来说,双写策略的实现相对简单,通常只需要在程序代码中添加额外的写入逻辑。

缺点:

  1. 代码复杂性:需要在应用程序中增加额外的处理数据的双写,这会增加代码的复杂性和维护难度。
  2. 性能开销:每次数据操作都需要执行两次,这会导致额外的性开销,龙其是在高并发的场景下。
  3. **为据不一致风险:**在双写过程中,如果发生系统故障或网络延迟,可能会出现数据不一致的情况,龙其是在写入MySql成功但写入ES失败时。

应用场景:

  1. 系统特点:旧系统年限长,单体架构且技术比较落后,如果引入es之外的其他中间件治理成很高,可以考虑这个方案。
  2. 业务场景:用户量少、偏后台管理类的系统,对数据同步的实时性要求很高,接近实时。

2.MQ异步双写方案

应用程序在更新数据库后发送消息到MQ,由MQ的消费者异步更新ES。

方案核心:

  • 生产者端双写:生产者系统在发送消息到MQ的同时,也写入到MySql。

  • 消费者端异步处理:消费者从MQ中读取消息,并异步地将消息处理结果写入到ES。

    优点:

  • 系统解藕:MQ的使用使得MySQL和ES之间的依赖性降低,提高了系统的可难搞性和扩展性。

  • 高可用性:MQ可以提供消息的持久化存储,确保即使系统故障,消息也不会丢失。

  • 容错性:**在双写过程中,即使某个系统出现故障,数据仍然可以通过其他系统恢复。

    应用场景:

  • 用户量大,高并发场景:系统服务的大量用户同时进行操作,导致系统面临高并发压力。

  • 业务变更少:业务逻辑变更相对较少,数据同步的需比较稳定。

  • 允许一定的延迟:在保证用户体验的前提下,数据同步的延迟在秒级范围内是可以接受的。

3.扫表定时同步方案

通过定时任务定期扫描数据库,将变更的数据同步到ES。
优点:

  • 实现简单:使用定时任务调试框架,不需要复杂的开发工作。

  • 适合批量数据:对于大量数据的迁移,批量处理可以减少网络传输次数和ES的写入压力。

  • 对业务影响小:定时任务可以在系统负载较低的时段运行,对在线业务影响较小。

    缺点:

  • 实时性差:由于是定期执行,数据同步存在延迟,不适合对实时性要求高的应用。

  • 性能影响:同步过程中可能会对MySQL和ES的性能产生短期影响,尤其是在数据量大时。

  • 数据一致性:如果在同步周期内数据发生变化,可能会导致ES中数据与MySql不一致。

    应用场景:

  • 系统特点:旧系统年限长、技术框架老旧,引入其他的中间件成本很高。

  • 业务场景:用户体量小、偏报表统计类业务、对数据实时性要求不高。

4.监听binlog同步方案

通过直接监听MqSql的binlog来实现数据库和ES之间的实时同步。

优点

  • 业务无侵入,数据同步准时
  • 业务解藕,不需要关注原来系统的业务逻辑

缺点

  • 构建Binlog系统复杂
  • 如果采用MQ消费解析的Binlog信息,也会像方案二一样存在MQ延时的风险。

应用场景

  • 系统特点:C端系统,开放mysql binlog日志监听,引入第三方canal中间件成本不高。
  • 业务场景:互联网公司,用户体量大、大型多中心组织、高并发场景,业务上允许有一定的延迟(秒级)

相关文章:

如何保证mysql数据库到ES的数据一致性

1.同步双写方案 在代码中对数据库和ES进行双写操作,确保先更新数据后更新ES。 优点: 数据一致性:双写策略可以保证在MySql和Elasticsearch之间数据的强一致性,因为每次数据库的变更都会在Elasticsearch同步反映。实时性&#xf…...

安装MongoDB,环境配置

官网下载地址:MongoDB Shell Download | MongoDB 选择版本 安装 下载完成双击打开 点击mongodb-windows-x86_64-8.0.0-signed 选择安装地址 检查安装地址 安装成功 二.配置MongoDB数据库环境 1.找到安装好MongoDB的bin路径 复制bin路径 打开此电脑 -> 打开高级…...

家用无线路由器的 2.4GHz 和 5GHz

家中的无线路由器 WiFi 名称有两个,一个后面带有 “5G” 的标记,这让人产生疑问:“连接带‘5G’的 WiFi 是不是速度更快?” 实际上,这里的 “5G” 并不是移动通信中的 5G 网络,而是指路由器的工作频率为 5G…...

我的tensorboard

1.Tensorboard 2.Tensorboard的使用 导入tensorboard并创建SummaryWriter 添加标量数据 添加图片数据 直方图 模型可视化 3.代码使用 模型可视化 # 记录模型结构 dummy_input torch.randn(1, 3, 224, 224).to(device) # 根据你的模型输入尺寸调整 writer.add_graph(model…...

Quartz 相关线程

​ 我们在前面文章中说到过Quartz涉及到的线程,但是散落在几篇文章中,不好找。而Quartz涉及到的线程对于理解Quartz也比较重要,所以今天专门提取出来单独说一下。 Quartz中的主要线程: 任务调度线程QuartzSchedulerThread 任务执…...

【QED】爱丽丝与混沌的无尽海

文章目录 题目题目描述输入输出格式数据范围测试样例 思路代码复杂度分析时间复杂度空间复杂度 题目 题目链接🔗 题目描述 如图所示,爱丽丝在一个3x3的迷宫之中,每个方格中标有 1 − 9 1-9 1−9各不相同的数字,爱丽丝可以从一格…...

IO模型学习

背景知识 Socket 套接字。 客户端和服务端通信时,客户端需要数据出口,服务端需要数据入口,这两个出入口就是Socket。数据接收方新建socket后需要绑定ip和端口号,这样客户端才能链接上socket。连接的过程就是 三次握手 FD file …...

Doxygen 使用指南

Doxygen 是一个文档生成工具,可以从源代码中的注释生成高质量的文档,支持多种编程语言(如 C/C、Python、Java 等)。以下是 Doxygen 的基本使用方法。 1. 安装 Doxygen 1.1 下载 Doxygen 访问 Doxygen 官网。根据操作系统选择合适…...

设计模式与游戏完美开发(2)

更多内容可以浏览本人博客:https://azureblog.cn/ 😊 该文章主主题内容均来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第四章 游戏主要类——外观模式(Facade) 一、游戏子功能的整合 一个游戏程序常常由内部数个不…...

Coroutine 基础三 —— 结构化并发(二)

1、协程的结构化异常管理 如果一个协程抛异常,它所在的整个协程树上的其他协程(向上是父协程到根协程,向下是所有后代协程)都会被取消。因此协程发生异常的后果是十分严重的。 先讲原理,再说解决方案。 协程异常的处…...

GXUOJ-算法-第一次作业

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…...

Springboot项目Druid运行时动态连接多数据源的功能

项目支持多数据库连接是个很常见的需求&#xff0c;这不仅是要在编译前连已经知道的多个数据库&#xff0c;有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...

字符串匹配——KMP算法

前言 刷到字符串匹配的力扣题了【28. 实现 strStr() 】&#xff0c;这题简单吧用库函数做就可以&#xff0c;说难吧&#xff0c;就得引出大名鼎鼎的线性匹配算法——KMP。 目录 KMP 算法背景与原理算法优势 前缀表1. 构建Next数组2. 搜索匹配 KMP 算法背景与原理 KMP&#x…...

Qt开发技术【下拉复选框 MultiSelectComboBox 自定义全选项】

继承ComboBox完成下拉复选框 自定义全选项 效果图 整个控件继承于QCombobox类。主要修改QLineEdit、QListWidget这两部分&#xff0c;QComboBox提供如下接口&#xff0c;可以将这两部分设置为新建的QLineEdit、QListWidget对象 CMultiSelectComboBox::CMultiSelectComboBo…...

20_HTML5 SSE --[HTML5 API 学习之旅]

HTML5 Server-Sent Events (SSE) 是一种技术&#xff0c;它允许服务器向浏览器推送更新。与传统的轮询不同&#xff0c;SSE提供了真正的单向实时通信通道&#xff1a;服务器可以主动发送数据到客户端&#xff0c;而不需要客户端发起请求。这对于实现实时更新的应用非常有用&…...

jetson Orin nx + yolov8 TensorRT 加速量化 环境配置

参考【Jetson】Jetson Orin NX纯系统配置环境-CSDN博客 一 系统环境配置&#xff1a; 1.更换源&#xff1a; sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list2.更新源&#xff1a; sudo apt upgradesudo apt updatesudo apt dist-upgrade sudo apt-get updat…...

Android Studio IDE环境配置

​需要安装哪些东西&#xff1a; Java jdk Java Downloads | OracleAndroid Studio 下载 Android Studio 和应用工具 - Android 开发者 | Android DevelopersAndroid Sdk 现在的Android Studio版本安装时会自动安装&#xff0c;需要注意下安装的路径Android Studio插件…...

PTA 7-2 0/1背包问题(回溯法) 作者 王东 单位 贵州师范学院

0/1背包问题。给定一载重量为W的背包及n个重量为wi、价值为vi的物体&#xff0c;1≤i≤n,要求重量和恰好为W具有最大的价值。 输入格式: 第一行输入背包载重量W及背包个数n&#xff0c;再依次输入n行&#xff0c;每行为背包重量wi和价值vi。 输出格式: 第一行输出装入背包内…...

Matlab环形柱状图

数据准备&#xff1a; 名称 数值 Aa 21 Bb 23 Cc 35 Dd 47 保存为Excel文件后&#xff1a; % Load data from Excel file filename data.xlsx; % Ensure the file is in the current folder or provide full path dataTable readtable(filena…...

【AI大模型】探索GPT模型的奥秘:引领自然语言处理的新纪元

目录 &#x1f354; GPT介绍 &#x1f354; GPT的架构 &#x1f354; GPT训练过程 3.1 无监督的预训练语言模型 3.2 有监督的下游任务fine-tunning &#x1f354; 小结 学习目标 了解什么是GPT.掌握GPT的架构.掌握GPT的预训练任务. &#x1f354; GPT介绍 GPT是OpenAI公…...

避开这5个坑!WPS宏调用DeepSeek API识别标题的实战经验分享

WPS宏调用DeepSeek API识别标题的五个典型陷阱与实战解决方案 当技术文档超过20页时&#xff0c;手动设置标题样式和目录的工作量会呈指数级增长。去年我为某科技公司处理一份87页的技术白皮书时&#xff0c;团队花了整整两天时间调整标题层级&#xff0c;而最终因为格式不一致…...

C++ lambda 捕获机制与作用域

C lambda 捕获机制与作用域探析 在C11引入的lambda表达式为开发者提供了更灵活的匿名函数实现方式&#xff0c;其核心特性之一是捕获机制&#xff0c;允许lambda访问外部作用域的变量。理解捕获规则与作用域的关系&#xff0c;不仅能避免常见错误&#xff0c;还能提升代码的简…...

力扣热门100题之合并区间

这题核心就两步&#xff1a;先按起点排序 → 再逐个合并重叠区间 思路 1. 按每个区间的左端点从小到大排序 2. 用一个列表保存结果 3. 遍历每个区间&#xff1a; ◦ 如果结果为空&#xff0c;直接加入 ◦ 否则看当前区间起点 ≤ 最后一个区间终点 → 重叠&#xff0c;合并 ◦ 不…...

第三次学习C语言有感

我是一名大一学生&#xff0c;学习的专业是自动化&#xff0c;报专业时想着的是自动化可以走的方面是很广的&#xff0c;想着大学里面可以多多尝试不一样东西看自己对哪一样感兴趣。说实话&#xff0c;因为我对单片机感兴趣才驱使我学习C语言的&#xff0c;虽然嘴上说的是C语言…...

AI率超80%不要慌,这样处理比自己改快10倍

看到AI率80%&#xff0c;第一反应是慌乱&#xff0c;这完全正常。但慌乱之后&#xff0c;做什么决定很关键。 这篇文章只说一件事&#xff1a;为什么用工具处理比自己改快10倍&#xff0c;怎么用工具最快解决这个问题。 手动改写的真实速度 先来做一个计算。 一个写作速度正…...

一台机器也能玩转StarRocks?手把手教你搭建单机测试环境(附避坑指南)

一台机器玩转StarRocks&#xff1a;单机测试环境搭建实战与避坑指南 当你想快速验证StarRocks的功能特性&#xff0c;或者进行本地开发测试时&#xff0c;单机部署是最便捷的选择。虽然官方并不推荐在生产环境中使用单机模式&#xff0c;但对于个人开发者、学生或测试场景来说&…...

别再乱配了!给COMSOL选工作站,CPU、内存、主板到底怎么搭才不浪费钱?

COMSOL工作站黄金配置法则&#xff1a;精准匹配需求&#xff0c;避开性能陷阱 当你面对琳琅满目的CPU型号、内存规格和主板参数时&#xff0c;是否感到无从下手&#xff1f;COMSOL Multiphysics作为一款强大的多物理场仿真工具&#xff0c;其性能表现与硬件配置息息相关。但盲目…...

教育科技赋能自主学习:JiYuTrainer的平衡之道与效率提升方案

教育科技赋能自主学习&#xff1a;JiYuTrainer的平衡之道与效率提升方案 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 教学管控与学习自由的平衡难题 在数字化教育普及的今天&…...

避开带宽陷阱:用低成本示波器搞定MIPI CSI-2信号的眼图与时序分析

避开带宽陷阱&#xff1a;用低成本示波器搞定MIPI CSI-2信号的眼图与时序分析 当你手头只有一台几百MHz带宽的示波器&#xff0c;却要分析动辄上Gbps的MIPI CSI-2高速信号时&#xff0c;是否感到无从下手&#xff1f;别担心&#xff0c;这篇文章将带你突破硬件限制&#xff0c;…...

2025届最火的十大降重复率助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 将AI论文查重系统&#xff0c;基于自然语言处理&#xff0c;与深度学习模型相结合&#xff0…...