如何保证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中间件成本不高。
  • 业务场景:互联网公司,用户体量大、大型多中心组织、高并发场景,业务上允许有一定的延迟(秒级)

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

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

相关文章

FPGA的DMA应用——pcileech

硬件通过pcie总线,访存本机的内存,并进行修改,可以进行很多操作。 学习视频:乱讲DMA及TLP 1-pcileech项目简介和自定义模块介绍_哔哩哔哩_bilibili vivado2024.1的下载文章链接和地址:AMD-Xilinx Vivado™ 2024.1 现…

未来网络技术的新征程:5G、物联网与边缘计算(10/10)

一、5G 网络:引领未来通信新潮流 (一)5G 网络的特点 高速率:5G 依托良好技术架构,提供更高的网络速度,峰值要求不低于 20Gb/s,下载速度最高达 10Gbps。相比 4G 网络,5G 的基站速度…

一种寻路的应用

应用背景 利用长途车进行货物转运的寻路计算。例如从深圳到大连。可以走有很多条长途车的路线。需要根据需求计算出最合适路线。不同的路线的总里程数、总价、需要的时间不一样。客户根据需求进行选择。主要有一些细节: 全国的长途车车站的数据的更新: …

STL格式转换为GLTF格式

STL与GLTF格式简介 STL格式 STL(Stereo Lithography)文件是一种广泛使用的3D打印文件格式,由3D Systems公司开发。它主要用于存储三维物体的几何信息,常用于立体光刻等3D打印技术。STL文件通常只包含物体的表面几何形状&#xf…

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1)

DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(1) 架构 架构图 本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务k3s节点,并基于Argo搭建一套完整的DevOps CI/CD服务平台,包括Argo CD…

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空,意味着结束遍…

前端知识补充—CSS

CSS介绍 什么是CSS CSS(Cascading Style Sheet),层叠样式表, ⽤于控制⻚⾯的样式 CSS 能够对⽹⻚中元素位置的排版进⾏像素级精确控制, 实现美化⻚⾯的效果. 能够做到⻚⾯的样式和结构分离 基本语法规范 选择器 {⼀条/N条声明} 1)选择器决定针对谁修改…

Spring Security 6 系列之九 - 集成JWT

之所以想写这一系列,是因为之前工作过程中使用Spring Security,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0,关键是其风…

【Go】context标准库

文章目录 1. 概述1.1 什么是 Context1.2 设计原理1.3 使用场景1.4 Context 分类核心:Context接口2. 源码解读4个实现emptyCtxTODO 和 BackgroundcancelCtxWithCancelcancelCtx.propagateCancel 构建父子关联parentCancelCtx 获取父上下文中的内嵌cancelCtxcanceltimerCtxWithT…

Windows和Linux安全配置和加固

一.A模块基础设施设置/安全加固 A-1.登录加固 1.密码策略 a.最小密码长度不少于8个字符,将密码长度最小值的属性配置界面截图。 练习用的WindowsServer2008,系统左下角开始 > 管理工具 > 本地安全策略 > 账户策略 > 密码策略 > 密码最小长度&#…

webrtc-internals调试工具

Google 的 Chrome(87 或更高版本)WebRTC 内部工具是一套内置于 Chrome 浏览器中的调试工具; webrtc-internals 能够查看有关视频和音频轨道、使用的编解码器以及流的一般质量的详细信息。这些知识对于解决音频和视频质量差的问题非常有帮助。 webrtc-int…

MT6765核心板_MTK6765安卓核心板规格参数_联发科MTK模块开发

MTK6765安卓核心板是基于联发科高效八核处理器平台开发的一款强大硬件解决方案。这款核心板的核心是采用12纳米工艺打造的MTK6765 CPU,具备四个主频高达2.3GHz的CORTEX-A53核心和四个主频为1.8GHz的CORTEX-A53核心,提供了卓越的处理性能。用户可以根据需…

Linux Shell 脚本编程基础知识篇—shell 运算命令详解

ℹ️大家好,我是练小杰,本文继续Linux shell脚本编程的基础知识内容,接着讲算术运算命令的详细操作~~ 复习:【shell简介以及基本操作】 更多Linux 相关内容请点击👉“Linux专栏”~ 文章目录 let运算命令的用法let 的高…

Nginx单向链表 ngx_list_t

目录 基本概述 数据结构 接口描述 具体实现 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx:模块开发与架构解析》 基本概述 Nginx 中的 ngx_list_t 是一个单向链表容器,链表中的每一个节…

KVM虚拟机管理脚本

思路: 在/opt/kvm下创建一个磁盘文件,做差异镜像,创建一个虚拟机配置文件,做虚拟机模版 [rootnode01 ~]# ls /opt/kvm/ vm_base.qcow2 vm_base.xml创建虚拟机的步骤:首先创建虚拟机的差异镜像,然后复制虚…

芯片Tapeout power signoff 之IR Drop Redhawk Ploc文件格式及其意义

数字IC后端工程师在芯片流程最后阶段都会使用redhawk或voltus进行设计的IR Drop功耗signoff分析。必须确保静态,动态ir drop都符合signoff标准。 在做redhawk ir drop分析前,我们需要提供一个redhawk ploc供电点坐标。 数字IC设计后端实现前期预防IR D…

流批一体向量化计算引擎 Flex 在蚂蚁的探索和实践

编者按:Flex是蚂蚁数据部自研的一款流批一体的向量化引擎,Flex是Fink和Velox的全称,也是Flexible的前缀,被赋予了灵活可插拔的寓意。本文将重点从向量化技术背景、Flex架构方案和未来规划三个方面展开论述。 作者介绍:…

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集I-FGSSM介绍I-FGSSM代码实现I-FGSSM算法实现攻击效果 代码汇总ifgssm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行分类 Pytorch…

全面Kafka监控方案:从配置到指标

文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口:kafka基本分为broker、producer、consumer三个子项,每一项的启动都需要…

HTML制作一个普通的背景换肤案例2024版

一&#xff0c;完整的代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>换肤</t…