前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch(7.2.2)-剖析es的乐观锁

ElasticSearch(7.2.2)-剖析es的乐观锁

作者头像
cwl_java
发布2019-11-04 11:25:11
7240
发布2019-11-04 11:25:11
举报
文章被收录于专栏:cwl_Javacwl_Javacwl_Java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42528266/article/details/102863824

简介:剖析elastic search的乐观锁

锁的简单分类
  • 悲观锁 顾名思义,就是很悲观,每次去拿数据的时候都认为别⼈会修改,所以每次在拿数据的时候都会上锁,这样别⼈想拿这个数据就会阻塞,直到它拿到锁。传统的关系型数据库⾥边就⽤到了很多这种锁机制,⽐如⾏锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
  • 乐观锁 顾名思义,就是很乐观,每次去拿数据的时候都认为别⼈不会修改,所以不会上锁,但是在更新的时候会判断⼀下在此期间别⼈有没有去更新这个数据,⽐如可以使⽤版本号等机制。乐观锁适⽤于多读的应⽤类型,这样可以提⾼吞吐量,因为我们elasticsearch⼀般业务场景都是写少读多,所以通过乐观锁可以在控制并发的情况下⼜能有效的提⾼系统吞吐量。
版本号乐观锁
  • Elasticsearch 中对⽂档的 index , GET 和 delete 请求时,都会返回⼀个 _version,当⽂档被修改时版本号递增。
  • 所有⽂档的更新或删除 API,都可以接受 version 参数,这允许你在代码中使⽤乐观的并发控制,这⾥要注意的是版本号要⼤于旧的版本号,并且加上version_type=external。
  • 获取⽂档
GET /nba/_doc/1
{
	"_index": "nba",
	"_type": "_doc",
	"_id": "1",
	"_version": 1,
	"_seq_no": 4,
	"_primary_term": 7,
	"found": true,
	"_source": {
		"name": "哈登",
		"team_name": "⽕箭",
		"position": "得分后卫",
		"play_year": "10",
		"jerse_no": "13"
	}
}
  • 通过版本号新增⽂档(version要⼤于旧的version)
POST /nba/_doc/1?version=2&version_type=external
{
	"name": "哈登",
	"team_name": "⽕箭",
	"position": "得分后卫",
	"play_year": "10",
	"jerse_no": "13"
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 锁的简单分类
  • 版本号乐观锁
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档