【java面经速记】Mysql和ES数据同步

目录

Mysql业务数据库

ES查询数据库

数据同步方案

同步双写

异步双写(MQ方式)

基于Mysql的定时扫描同步

基于Binlog实时同步

使用canal监听binlog同步数据到es(流行方案)

拓展:mysql的主从复制原理

canal原理:

数据迁移同步工具

Mysql业务数据库

核心特点:开源免费、高并发、稳定、支持事务、支持SQL查询

高并发:链接轻量化(线程模式),优化器、执行器、事务引擎相对简单粗暴,存储引擎做得比较细致

一般用作上游数据源

ES查询数据库

核心特点:支持分词检索,多维筛选性能好,支持海量数据查询

文本搜索:基于倒排索引实现的搜索系统,文本模糊匹配搜索表现较好

多维筛选:亿级规模数据使用宽表预构建(消除join),配合全字段索引,是的ES在多维筛选上具有压倒性优势

数据同步方案

同步双写

最简单的方式,将数据写到mysql时,同时写到es中

优点:逻辑简单,实时性高

缺点:

  • 有mysql的地方都需要添加es的代码
  • 业务强耦合
  • 存在双写失败丢失数据的风险(ES系统不可用,程序和ES之间的网络故障,系统重启来不及写入ES)
  • mysql性能本身低,加个es,--
异步双写(MQ方式)

适用于多数据源写入的场景,各个源之间写入逻辑互不干扰

优点:

  • 性能高(相比同步双写)
  • 不易出现数据丢失:MQ消息的保障机制,当ES宕机或写入失败,还能重新雄安飞MQ消息
  • 隔离:多数据源之间相互隔离,能写入更多

缺点:

  • 不适合实时业务场景,有延时(异步消费模型,写入的数据不一定能马上看到)
  • 硬编码:接入新数据源需要编写新的代码
  • 复杂度增加:引入了消息中间件
基于Mysql的定时扫描同步

解决了上面2种的硬编码问题(不用ES或者MQ代码)

实时性要求不高:定时器处理

  • 数据库:m字段,任何curd操作都会导致该时间发生变化
  • 原来程序的CURD操作不做任何变化
  • 定时器程序,一定时间周期扫描指定表,该时间段内变化的数据提取出来
  • 逐条写入到ES中

典型实现:

基于logstash实现数据同步,原理:定期使用sql查询新增的数据写入ES中,实现数据的增量同步。

优点:上面的+worker代码编写简单不需要考虑增删查改

缺点:

  • 时效性差,固定频率刷新,就算秒级也是延时
  • 对数据库有轮询压力,可以放到从库中
基于Binlog实时同步

解决上面的硬编码+代码侵入+延迟问题

binlog:binary log

步骤:

  • 读取mysql的binlog日志,获取指定表的日志信息
  • 将读取信息转为MQ
  • 编写一个MQ消费程序
  • 不断更新MQ,每消费一条消息,写入到ES中

优点:

  • 解决上面3个问题
  • 性能高
  • 业务解耦

缺点:

构建Binlog系统复杂

如果采用MQ消费解析的binlog消息,一样存在MQ延时的风险。

使用canal监听binlog同步数据到es(流行方案)

canal : 根据mysql的binlog日志进行增量同步数据

拓展:mysql的主从复制原理
  • 所有create update delete操作都会进入mysql master节点
  • master节点会生成Binlog文件,每次操作Mysql都会记录到Binlog文件中
  • slave节点会订阅master节点的binlog文件,以增量备份的形式同步数据到slave数据
canal原理:

伪装成mysql的从节点,订阅master节点的binlog日志:

  • canal服务端向mysql的master节点传输dump协议
  • mysql的master节点接受到dump请求后推送binog日志给canal服务端,解析binlog对象(原始weibyte流)转成Json格式
  • canal客户端通过TCP协议或者MQ形式监听canal服务端,同步数据到ES

数据迁移同步工具

参考:【技术选型】Mysql和ES数据同步方案汇总-腾讯云开发者社区-腾讯云 (tencent.com)

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

通信工程学习:什么是NFVI网络功能虚拟化基础设施层

NFVI:网络功能虚拟化基础设施层 NFVI(Network Functions Virtualization Infrastructure)即网络功能虚拟化基础设施层,是NFV(Network Functions Virtualization,网络功能虚拟化)架构中的一个重要…

PS相关操作记录

1. 磨皮步骤 1.1. 图层操作 先对照片进行去瑕疵、液化等操作,操作完的图层,重命名为液化,方便识别。复制两个图层,分别改为“低频”、“高频”,低频在下,高频在上。选中“低频”图层,滤镜 -&g…

midjourney 网页版收费页面

网页版体验了一个月,感觉确实方便很多 midjourney 网页版地址https://www.midjourney.com/archive 主要是左下角进行相关设置 付费以后,记得在edit里面取消续费,取消后如图所示,我这个月用完,这个时间是即时的&…

嵌入式C语言自我修养:GNU C编译器扩展语法精讲

在Linux内核的源码中,你会发现许多这样的“奇特”代码。它们看起来可能有点陌生,但它们实际上是C语言的一种扩展形式,这种扩展在C语言的标准教材中往往不会提及。这就是为什么你在阅读Linux驱动代码或内核源码时,可能会感到既熟悉…

