ElasticSearch之并发操作处理

写在前面

在这里插入图片描述

并发控制,一般有两种方案,悲观锁和乐观锁,其中悲观锁是默认每次更新操作肯定会冲突,所以每次操作都要先获取锁,操作完毕再释放锁,适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突,所以在更新前和更新后都不需要获取锁和释放锁的操作,所以效率更高,适合于读多写少的场景中。

在es中采用的是乐观锁机制,这也很好理解,因为es的定位是一个搜索引擎,所以一般是应用于读多写少的场景中。

1:es的乐观锁机制

有如下3中方式:

1:每次更新文档的version都会+1
    这种方式已废弃
2:内部版本号控制,通过if_seq_no+if_primary_term
3:外部版本号控制,version+verion_type=exeternal,其中verison由外部数据源指定,如数据从MySQL同步

如果是数据在es中维护更新则采用2,内部版本号控制方案,如果是数据来自于外部数据源的同步,则采用3,外部版本号控制。

1.1:内部版本号控制

  • 插入数据
DELETE products

PUT products/_doc/1
{
  "title": "iphone",
  "count": 100
}

注意返回的_seq_no和_primary_term需要记住,在做并发更新控制时需要用到:
在这里插入图片描述

  • 指定if_seq_no和if_primary_term更新一次
PUT products/_doc/1?if_seq_no=0&if_primary_term=1
{
  "title": "iphone",
  "count": 100
}

在这里插入图片描述
假定此时有一个并发修改也指定了?if_seq_no=0&if_primary_term=1则会因为乐观锁检测而失败:
在这里插入图片描述

1.2:外部版本号控制

外部版本号通过version=${外部版本号}&version_type=external完成,如下:

DELETE products

PUT products/_doc/1
{
  "title": "iphone",
  "count": 100
}

假定外部版本号时10000:


PUT products/_doc/1?version=10000&version_type=external
{
  "title": "iphone",
  "count": 100
}

其中version由外部数据源指定,此时如果有并发修改的话,同样会被乐观锁机制检测到异常:
在这里插入图片描述

写在后面

参考文章列表

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IP地址被泄露了有什么安全隐患吗

在数字时代,IP地址是我们在线身份的关键,它不仅仅是网络中的一个地址标识,更是我们数字安全的门户。黑客对IP地址的兴趣不止于其代表的数字串——它们是进入个人和企业数据宝库的钥匙。那么,当黑客得知我们的IP地址时,…

Linux 用户及用户组管理

添加用户&#xff08;useradd&#xff09; 语法&#xff1a; useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>] [-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] -u指定用户ID&#xff…

你了解软件验收测试和确认测试的区别吗?

1、软件验收测试   软件验收测试是一个检查软件是否符合特定需求和规格的过程。它通常在软件开发的最后阶段进行&#xff0c;以确保软件的质量和可靠性。该测试的目标是验证软件是否满足用户的需求&#xff0c;并确保软件在交付前经过充分的测试和质量保证。 2、软件确认测试…

BigGait: Learning Gait Representation You Want by Large Vision Models阅读笔记

于老师团队又有新作&#xff01;&#xff01; 0 Abstract 现有的步态识别任务严重依赖上游任务所使用的多种显示步态表征&#xff08;剪影图、姿态图、点云…&#xff09;&#xff0c;会导致严高额标注成本以及累计错误&#xff1b;文章提出了BigGait框架&#xff1a; 挖掘基…

同态滤波算法详解

同态滤波是一种用于增强图像的方法&#xff0c;特别适用于去除图像中的照明不均和阴影。该算法基于照射反射模型&#xff0c;将图像分解为两个分量&#xff1a;照射分量&#xff08;illumination component&#xff09;和反射分量&#xff08;reflection component&#xff09;…

Visual Basic6.0零基础教学(3)—焦点概念和深入学习属性

焦点概念和深入学习属性 文章目录 焦点概念和深入学习属性前言一、什么是焦点(Focus)?焦点的特点 二、窗体属性一、窗体的结构二、窗体的属性三、事件四、方法 一.控件属性一. 标签 Label二.文本框 TextBox2.常用事件 三.命令按钮事件 总结 前言 今天我们来继续学习VB中的属性…

基于单片机的指纹采集识别系统设计

目 录 摘 要 I Abstract II 引 言 3 1 硬件选择与设计 5 1.1 总体设计及方案选择 5 1.1.1主控单片机选择 5 1.1.2传感器模块选择 6 1.1.3显示器模块选择 6 1.2 系统总体设计 7 2 系统硬件电路设计 8 2.1 系统主电路设计 8 2.1.1 主体电路设计 8 2.1.2 单片机最小系统设计 8 2.…

精品基于Uniapp+ssm停车场预约缴费微信小程序的设计与实现

