ElasticSearch 并发的处理方式:锁和版本控制_07

文章目录

            • 现象
            • 版本控制
            • 最新方案

现象

当我们使用 es 的 API 去进行文档更新时,它首先读取原文档出来,然后对原文档进行更新,更新完成后再重新索引整个文档。不论你执行多少次更新,最终保存在 es 中的是最后一次更新的文档。但是如果有两个线程同时去更新,就有可能出问题。

要解决问题,就是锁。

  • 悲观锁

很悲观,每一次去读取数据的时候,都认为别人可能会修改数据,所以屏蔽一切可能破坏数据完整性的操作。关系型数据库中,悲观锁使用较多,例如行锁、表锁等等。

  • 乐观锁

很乐观,每次读取数据时,都认为别人不会修改数据,因此也不锁定数据,只有在提交数据时,才会检查数据完整性。这种方式可以省去锁的开销,进而提高吞吐量。

在 es 中,实际上使用的就是乐观锁。

版本控制

es6.7之前

在 es6.7 之前,使用 version+version_type 来进行乐观并发控制。根据前面的介绍,文档每被修改一个,version 就会自增一次,es 通过 version 字段来确保所有的操作都有序进行。

version 分为内部版本控制和外部版本控制。

  • 内部版本
    es 自己维护的就是内部版本,当创建一个文档时,es 会给文档的版本赋值为 1。

每当用户修改一次文档,版本号就回自增 1。

如果使用内部版本,es 要求 version 参数的值必须和 es 文档中 version 的值相当,才能操作成功。

  • 外部版本
    也可以维护外部版本。

在添加文档时,就指定版本号:

PUT blog/_doc/1?version=200&version_type=external
{"title":"2222"
}

以后更新的时候,版本要大于已有的版本号。

vertion_type=external 或者 vertion_type=external_gt 表示以后更新的时候,版本要大于已有的版本号。
vertion_type=external_gte 表示以后更新的时候,版本要大于等于已有的版本号。

最新方案

(Es6.7 之后)
现在使用 if_seq_no 和 if_primary_term 两个参数来做并发控制。

seq_no 不属于某一个文档,它是属于整个索引的(version 则是属于某一个文档的,每个文档的 version 互不影响)。现在更新文档时,使用 seq_no 来做并发。由于 seq_no 是属于整个 index 的,所以任何文档的修改或者新增,seq_no 都会自增。

现在就可以通过 seq_no 和 primary_term 来做乐观并发控制。

