您现在的位置是:首页 >其他 >ElasticSearch第十五讲 ES数据写入过程和写入原理以及数据如何保证一致性网站首页其他

ElasticSearch第十五讲 ES数据写入过程和写入原理以及数据如何保证一致性

追梦鹿少年 2023-06-04 00:00:03
简介ElasticSearch第十五讲 ES数据写入过程和写入原理以及数据如何保证一致性

Es的数据并发冲突

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

一个document第一次创建的时候,它的_version内部版本号就是1;以后,每次对这个document执行修改或者删除操作,都会对这个_version版本号自动加1;哪怕是删除,也会对这条数据的版本号加1(假删除)。

  • 对于更新操作
    客户端对es数据做更新的时候,如果带上了版本号,那带的版本号与es中文档的版本号一致才能修改成功,否则抛出异常。如果客户端没有带上版本号,首先会读取最新版本号才做更新尝试,这个尝试类似于CAS操作,可能需要尝试很多次才能成功。乐观锁的好处是不需要互斥锁的参与。
    es节点更新之后会向副本节点同步更新数据(同步写入),直到所有副本都更新了才返回成功。

  • 对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,分片将会在一个不同的节点上重建。
    one:要求我们这个写操作,只要有一个primary shard是active活跃可用的,就可以执行
    all:要求我们这个写操作,必须所有的primary shard和replica shard都是活跃的,才可以执行这个写操作
    quorum:默认的值,要求所有的shard中,必须是大部分的shard都是活跃的,可用的,才可以执行这个写操作

  • 对于读操作,可以设置 replication 为 sync(默认),这使得操作

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。