MySQL同步数据ES
大约 2 分钟
MySQL同步数据ES
- 同步双写
- 异步双写
- 定时任务
- 数据订阅
同步双写
优点
简单
仅需要在需要同步数据的逻辑上增加往ElasticSearch写
保证实时性
缺点
商品业务和搜索业务强耦合
扩展性差
需要定制搜索需求需求时, 还需要改动商品代码
ElasticSearch 和 MySQL 需要额外保证一致性
MySQL事务提交之后, 写入ElasticSearch出现网络异常, 那么ElasticSearch和MySQL的数据无法保证一致
异步双写
与同步双写相比分析优缺点
优点
- 解耦合; 商品本身无需关注同步ElasticSearch的逻辑
缺点
- 准实时, 存在MQ延迟
- 需要考虑额外组件的可靠性, Kafka, 搜索服务
定时任务
优点
- 简单
缺点
无法保证实时性
保证实时性主要依赖于搜索服务的定时间隔
数据订阅
优点
解耦合
利用canal订阅MySQL的binlog做到解耦合
无业务侵入
利用canal组件即可无需在商品代码上做改动
准实时
只存在binlog和业务回查的延迟
良好的扩展行
canal组件还支持各种数据库/客户端的写入适配器, 可以实现不同的数据写入需求, 例如 HBase