Elasticsearch-基本操作2


Elasticsearch版本:6.0


    为了避免并发修改的冲突问题,数据库中,经常用悲观锁和乐观锁来控制并发问题,而Elasticsearch使用乐观锁。如果源数据在读写过程中被修改,更新将失败,应用程序可以决定进行重试更新、使用新数据、把情况报告给用户等操作。

Elasticsearch的乐观锁实现原理

Elasticsearch是分布式的,文档创建、更新、删除时,新文档必须复制到集群的其他节点;

Elasticsearch是异步并发的,上述复制请求可以被并行的发送,到达目的地后是无序的;

    为了保证Elasticsearch并发更新/删除时数据不会丢失,可以利用_version来实现乐观锁,就是说在修改文档时,指定文档的_version,如果该版本不是当前版本,请求将失败。

使用外部系统

使用其他数据库作为数据存储,而Elasticsearch做数据检索,数据库的变更都要复制到Elasticsearch,这个复制过程仍然会有并发问题,ES可以直接使用数据库的版本号,ES增加版本字段,用来和数据库的版本作比较,如果ES当前的版本号小于请求的版本号,则使用请求的版本号进行更新等操作。

使用全局锁、文档锁、数锁来解决并发问题

原文地址:https://www.cnblogs.com/bigshark/p/7906183.html