【微服务】mysql + elasticsearch数据双写设计与实现

本文介绍了在微服务背景下,为何采用MySQL+Elasticsearch双写策略,分析了单用MySQL的问题和直接使用Elasticsearch的局限。文章详细探讨了双写方案设计要点,包括全新设计与中途调整架构的考量、全表映射与关键字段存储的选择以及数据一致性保障的方法。此外,还阐述了数据迁移的整体方案和实施步骤,帮助读者理解如何在实际项目中落地实施MySQL+Elasticsearch的双写方案。

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

目录

一、前言

二、为什么使用mysql+es双写

2.1 单用mysql的问题

2.2 为什么不直接使用es

2.2.1 非关系型表达

2.2.2 不支持事务

2.2.3 多字段将造成性能低下

三、mysql+es双写方案设计要点

3.1 全新设计 VS 中途调整架构

3.2 全表映射 VS 关键字段存储

3.2.1 最大程度发挥es性能

3.2.2 选择mysql还是es作为数据托底

3.3 数据一致性保障

3.3.1 同步双写

3.3.2 异步双写

3.3.3 定期同步

3.3.4 数据订阅

四、mysql+es双写方案数据迁移

4.1 数据迁移整体方案

4.1.1 创建索引

4.1.2 双写改造

4.1.3 数据迁移

4.1.4 搜索服务上线

4.2 数据迁移补充说明

五、方案实施

5.1 前置准备

5.1.1 搭建环境

5.1.2 创建数据表

5.1.3 插入初始化数据

5.1.4 创建一个索引

5.2 搭建springboot工程

5.2.1 引入基础依赖

5.2.2 核心配置文件

5.2.3 es客户端连接配置

5.2.3 mybatis文件

5.2.4 业务实现类

5.2.4 相关测试

5.3 双写业务实现

5.4 数据搜索

5.5 数据迁移

六、写在文末


一、前言

在很多电商网站中,对商品的搜索要求很高,主要体现在页面快速响应搜索结果。这就对服务端接口响应速度提出了很高的要求。而商品数据存储离不开mysql,在高并发场景下,尤其是数据规模达到一定量级,mysql的性能瓶颈一定会出现,为了满足极致的搜索速度,往往需要借助第三方存储,比如nosql数据库,当然主流的搭配还是使用搜索引擎来完成,于是在很多场景下,会选择mysql+elasticsearch来满足这个场景下对搜索的要求。

如下是一个典型的使用mysql+es实现数据双写的应用场景。

评论 189
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小码农叔叔

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值