如何保障ES和数据库数据的一致性

数据库和es进行数据同步的方式有三种:

  1. 调用ElasticSearch的提供的Api (RestHighLevelClient封装好的es客户端对象)进行增删改(重点)

  2. 通过收集日志的方式进行同步,利用阿里开发binlog(binlog日志时mysql用来记录数据实时的变化)同步组件的canal,知道

  3. 通过中间件进行数据全量、增量的数据同步ElasticSearch-jdbc等,知道

ElasticSearch 如何保证数据一致性
es数据的一致性

Es数据的并发冲突控制是基于乐观锁和版本号的机制

  • 在更新时只有客户端所带的版本号是最新的(和es中的内部版本号一致)才允许更新,否则抛出异常

  • 假如没有带版本号,先让他读取最新版本号再更新尝试(尝试时类似于CAS操作的,不理解)

es数据的近实时性

es把索引都放到一个缓存层(查询快),默认每秒自动更新一次,所以说我们读取到的数据并不是最新的(近实时),要用es,就得接受这种问题(没有十全十美的方案)

 

posted @ 2021-09-20 22:31  进击的小蔡鸟  阅读(337)  评论(0编辑  收藏  举报