《[含文档PPT源码等]精品微信小程序基于Uniappssm停车场微信小程序的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;ssm 安卓框架&…

服务器将动态IP设置成静态IP(内部网络)

话不多说,直接上干货 打开终端,输入命令行:ifconfig,查看你的网卡配置,此次设置的第一个,如下: 打开配置文件&#xff0c;一般在/etc/sysconfig/network-scripts/文件夹下&#xff1a; 编辑配置文件&#xff1a;vi ifcfg-eno1 修改IP地址分配方式&#xff1a; &#xff08;1&a…

阿里云国际配置DDoS高防(非中国内地)安全加速

DDoS高防&#xff08;非中国内地&#xff09;支持安全加速线路&#xff0c;可以实现中国内地地区用户对非中国内地业务加速访问的同时&#xff0c;提供大流量DDoS攻击防护能力。安全加速提供的清洗能力大于2 Tbps&#xff0c;可以有效保障业务访问速度和稳定性。 前提条件 您…

微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】

qiankun官方文档&#xff1a;qiankun - qiankun 一、创建主应用&#xff1a; 这里以 vue 为主应用&#xff0c;vue版本&#xff1a;2.x // 全局安装vue脚手架 npm install -g vue/clivue create main-app 省略 vue 创建项目过程&#xff0c;若不会可以自行百度查阅教程 …

【python】centos 8新装python3.10.0

1.python源码包准备 2.gcc环境安装 如果系统已具备&#xff0c;可以略过。 有的已经自带了gcc&#xff0c;但是如果编译时启动优化的话&#xff0c;如果gcc版本过老就必须要升级。 3.make环境安装 如果系统已具备&#xff0c;可以略过。 4.更新openssl版本&#xff08;很重…

如何打开EDI文件?

使用EDI系统传输文件的过程中&#xff0c;用户可能会遇到这样的问题&#xff1a;如何打开EDI文件&#xff1f;电脑不在身边如何查看EDI文件&#xff1f;EDI文件未按照标准格式呈现如何梳理&#xff1f;为了解决上述问题&#xff0c;方便用户查看文件&#xff0c;知行之桥EDI系统…

Java Web程序的部署

写在前&#xff1a;要想将我们写好的项目让其他人可以访问&#xff0c;仅仅完成代码是不能直接运行的。这就需要在Linux系统上搭建Java web程序的运行环境。这里以我所做的博客系统为例&#xff0c;进行搭建。 1. 准备依赖 &#xff08;1&#xff09;JVM&#xff08;JDK&#…

在unity中生成一个随机数

1.首先建立一个画布和空对象 2.创建脚本并将代码复制进去 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; public class suijishu : MonoBehaviour {public TextMeshProUGUI sjs;void Update(){if (Input.GetKeyDown(KeyCode.…

300m的视频如何制作二维码?扫码点击播放视频的在线技巧

如何快速将几十M或者几百M的视频文件做成二维码呢&#xff1f;用二维码来展示视频是现在很流行的一种方式&#xff0c;比如产品说明、自拍录像、企业介绍、使用教程等方面的内容&#xff0c;都可以通过这种方式来完成视频内容的传递。 其实视频生成二维码的方法没有想象中的那…

YOLOv9算法原理——使用可编程梯度信息学习想要学习的内容

前言 2023年1月发布YOLOv8正式版后&#xff0c;经过一年多的等待&#xff0c;YOLOv9终于面世了&#xff01;YOLO是一种利用图像全局信息进行目标检测的系统。自从2015年Joseph Redmon、Ali Farhadi等人提出了第一代模型以来&#xff0c;该领域的研究者们已经对YOLO进行了多次更…

微信小程序问题定位——sourcemap文件

使用sourceMap在微信小程序中进行线上问题定位&#xff0c;主要可以通过以下步骤实现&#xff1a; 下载微信开发者工具首先&#xff0c;确保已经安装了微信开发者工具&#xff0c;这是进行小程序开发和调试的基础。登录微信公众平台并下载sourceMap文件&#xff1a;登录微信小…

【Redis】Redis常用命令一

1.keys&#xff1a;返回所有满足条件的key&#xff0c;比如&#xff1a; KEYS pattern时间复杂度&#xff1a;O(N)&#xff0c;返回值&#xff1a;匹配pattern的所有key。 • h?llo 匹配 hello , hallo 和 hxllo • h*llo 匹配 hllo 和 heeeello • h[ae]llo 匹配 hello 和 …

java kafka客户端何时设置的kafka消费者默认值

kafka为什么有些属性没有配置却能正常工作&#xff0c;那是因为kafka-clients对有些消费者设置了默认值&#xff0c;具体看下ConsumerConfig类的静态模块&#xff0c;具体如下所示&#xff1a; kafka为什么有些属性没有配置却能正常工作&#xff0c;那是因为kafka-clients对有…
最新文章