15.concurrent-control并发控制
文章目录
- 1. 基于乐观锁的并发控制
1. 基于乐观锁的并发控制
Elasticsearch是分布式的。创建,更新或删除文档时,必须将文档的新版本复制到群集中的其他节点。 Elasticsearch也是异步和并发的,这意味着这些复制请求是并行发送的,并且可能不按顺序到达其目的地。 Elasticsearch需要一种方法来确保文档的old version永远不会覆盖 a newer version。
为确保文档的较旧版本不会覆盖较新的版本,对文档执行的每项操作均由主分片分配一个sequence number(序号),来协调更改。每次操作都会增加sequence number 序列号,因此可以确保较新的操作具有比较旧的操作更高的序列号。然后,Elasticsearch可以使用操作的序列号来确保分配给它的序列号较小的更改不会覆盖较新的文档版本。
For example, the following indexing command will create a document and assign it an initial sequence number and primary term:
举例,如下的index操作create一个doc并赋予一个初始的sequence number和primary term
PUT products/_doc/1567
{"product" : "r2d2","details" : "A resourceful astromech droid"
}{"_shards" : {"total" : 2,"failed" : 0,"successful" : 1},"_index" : "products","_type" : "_doc","_id" : "1567","_version" : 1,"_seq_no" : 362,"_primary_term" : 2,"result" : "created"
}
Elasticsearch会跟踪上次操作的sequence number序列号和primary term,。sequence number序列号和primary term会在GET API的响应中的_seq_no和_primary_term字段中返回:
GET products/_doc/1567returns:{"_index" : "products","_type" : "_doc","_id" : "1567","_version" : 1,"_seq_no" : 362,"_primary_term" : 2,"found": true,"_source" : {"product" : "r2d2","details" : "A resourceful astromech droid"}
}
但是search api中默认不会返回,你可以通过一些设置来让他返回。
Note: The Search API can return the _seq_no and _primary_term for each search hit by setting seq_no_primary_term parameter.
sequence number序列号和primary term唯一的标识了一次change。通过记下返回的序列号和主要术语,可以确保仅在从你的search 请求拿到对应的doc之后到你要对其做修改之前,没有任何人对该文档做过修改,在这种情况下你的修改才更改该文档。这可以通过设置Index API或Delete API的if_seq_no和if_primary_term参数来完成。
For example, the following indexing call will make sure to add a tag to the document without losing any potential change to the description or an addition of another tag by another API:
PUT products/_doc/1567?if_seq_no=362&if_primary_term=2
{"product" : "r2d2","details" : "A resourceful astromech droid","tags": ["droid"]
}
15.concurrent-control并发控制相关推荐
- 如何将一棵LSM-Tree塞进NVM
简介: 随着非易失内存产品的商业化推广,我们对于其在云原生数据库中大规模推广的潜力越来越有兴趣.X-Engine是阿里云数据库产品事业部PolarDB新型存储引擎团队研发的一个LSM-tree存储引擎 ...
- 计算机专业考研复试专业英语翻译必备词汇
提示:这些词汇是自己从408的四本专业课(data structure,operating system,computer composition principle,computer network ...
- MySQL的并发控制与加锁分析
2019独角兽企业重金招聘Python工程师标准>>> 本文主要是针对MySQL/InnoDB的并发控制和加锁技术做一个比较深入的剖析,并且对其中涉及到的重要的概念,如多版本并发控制 ...
- mysql 并发_MySQL的并发控制与加锁分析
本文主要是针对MySQL/InnoDB的并发控制和加锁技术做一个比较深入的剖析,并且对其中涉及到的重要的概念,如多版本并发控制(MVCC),脏读(dirty read),幻读(phantom read ...
- InnoDB解决幻读的方案--LBCCMVCC
最近要在公司内做一次技术分享,思来想去不知道该分享些什么,最后在朋友的提示下,准备分享一下MySQL的InnoDB引擎下的事务幻读问题与解决方案--LBCC&MVCC.经过好几天的熬夜通宵,终 ...
- hbase 客户端_HBase架构与原理详解
一.概述 HBase是基于列式存储的分布式数据库,底层存储采用的是LSM树,是Hadoop生态下核心技术之一. 1.1 架构图 1.2 组件介绍 HBase由三种类型的服务器以主从模式构成: Regi ...
- python术语中英对照栈图_Python常用技术栈总结
在python的基础上,加入了自己的理解,修改一些错误.最近准备去一线城市谋求发展,所以打算重新整理一下,顺便加深一下记忆. Table of Contents Python语言特性 1 Python ...
- 最全python面试题
Python语言特性 1 Python的函数参数传递 看两个例子: a = 1 def fun(a):a = 2 fun(a) print a # 1 a = [] def fun(a):a.appe ...
- 取代ZooKeeper!高并发下的分布式一致性开源组件StateSynchronizer
StateSynchronizer是开源分布式流存储平台Pravega的核心组件.StateSynchronizer组件以stream为基础,对外提供一致性状态共享服务.StateSynchroniz ...
- python基本知识、数据库、网络、编程等总结
Python语言特性 1 Python的函数参数传递 看两个例子: a = 1 def fun(a):a = 2 fun(a) print a # 1 a = [] def fun(a):a.appe ...
最新文章
- 系统吞吐量(TPS)、用户并发量、性能测试概念和公式(转载)
- afn原理 ios_iOS开发:AFN的基本使用
- 信息管理(Information Management)
- 遗传算法(GA)中的编码方式-二进制编码、格雷编码、实数编码
- Ubuntu16.04 安装谷歌浏览器并配置常用插件与扩展
- 开发中最基本的对数据的增删改查SQL
- html手机显示评论列表页面,请问如何完美显示评论列表头像
- 从谷歌浏览器复制不带样式_文字特效游戏海报特效字体photoshop字体图层样式
- Redis 笔记之 Java 操作 Redis(Jedis)
- java 工程路径_java 项目的路径详情
- Angular 2 组件之间如何通信
- Delphi2010Excel导入数据库
- 华硕aura完全卸载_AURA神光同步是什么意思?AURA SYNC神光同步教程
- Python之保留字
- 从几个简单例子聊聊Verilog的参数化设计(parameter、localparam和`define)
- vue 背景透明度_vue添加星空背景特效
- 在Unity中实现基于粒子的水模拟(二:开始着色)
- 调侃腾讯和360的小段子
- 老朋友,愿你在天堂一切安好
- 通过“单键锁配置法”实现访问控制