分布式环境下的数据同步

一般而言elasticsearch负责搜索(查询),而sql数据负责记录(增删改),elasticsearch中的数据来自于sql数据库,因此sql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步

常见的数据同步的方法

同步调用

基本步骤如下:

  • hotel-demo对外提供接口,用来修改elasticsearch中的数据
  • 酒店管理服务在完成数据库操作后,直接调用hotel-demo提供的接口,

3.1.2.异步通知

流程如下:

  • hotel-admin对mysql数据库数据完成增、删、改后,发送MQ消息
  • hotel-demo监听MQ,接收到消息后完成elasticsearch数据修改

监听binlog

流程如下:

  • 给mysql开启binlog功能
  • mysql完成增、删、改操作都会记录在binlog中
  • hotel-demo基于canal监听binlog变化,实时更新elasticsearch中的内容

优缺点

方式一:同步调用

优点:实现简单,粗暴

缺点:业务耦合度高

方式二:异步通知

优点:低耦合,实现难度一般

缺点:依赖mq的可靠性

方式三:监听binlog

优点:完全解除服务间耦合

缺点:开启binlog增加数据库负担、实现复杂度高

相关推荐
鱼跃鹰飞2 小时前
面试题:Kafka的零拷贝的底层实现是什么?是MMAP还是sendFile还是其他的?
分布式·kafka·系统架构
工业甲酰苯胺2 小时前
【面试题】RabbitMQ 中无法路由的消息会去到哪里?
分布式·rabbitmq
weixin_457297103 小时前
Hadoop面试题
大数据·hadoop·分布式
何亚告3 小时前
记一次项目上hadoop数据迁移
大数据·hadoop·分布式
少云清3 小时前
【性能测试】13_JMeter _JMeter分布式
分布式·jmeter·性能测试
Codeking__3 小时前
Redis分布式——分布式锁
数据库·redis·分布式
optimistic_chen4 小时前
【Redis系列】哨兵模式
linux·数据库·redis·分布式·哨兵
码农水水13 小时前
国家电网Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·网络·分布式·面试·wpf
码农水水16 小时前
京东Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·分布式·http·面试·php·wpf
Francek Chen18 小时前
【大数据基础】大数据处理架构Hadoop:01 Hadoop概述
大数据·hadoop·分布式·架构