一、双写模式
   
我们采取MySQL作为主要的数据存储,利用MySQL的事务特性维护数据一致性,使用ElasticSearch进行数据汇集和查询,此时es与数据库的同步方案就尤为重要。
    保证es与数据库的同步方案:
    
    1、首先添加商品入数据库,添加商品成功后,商品入ES,若入ES失败,将失败的商品ID放入redis的缓存队列(或MQ),且失败的商品ID入log文件(若出现redis挂掉,可从日志中取异常商品ID然后再入ES),
    
    task任务每秒刷新一下redis缓存队列,若是从缓存队列中取到商品ID,则根据商品ID从数据库中获取商品数据然后入ES。
    开发es与数据库同步小工具:
    
    1、全量导入
    
    2、根据ID批量导入
   
二、开源框架
    1、使用canal(阿里开源的中间件,主要用于同步mysql数据库变更):
    
     https://blog.csdn.net/wwd0501/article/details/83503374
    
   
    2、使用databus:
    
     https://www.jianshu.com/p/5dba22e3430a?utm_source=oschina-app
    
   
 
版权声明:本文为wwd0501原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
