ElasticSearch - 数据同步
elasticsearch 中的酒店数据来自于 mysql 数据库,因此 mysql 数据发生改变时,elasticsearch 也必须跟着改变,这个就是 elasticsearch 与 mysql 之间的数据同步。
# 思路分析
常见的数据同步方案有三种:
- 同步调用
- 异步通知
- 监听 binlog
# 同步调用
基本步骤如下:
- hotel-demo 对外提供接口,用来修改 elasticsearch 中的数据
- 酒店管理服务在完成数据库操作后,直接调用 hotel-demo 提供的接口,
优点: 实现简单,粗暴
缺点: 业务耦合度高
# 异步通知
流程如下:
- hotel-admin 对 mysql 数据库数据完成增、删、改后,发送 MQ 消息
- hotel-demo 监听 MQ,接收到消息后完成 elasticsearch 数据修改
优点: 低耦合,实现难度一般
缺点: 依赖 mq 的可靠性
# 监听 binlog
优点: 完全解除服务间耦合
缺点: 开启 binlog 增加数据库负担、实现复杂度高
# 利用 MQ 实现 MySQL 与 elasticsearch 数据同步
利用课前资料提供的 hotel-admin 项目作为酒店管理的微服务。当酒店数据发生增、删、改时,要求对 elasticsearch 中数据也要完成相同操作。
步骤:
导入课前资料提供的 hotel-admin 项目,启动并测试酒店数据的 CRUD
声明 exchange、queue、RoutingKey
在 hotel-admin 中的增、删、改业务中完成消息发送
在 hotel-demo 中完成消息监听,并更新 elasticsearch 中数据
启动并测试数据同步功能
# 生产者微服务
https://github.com/NipGeihou/hotel-admin
# 消费者微服务
https://github.com/NipGeihou/hotel-demo
上次更新: 2024/03/11, 22:37:05