今天给大家介绍一个电商中常见的场景 —— MySQL 数据同步 Elasticsearch。

商品检索
大家应该都在各种电商网站检索过商品,检索商品一般都是通过什么实现呢?搜索引擎Elasticsearch。
那么问题来了,商品上架,数据一般写入到MySQL的数据库中,那么用于检索的数据又是怎么同步到Elasticsearch的呢?

MySQL同步ES
1.同步双写
这是能想到的最直接的方式,在写入MySQL,直接也同步往ES里写一份数据。

同步双写
对于这种方式:
-
优点:实现简单
-
缺点:
-
业务耦合,商品的管理中耦合大量数据同步代码
-
影响性能,写入两个存储,响应时间变长
-
不便扩展:搜索可能有一些个性化需求,需要对数据进行聚合,这种方式不便实现
-
2.异步双写
我们也很容易想到异步双写的办法,上架商品的时候,先把商品数据丢进MQ,为了解耦合,我们一般会拆分一个搜索服务,由搜索服务去订阅商品变动的消息,来完成同步。<

本文探讨了四种MySQL数据同步到Elasticsearch的方法:同步双写、异步双写、定时任务和数据订阅。异步双写通过MQ解耦合,实时性好但增加复杂度;定时任务实现简单但实时性不佳;数据订阅利用canal等工具实现零代码同步,但可能需要定制化处理。
最低0.47元/天 解锁文章
569

被折叠的 条评论
为什么被折叠?



