NipGeihou's blog NipGeihou's blog
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档

NipGeihou

我见青山多妩媚,料青山见我应如是
  • Java

    • 开发规范
    • 进阶笔记
    • 微服务
    • 快速开始
    • 设计模式
  • 其他

    • Golang
    • Python
    • Drat
  • Redis
  • MongoDB
  • 数据结构与算法
  • 计算机网络
  • 应用

    • Grafana
    • Prometheus
  • 容器与编排

    • KubeSphere
    • Kubernetes
    • Docker Compose
    • Docker
  • 组网

    • TailScale
    • WireGuard
  • 密码生成器
  • 英文单词生成器
🍳烹饪
🧑‍💻关于
  • 分类
  • 标签
  • 归档
  • 消息队列

  • 搜索引擎

    • ElasticSearch

      • 概述
      • 环境搭建
      • 操作 - Restful
      • 操作 - RestClinet(弃用)
      • 操作 - Spring Data
      • 示例 - 黑马旅游
      • 查询 - 数据聚合
      • ElasticSearch - 自动补全与自定义分词器
      • ElasticSearch - 数据同步
        • 思路分析
          • 同步调用
          • 异步通知
          • 监听binlog
        • 利用MQ实现MySQL与elasticsearch数据同步
          • 生产者微服务
          • 消费者微服务
      • ElasticSearch - 集群
  • 中间件
  • 搜索引擎
  • ElasticSearch
NipGeihou
2022-05-28
目录

ElasticSearch - 数据同步

elasticsearch 中的酒店数据来自于 mysql 数据库,因此 mysql 数据发生改变时,elasticsearch 也必须跟着改变,这个就是 elasticsearch 与 mysql 之间的数据同步。

# 思路分析

常见的数据同步方案有三种:

  • 同步调用
  • 异步通知
  • 监听 binlog

# 同步调用

image-20220528001712369

基本步骤如下:

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

优点: 实现简单,粗暴

缺点: 业务耦合度高

# 异步通知

image-20220528001842678

流程如下:

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

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

缺点: 依赖 mq 的可靠性

# 监听 binlog

image-20220528001937343

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

缺点: 开启 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
ElasticSearch - 自动补全与自定义分词器
ElasticSearch - 集群

← ElasticSearch - 自动补全与自定义分词器 ElasticSearch - 集群→

最近更新
01
Docker Swarm
04-18
02
安全隧道 - gost
04-17
03
Solana最佳实践
04-16
更多文章>
Theme by Vdoing | Copyright © 2018-2025 NipGeihou | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式