详解实现黑马旅游网的ES和Mysql数据同步

文章讨论了如何通过同步调用和RabbitMQ消息队列实现Elasticsearch与MySQL之间的数据同步,分析了两种方案的优缺点,重点介绍了利用RabbitMQ进行解耦的详细步骤和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、需求分析

我们知道es中的数据来自于mysql数据库,因此mysql数据发生改变时,es也必须跟着改变,否则会导致数据不一致问题,这个就是elasticsearch与mysql之间的数据同步

如何实现数据同步:

方案一:同步调用

缺点:

得按顺序实行图中的三步,依次执行,容易引起数据耦合;

原来只是hotel-admin的业务只是写数据库写完就结束,现在还得在写数据库代码的后面加上调用hotel-demo的代码,hotel-admin和hotel-demo下的两个业务发生业务耦合;

影响性能,而且一个业务出错整个流程都会收到影响。

方案二:

利用消息队列MQ实现 hotel-admin和hotel-demo的业务解耦,但是会依赖MQ的可靠性,而且复杂度会相应的上升一点。

在hotel-admin和hotel-demo中都得声明交换机和监听队列:

public class MqConstants {
    /**
     * 声明交换机名称
     */
    public final static String HOTEL_EXCHA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值