ES是基于乐观锁进行并发控制的。
如果有并发的业务场景,可以直接使用ES内置乐观锁机制
使用的时候,java程序需要先Get指定的记录,获取到版本号,然后Put的时候,带着该版本号,请求更新。
ES只有判断到 该记录的 version = 请求中的version值 时,才能进行更新。如果不相等,则舍弃。
下面演示如何使用乐观锁:
1、 先创建一条记录,此时ES返回信息中会有标识: version=1
PUT  /test_index/test_type/1
{
"f1":"test f1"
}
2、带着version=1执行Put更新,能更新成功
PUT /test_index/test_type/1?version=1
{
"f1":"test Client 2"
}
3、另一个客户端也在同时做了Get查询,得到version=1,此时它带着version=1执行put时,会报错:version不一致。即使大于也不行
PUT /test_index/test_type/1?version=1
{
"f1":"test Client 3"
}
4、出现这种情况后,java程序应再次Get一次,得到新的版本号
GET  /test_index/test_type/1
5、 再发起一次请求,带着刚得到的版本号。此时能更新成功
PUT /test_index/test_type/1?version=2
{
"f1":"test Client 3"
}
-----------------------------------------------------External 锁------------------------------------------------------------------------------------------
1. 使用external锁的时候,ES判断,只要请求的version值 > 实际记录的version值,即可更新。等于的话,更新失败
PUT /test_index/test_type/2
{
"f1":"test f1"
}
PUT /test_index/test_type/2?version=2&version_type=external
{
"f1":"test f2"
}

转载于:https://www.cnblogs.com/cc299/p/11032799.html

3:基于乐观锁(两种)控制并发: version、external锁相关推荐

  1. 基于MATLAB/Simulink的Buck变换器仿真模型,包含开环控制和闭环控制两种控制

    Buck:基于MATLAB/Simulink的Buck变换器仿真模型,包含开环控制和闭环控制两种控制 仿真条件:MATLAB/Simulink R2015b, 拿前如需转成低版本格式请提前告知 ID: ...

  2. 西门子1200 总线控制V90伺服程序模板 两种控制模式 1.基于111报文自己编写的PN通讯控制V90伺服程序

    SIEMENS/西门子1200 总线控制V90伺服程序模板 两种控制模式 1.基于111报文自己编写的PN通讯控制V90伺服程序. 2.基于工艺对象轴程序PROFIdrive配置的PN通讯控制V90伺 ...

  3. Cuk:基于MATLAB Simulink的Cuk变换器仿真模型,包含开环控制和闭环控制两种控制

    Cuk:基于MATLAB Simulink的Cuk变换器仿真模型,包含开环控制和闭环控制两种控制. 仿真条件:MATLAB Simulink R2015b ID:3320651147398870

  4. 光伏储能并网发电模型,根据储能电池SOC的工作区间,光伏有MPPT、恒功率输出两种控制方式,在电池健康工况下光伏处于MPPT模式

    光伏储能并网发电模型,根据储能电池SOC的工作区间,光伏有MPPT.恒功率输出两种控制方式,在电池健康工况下光伏处于MPPT模式,在电池处于极限工况下,光伏处于恒功率模式,通过boost连接到公共点, ...

  5. 三菱 PLC张力控制通用程序模板 采用三菱伺服FX3U的速度与力矩模式,收料采 用锥度与恒张力两种控制模式

    #Mitsubishi/三菱 PLC张力控制通用程序模板 采用三菱伺服FX3U的速度与力矩模式,收料采 用锥度与恒张力两种控制模式. 程序包含 (1)锥度计算详细步骤 (2)模拟量输入输出 (3)张力 ...

  6. 基于仿真器的两种程序烧录模式:JTAG和SWD

    关于JTAG协议 JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试. 现在多数的高级器件都支持JT ...

  7. 基于mini2440的两种触屏中断程序(T35)

    稍微的整理一下,触摸屏的中断也就两种信号,INC_ADC和INC_TC,处理好这两个信号的发生关系,就能很轻易的对触摸进行操作. 1.其中的一种是2440test中自带的Touchpanel.c,但是 ...

  8. java 锁_Java之线程并发的各种锁、锁、锁

    因为两周没更新了... 也不是懒,这两周确实有些忙,赶项目进度赶的不亦乐乎... 终于赶在工期前,可以进入内测了,我也有了些时间,可以更新啦... 线程并发锁是很常见的问题,而且在Java中锁的类型. ...

  9. sql并发 锁 优化思路_并发优化–减少锁粒度

    sql并发 锁 优化思路 在高负载多线程应用程序中,性能非常重要. 开发人员必须意识到并发问题才能获得更好的性能. 当我们需要并发时,我们通常拥有必须由两个或更多线程共享的资源. 在这种情况下,我们处 ...

  10. java并发锁有哪些,Java并发编程-公平锁与非公平锁

    写这个文章的时候让我想起了让子弹飞的一个台词 公平,公平,还是tmd公平! 什么是公平和非公平 首先,我们来看下什么是公平锁和非公平锁. 公平锁指的是按照线程请求的顺序,来分配锁: 非公平锁指的是不完 ...

最新文章

  1. 边缘加速创新和AI应用,Xilinx推出Kria自适应系统模块产品组合
  2. #JS:this的指向及函数调用对this的影响
  3. 关于幂等性的解决方案
  4. Spring Cloud【Finchley】- 20使用@RefreshScope实现配置的刷新
  5. boost::iterator_adaptor用法的测试程序
  6. 第一个PowerShell脚本——PowerShell三分钟(九)
  7. angular的html引入js,在AngularJS中的文件夹中加载JavaScript和CSS文件
  8. 红外解码软件 android,一文教会你红外线遥控器软件解码程序
  9. Visual Studio Code 构建C/C++开发环境
  10. BZOJ1934: [Shoi2007]Vote 善意的投票
  11. 委托的Invoke与BeginInvoke
  12. 世界所有国家国际域名英文缩写总结(转)
  13. LM358运放(比较器、跟随器)输出最高电压问题的探讨
  14. [百晓生]-鼠标右键新建添加RTF文档
  15. 统计学——单因素方差分析
  16. Windows11如何使用安卓子系统的Amazon Appstore
  17. 计算机二级答题技巧口诀,计算机二级考试答题技巧(祝逢考必过)
  18. 【转载】通过搜狗站长平台查看网站的搜狗流量及搜索关键字
  19. MinMax极小极大算法 (The Minimax Algorithm)
  20. 论文阅读《Knowledge Graph Refinement: A Survey of Approaches and Evaluation Methods》

热门文章

  1. Struts2标签库(四)之非表单标签
  2. [渝粤教育] 天水师范学院 离散数学 参考 资料
  3. 【渝粤教育】国家开放大学2018年春季 0603-22T建筑工程管理与实务 参考试题
  4. Debugview调试视图
  5. BZOJ3527 推出卷积公式FFT求值
  6. C#知识点:操作XML
  7. 【探路者】10月16日立会报告(团队第1周-第3次)
  8. bzoj1036 [ZJOI2008]树的统计Count 树链剖分模板题
  9. 谈谈c++纯虚函数的意义!
  10. bug篇——mysql排序混乱问题