【该文章使用于从pimary shard和replica之间 备份的过程中 发生数据冲突的个人理解。如果发现理解有误,即使指正啊】
关于ES底层如何采用乐观锁进行并发控制的图解。涉及的场景是 如果shard中的数据被多次更改,由于es底层对shard和replica之间的数据同步都是采用的多线程异步的方式,可能对于在primary中后修改的线程 在shard和Replica之间进行同步时会提前到达Replica。那么这个时候进行版本比对后,会将filed=test3,version=2中的version进行比对,发现version=2大于等于副本中的version=1 所以就进行了修改。当后来来的 filed=test2 version=1<小于 Replica中的version=2 直接丢掉了那条数据,但是对于版本号还是会加1。即便是这中情况,数据最终也是对的。如果是先修改的先到了,那么同样也会进行修改,数据也是正确的。