首页 > 数据库 >MYSQL如何实现将数据同步到ES?

MYSQL如何实现将数据同步到ES?

时间:2024-07-28 18:00:00浏览次数:11  
标签:同步 Cannal 耦合度 MQ MYSQL 数据 ES

MYSQL如何实现将数据同步到ES?

这个问题既要考虑到既能保持数据一致性,又能够保证实时性的一个解决方案

三种方式:

  1. 最直接的就是在业务代码中去实现双写,也就是说每一次修改MySQL数据的时候,同时更新到ES中,注意: 这种方法耦合度很高,一旦发生需求变更会有额外的一个维护成本.
  2. 使用消息队列: 异步数据同步,数据发生变更的时候,触发一个MQ消息,消费端去订阅这个消息,把数据同步到ES中,相对于双写来说降低了系统的耦合度,同时有了可靠性消息队列作为保障,还能够在数据同步失败的时候自动重试. 只不过需要 **引入第三方组件,**额外的增加了系统的复杂度
  3. 通过阿里开源的Cannal组件,去监听binlog中的日志,去捕获数据变更的事件,并实时 推送存储到ES中,这种方式和MQ的实现方式有点类似,但是 不需要切入到业务系统中,灵活性更高

总结:

需要综合考虑业务需求,和系统架构以及数据量 Cannal和MQ的实时性和稳定性都比较不错

标签:同步,Cannal,耦合度,MQ,MYSQL,数据,ES
From: https://blog.csdn.net/qq_46603351/article/details/140751602

相关文章

  • 实战|Qt开发WordBN笔记软件#10 添加Font Awesome字体图标
    01背景【WordBN字远笔记】是天恩软件工作室开发的一款免费笔记软件;WordBN基于VS2019、Qt6.5开发,使用QtQuick(QML)开发语言。本课程将以【WordBN字远笔记】的界面为实战基础,详细介绍如何基于Qt/QML开发语言,从零开始开发一套真正的程序,包括国际化、版本发布、安装包制作等项目......
  • CF626G Raffles 题解
    Description有\(n\)个奖池,第\(i\)个奖池的奖金是\(p_i\),已经有\(l_i\)张彩票押在上面。现在你有\(t\)张彩票,你需要将你的彩票分配到这些奖池中,并且保证你在每个奖池中押的彩票数不能超过该奖池原有的彩票数。若你在第\(i\)个奖池中押了\(t_i\)张彩票,则你中奖的概......
  • CodeForces 1883G1 Dances (Easy version)
    题目链接:CodeForces1883G1【Dances(Easyversion)】思路    为了使得数组a,b中的每个对应元素满足a[i]<b[i],所以将数组a,b按从小到大依次排列,优先删除数组a中较大的元素和数组b中较小的元素,由于删去的元素个数具有单调性,所以使用二分优化,计算最少要删去几个元素。......
  • R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析|附代码数据
    全文链接:http://tecdat.cn/?p=22596最近我们被客户要求撰写关于预测心脏病的研究报告,包括一些图形和统计输出。本报告是对心脏研究的机器学习/数据科学调查分析。更具体地说,我们的目标是在心脏研究的数据集上建立一些预测模型,并建立探索性和建模方法。但什么是心脏研究?研究大纲......
  • abtest相关知识
    步骤:1.确认改动点(只能是单一因素)2.设计核心指标(点击率/转化率,一般分为直接值和比率值)3.计算实验所需最少样本流量(防止影响过大)基于大数定律(次数多了,频率就等于概率)和中心极限定律(抽样的均值和方差服从整体),前提是样本量足够大,这个足够大是多少,公式如下:(组间指的是预期组......
  • 实战:MyBatis适配多种数据库:MySQL、Oracle、PostGresql等
    概叙很多时候,一套代码要适配多种数据库,主流的三种库:MySQL、Oracle、PostGresql,刚好mybatis支持这种扩展,如下图所示,在一个“namespace”,判断唯一的标志是id+databaseId,刚好写了三个同样的方法,一个不带databaseId,两个带databaseId,此时当前库如果连接的是oracle则执行databaseId=......
  • 21、flask-进阶-类视图和RESTful-前后端分离概念
    前后端分离与不分离概念前后端不分离:如render_template('index.html',data=data)这种就是前后端不分离前端和后端一起渲染前后端分离:后端返回json数据-jsonify()前端使用ajax来请求数据:ajax各自处理各自的数据,代码不在一起http请求方式:GET:查询POST:添加数据......
  • CodeForces 1883F You Are So Beautiful
    题目链接:CodeForces1883F【YouAreSoBeautiful】思路    要找出一个子数组使得在数组中只能找出一个子序列和当前子数组相等,则只需要找出首元素的数字必须为当前元素值第一次出现,尾元素的数字必须为当前元素值最后一次出现,则只能找出唯一的子序列和当前子数组相等。......
  • Python - Plotly Express - x 轴 xticks
    我有一个代码,我想用标签作为月份和年份的名称绘制x轴。但目前它正在x轴上绘制所有时间戳,如-代码片段是:fig=px.scatter(data_frame,x=data_frame.timestamp,y=data_frame.err_codes_integer,hover_name=data_frame.col3,......
  • ES基础使用与理解
    各语言对接ES,可由客户端client调用内置的API方法,然后转换为JSON格式的DSL语句进行交互,通过http请求调用ES提供的restful风格的API接口。客户端库的工作流程:API调用:开发者使用客户端库提供的高级API方法,比如client.index()或者client.search()。转换为RESTful请求:客户端......