es - 版本控制
  4Sc2EobNVfno 2023年11月02日 56 0

用于搜索肯定存在并发的问题,当多个用户操作多个文档时,很容易出现数据不一致的问题.

  1. 原理:

- es采用了乐观锁来保证数据的一致性.

- 当用户对document进行操作(增删改)时,并不需要对该document作加锁和解锁的操作,只需要指定要操作的版本即可.

- 可以简单的理解为:用户每次操作这个文档,版本号都会+1,当出现并发情况时,这个用户到底能不能执行,就看当前用户的版本号是否跟文档的版本号一致.

- 当版本号一致时,es会允许该操作顺利执行,而当版本号存在冲突时,es会提示冲突并抛出异常(VersionConflictEngineException异常).


  1. 内部版本控制:

- 使用的是_version字段.

- es的版本号的取值范围为1到2^63-1.

(1). 内部版本不一致:

curl -XPUT "localhost:9200/lib/user/1?version=3&pretty" -H 'Content-Type: application/json' -d'{
    "name": "David",
    "age": 30,
    "interests": ["music", "driver"]
}'

注:

①. 查看到版本是3,手动添加version=5字段,表示版本不一致.

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  9J4CFPeHjrny   2023年12月24日   29   0   0 字段Java字段Java
4Sc2EobNVfno
作者其他文章 更多