如何保障ES和数据库数据的一致性
数据库和es进行数据同步的方式有三种:
调用ElasticSearch的提供的Api (
通过收集日志的方式进行同步,利用阿里开发binlog(binlog日志时mysql用来记录数据实时的变化)同步组件的canal,知道
通过中间件进行数据全量、增量的数据同步ElasticSearch-jdbc等,知道
ElasticSearch 如何保证数据一致性
es数据的一致性
Es数据的并发冲突控制是基于乐观锁和版本号的机制
在更新时只有客户端所带的版本号是最新的(和es中的内部版本号一致)才允许更新,否则抛出异常
假如没有带版本号,先让他读取最新版本号再更新尝试(尝试时类似于CAS操作的,不理解)
es数据的近实时性
es把索引都放到一个缓存层(查询快),默认每秒自动更新一次,所以说我们读取到的数据并不是最新的(近实时),要用es,就得接受这种问题(没有十全十美的方案)