java sdk下载,解决下载了java但是编译不了

直接搜Java得到的网站使用不了的 应该只是个功能包或者版本太低用不了 得去oracle公司搜java这个产品去下载

MySQL中去除重复

除去相同的行 SELECT DISTINCT 列名 FROM 表名; 示例:查询employees表,显示唯一的部门ID select distinct department_id from employees;

心理教育辅导系统:Spring Boot技术实现

4 系统设计 4.1系统概要设计 高校心理教育辅导系统主要分为管理员、教师和学生三个角色,系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任…

论文阅读:Omni-Kernel Network for Image Restoration

论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/27907 项目地址:https://github.com/c-yn/OKNet 发表时间:2024 图像恢复的目的是从一个退化的低质量的观测中重建一个高质量的图像。最近,Transformer模型由于其强大…

本地快速部署一个简洁美观的个人Halo博客网站并发布公网远程访问

文章目录 前言1. Docker部署Halo1.1 检查Docker版本如果未安装Docker可参考已安装Docker步骤:1.2 在Docker中部署Halo 2. Linux安装Cpolar2.1 打开服务器防火墙2.2 安装cpolar内网穿透 3. 配置Halo个人博客公网地址4. 固定Halo公网地址 前言 本文主要介绍如何在Cen…

[系列]参数估计与贝叶斯推断

系列 点估计极大似然估计贝叶斯估计(统计学)——最小均方估计和最大后验概率估计贝叶斯估计(模式识别)线性最小均方估计最小二乘估计极大似然估计&贝叶斯估计极大似然估计&最大后验概率估计线性最小均方估计&最小二乘…

【鸿蒙开发 day13】

ArkTs-核心-基础 一.处理数据1.字符串的拼接2.模板字符串 二.类型转换(1)字符串转数字(2)数字转字符串(3)布尔值转换情况 三.交互点击事件四.状态管理五.隐藏图片案例六.运算符1.算数运算符2.赋值运算符3.一元运算符4.比较运算符5.逻辑运算符6.运算符优先级 七.美团点餐案例八.…

游戏开发团队并非蚂蚁协作(3):开发过程中的“尾气”

“尾气”指的什么? 就像汽车虽然行驶到达目的,但是却会在路途中留下尾气污染环境。开发过程中有时虽然完成了需求,但是也留下了“尾气”,或者说“技术债”、“遗留问题”。 “尾气”并不是看不到或者难以被解决,而是…

【Linux】常用指令详解一(ls,-a,-l,-d,cd,pwd,mkdir,touch,rm,clear)

1.前言 读了一些Linux常用指令的博文,很可惜没读到一点点手把手教怎么操作的博文,所以写一篇手把手教适合初学者的Linux常用指令博文 Linux的命令是树状结构 输入这一句命令:yum install -y tree 即可以查看Linux树状目录结构 查看示例&am…

2024年中国研究生数学建模竞赛C题“数据驱动下磁性元件的磁芯损耗建模”全析全解

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 总领这个题,是属于数据挖掘和数据优化类型的题目&#xff…

Linux系统与服务构建运维

使用ext4文件系统格式化逻辑卷mylv。命令如下: 一、Linux操作系统安装 1.学习目标 (1)了解服务器操作系统安装。 (2)了解CentOS系统的安装。 2.节点规划 IP 主机名 节点 192.168.200.10 localhost Linux服务器…

HOSTS文件劫持--导致笔记本网络卡顿

写在前面: 因为笔记本网速卡顿,去维修店维修网卡,网卡咱们测试都没有问题,一直吐槽售后服务一般。自己也装过几次系统了 点击任务栏中的搜索图标,输入"cmd",点击"命令提示符"选择&qu…

Vivado的.v文件被误分类到Non-module Files中[filemgmt 20-2001] Source scanning failed

报错 所有新创建的Design Sources被分类到Non-module Files中 两条报错 1、[filemgmt 20-2001] Source scanning failed (launch error) while processing fileset “sources_1” due to unrecoverable syntax error or design hierarchy issues. Recovering last known analys…

STM32(十七):I2C通信外设

I2C外设 STM32内部集成了硬件I2C收发电路(USART是串口通信的硬件收发电路),可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担。 支持多主机模型(可变多主机&#xff…

python基础(二) 包和import

包的创建 文件创建命令 在 Django 中,python manage.py startapp first_app 这一行命令的作用是创建一个新的应用(app),名为 first_app。在 Django 项目中,"app" 是实现某些功能模块的单独部分&#xff0c…

詹妮弗洛佩兹25年发9张专辑3张是关于阿弗莱克的,爱恨情仇之深可见一斑!新专辑已定时间表!

詹妮弗洛佩兹25年共发9张专辑,有3张是关于本阿弗莱克的 内部人爆詹妮弗洛佩兹已定制作与本阿弗莱克的“心碎”专辑时间表 虽然詹妮弗洛佩兹最近的专辑《This Is Me…Now》以失败告终,但她可能已经准备好重返音乐工作室。但这一次,她将推出一…