白话Elasticsearch57-数据建模之实现悲观锁并发控制的三种方式(未成功)

2021-08-17 15:05:09 浏览数 (1)


概述

继续跟中华石杉老师学习ES,第57篇

课程地址: https://www.roncoo.com/view/55


官网

2.X的版本 解决并发问题:戳这里


方式一:基于全局锁lock.global实现悲观锁并发控制 (未成功)

全局锁:最粗的一个粒度,锁这个索引。

ES版本 6.4.1

已经创建了filesystem索引

再创建全局锁

代码语言:javascript复制
PUT /filesystem/lock/global/_create
{}

报错:

代码语言:javascript复制
{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Rejecting mapping update to [filesystem] as the final mapping would have more than 1 type: [file, lock]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Rejecting mapping update to [filesystem] as the final mapping would have more than 1 type: [file, lock]"
  },
  "status": 400
}

虽然没成功,但是缺点还是显而易见的: 直接锁整个index,这个时候对index中所有的doc的操作,都会被block住,导致整个系统的并发能力很低。


方式二:基于document锁实现悲观锁并发控制(未成功)

先记录下,在6.4.1版本未成功


方式三:基于共享锁和排他锁实现悲观锁并发控制(未成功)

先记录下,在6.4.1版本未成功

es

0 人点赞