es与数据库的同步方案

es与数据库的同步方案一、双写模式我们采取MySQL作为主要的数据存储,利用MySQL的事务特性维护数据一致性,使用ElasticSearch进行数据汇集和查询,此时es与数据库的同步方案就尤为重要。保证es与数据库的同步方案:1、首先添加商品入数据库,添加商品成功后,商品入ES,若入ES失败,将失败的商品ID放入redis的缓存队列(或MQ),且失败的商品ID入log文件(若出现redis挂掉,可从日志中取异…

大家好,又见面了,我是你们的朋友全栈君。

一、双写模式

我们采取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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144755.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringCloud与Dubbo区别[通俗易懂]

    SpringCloud与Dubbo区别[通俗易懂]SpringCloud和Dubbo都是当下流行的RPC框架,各自都集成了服务发现和治理组件。SpringCloud用Eureka,Dubbo用Zookeeper,这篇博客就将将这两个组件在各自系统中的作用机制的区别。1.注册的服务的区别Dubbo是基于java接口及Hession2序列化的来实现传输的,Provider对外暴露接口,Consumer根据接口的规则调用。也就是Provider向Zookeeper注册的是接口信息,Consumer从Zookeeper发现的是接口的信息,通过接口的name

    2022年5月25日
    46
  • Mysql中explain用法和结果字段的含义介绍

    使用 explain 查询和分析SQl的执行记录,可以进行sql的性能优化!explain用法mysql> explain select * from students;+—-+————-+———-+——+—————+——+———+——+——+——-+| id …

    2022年2月27日
    38
  • ZOJ-1188「建议收藏」

    ZOJ-1188「建议收藏」也很水,直接统计权值然后排序即可

    2022年7月12日
    18
  • android怎样换背景图片,手机怎么抠图换背景 安卓和iPhone一键抠图换背景教程

    android怎样换背景图片,手机怎么抠图换背景 安卓和iPhone一键抠图换背景教程原标题:手机怎么抠图换背景安卓和iPhone一键抠图换背景教程转自:电脑百事网果粉俱乐部原创平时很多小伙伴都喜欢拍照嗮图,而很多时候如果想要照片更美,抠图换背景会起到立竿见影的效果。那么,手机怎么抠图换背景?不少小伙伴苦于不懂PS抠图技术,总在羡慕别人。但其实很多人手机上分享的抠图照片都是通过一些APP就能够实现的,小白也可以轻松上手,下面“电脑百事网”干货来啦,教你如何借助APP,在安卓和i…

    2022年5月25日
    48
  • 可重入锁和不可重入锁的区别

    可重入锁和不可重入锁的区别不可重入锁示例(同一个线程不可以重入上锁后的代码段)如下是一个不可重入锁的逻辑过程,会发现执行main方法控制台会打印执行doJob方法前,然后就会一直线程阻塞,不会打印执行doJob方法过程中,原因在于第一次上锁后,由于没有释放锁,因此执行第一次lock后isLocked=true,这个时候调用doJob()内部又一次调用了lock()由于上个线程将isLocked=true,导致再次进入的时候就进入死循环。导致线程无法执行System.out.println(“执行doJob方法过程中”);这

    2022年6月26日
    36
  • oracle可以更改表名,sql – 更改Oracle表名

    oracle可以更改表名,sql – 更改Oracle表名我正在尝试在oracle中更改表名.我首先运行此脚本来声明表CREATETABLECUSTOMER(C_IDNUMBER(6,0),C_LASTVARCHAR2(25),C_FIRSTvarchar2(25),C_MIchar(1),C_DOBDATE,C_ADDRESSvarchar2(100),C_CITYvarchar2(35),C_STATEchar(2),C_ZIP…

    2022年5月17日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号