PUT blog/_doc/2?if_seq_no=5&if_primary_term=1
{"title":"6666"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript从入门到放弃 -(六)正则表达式

正则表达式 1. 正则表达式概述1.1 什么是正则表达式1.2 正则表达式的特点2. 正则表达式在JavaScript中的使用2.1 创建正则表达式2.1.1 通过调用 RegExp 对象的构造函数创建2.1.2 通过字面量创建2.2 test测试正则表达式3. 正则表达式中的特殊字符3.1 正则表达式的组成3.2 边界符…

冠状病毒过后世界九大未来预测

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 随着COVID-19的泛滥在全球范围内蔓延,这迫使人类进行创新并改变我们的工作和生活方式。我们现在发现自己的优势在…

疫情宅家促生“囤货经济”,北美零售业极限应考

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 疫情之下,美国零售业同样遭遇冰火两重天的困境。 危机产生和意识到危机产生是两件事情。就在美国对着中国的疫情…

还不懂Redis?看完这个故事就明白了!

来源 | 编程技术宇宙责编 | Jerry我是Redis你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。说起我的诞生,跟关系数据库MySQL还挺有渊源的。在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来…

ElasticSearch 倒排索引_08

倒排索引:是 es 中非常重要的索引结构,是从文档词项到文档 ID 的一个映射过程。 “正排索引” 我们在关系型数据库中见到的索引,就是“正排索引”。 关系型数据库中的索引如下,假设我有一个博客表: id作者标题内容1…

2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 现在,是时候谈一谈 2020 年及以后的软件工程状况了。本文以 GitHub Octoverse 数据为基础,加上我作为…

JavaScript从入门到放弃 -(七)ES6

目录 1. ES6相关概念1.1 什么是 ES6 ?1.2 为什么使用 ES6 ?2 ES6新增语法2.1 新增关键字2.1.1 let 关键字小结2.1.2 const 关键字小结2.1.3 let、const、var 的区别2.2 解构赋值2.2.1 数组解构2.2.2 对象解构小结2.3 箭头函数2.3.1 语法规范2.3.2 箭头函数的调用2.3.3 this关…

ElasticSearch 动态映射与静态映射_08

映射就是 Mapping,它用来定义一个文档以及文档所包含的字段该如何被存储和索引。所以,它其实有点类似于关系型数据库中表的定义。 映射分类 动态映射 顾名思义,就是自动创建出来的映射。es 根据存入的文档,自动分析出来文档中字…

解密阿里云大规模深度学习性能优化实践

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 作者 | 阿里云异构计算AI加速负责人 游亮 近日,斯坦福大学公布了最新的 DAWNBench 深度学习榜单,这是…

深夜,我偷听到程序员要对session下手......

来源 | 编程技术宇宙责编 | Jerry我是一个web服务器我是一个web服务器,我的工作是给人类提供上网服务,我每天要为数以万计的人提供网页浏览服务。已经是深夜了,我还在和手下几个兄弟为了一件事紧张讨论着。“老大,现在咱们每天处理…

太平鸟上云 推动中国服饰行业新零售转型

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 在消费增速下滑的大环境下,转型焦虑几乎已经弥漫了整个服饰行业,…

前端知识点随记

(前端笔记补充,备忘录使用。) 1. HTML/CSS/H5C3 知识点1.1 鼠标样式|十字|1.2 css 半透明样式1.3 CSS3 transform 属性1.3.1 旋转1.3.2 缩放1.4 特殊写法 \91.5 解决video标签在谷歌不能自动播放1.6 \ 标签- 提示文字1.7 placeholder-自定义占位文本1.8 去除 input 默认边框…

Typora 常用技巧

文章目录1. 引用样式2. 插入表格3. 图片设置1. 引用样式 输入>按tab键 流程 默认样式: blockquote {border-left: 4px solid #dfe2e5;padding: 0 15px;color: #777777; }修改后样式 blockquote {border-left: 4px solid #62ca38!important;background:#f…

海升集团数据上云 走出智能农业的新路子

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 尽管最近水果的价格持续上涨,但水果消费的需求和市场始终在快速提升。墨西哥…

干货!一文看Doris在作业帮实时数仓中的应用实践

数据驱动未来。在大数据生态中,数据分析系统在数据创造价值过程中起着非常关键的作用,直接影响业务决策效率以及决策质量。Apache Doris作为一款支持对海量大数据进行快速分析的MPP数据库,在数据分析领域有着简单易用、高性能等优点。9月20日…

拿下 Gartner 容器产品第一,阿里云打赢云原生关键一战

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 近日,Gartner 发布 2020 年公共云容器报告,据报告显示,阿里云和 AWS 拥有最丰富的产品布局…

vscode中 解决格式化后将单引号变双引号

场景:开发时,明明写的是双引号,可格式化后就所有变双引号了…javascript 解决方案: 进入用户设置,在setting.json中添加以下: "prettier.semi": true,"prettier.singleQuote": true,// 是否在末尾添加分号 "pretti…

训练机器人看脸读“心”,真的靠谱吗?

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 虽然人工智能公司极力推广人脸情绪识别软件,但是心理学家却在质疑情绪识别只是说起来容易。 数百张人脸在屏幕上…

原生JavaScript轮播图效果实现

原生JavaScript实现轮播图切换效果的实现过程 本文所用代码仅供个人学习。此部分代码系按原腾讯电脑管家首页的轮播图效果,采用原生JS技术予以实现(原网页采用jQurey等技术)。1. 文件准备1.1 新建文件夹1.2 HTML结构1.3 CSS样式1.4 JavaScript外部文件准备1.4.1 新建js文件2…

核弹级漏洞 Apache Log4j2 漏洞详情和修复建议

文章目录一、. 普通web项目1. 下载依赖2. 解压3.更新操作4.移除旧依赖5. 更新包二. maven项目修复2.1. maven 项目2.2. 微服务项目一、. 普通web项目 下载官网:https://logging.apache.org/log4j/2.x/download.html 1. 下载依赖 wget https://dlcdn.apache.org/l…