CN111241042A - 一种基于Etcd的分布锁实现方法、系统及设备 - Google Patents
一种基于Etcd的分布锁实现方法、系统及设备 Download PDFInfo
- Publication number
- CN111241042A CN111241042A CN201911416714.XA CN201911416714A CN111241042A CN 111241042 A CN111241042 A CN 111241042A CN 201911416714 A CN201911416714 A CN 201911416714A CN 111241042 A CN111241042 A CN 111241042A
- Authority
- CN
- China
- Prior art keywords
- lock
- etcd
- resource
- management
- resources
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000008569 process Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 6
- 230000002860 competitive effect Effects 0.000 claims description 3
- 238000000926 separation method Methods 0.000 claims 1
- 238000007726 management method Methods 0.000 abstract description 42
- 238000012545 processing Methods 0.000 abstract description 10
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 abstract description 2
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002950 deficient Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出的一种基于Etcd的分布锁实现方法、系统及设备,根据DLM锁语义及锁兼容性设计,使用字符串来代替相应的锁资源。通过在Etcd中设计锁管理初始化、锁资源竞争处理、无锁竞争加锁处理及已存在锁的加锁处理的完整锁方案,为Etcd锁方案提供了丰富的锁语义,更方便Etcd管理数据存储;同时在用户态可以开放DLM完整的锁语义接口,不必在内核态调用DLM实现,方案更加简单有效,复杂度低。本发明可以利用到集群管理、存储资源管理、分布式锁管理等多种场景,在云计算及存储方向有极大收益。
Description
技术领域
本发明涉及计算机技术领域,更具体的说是涉及一种基于Etcd的分布锁实现方法、系统及设备。
背景技术
Etcd(一种分布式高可用键值数据库)是CoreOS团队于2013年6月发起的开源项目,该项目主要为实现一个高可用的分布式键值(key-value)数据库。Etcd核心是基于raft协议作为一致性算法,在容器调度,集群管理及服务发现等场景下有较广的应用。
DLM(分布式锁管理器)是VMS操作系统提供,首次出现于1982年VMS版本3中,在2006年Linux2.6.12内核中正式集成了与VMS DLM接口几乎一致的DLM。DLM锁一般需要基于一个集群管理服务如Corosync搭配使用。DLM可以为整个集群中提供一个统一的、共享的锁资源管理机制。在每个运行DLM锁服务器节点运行一个锁管理管理进程,进程间相互通信,维护一个集群范围内的锁资源管理。DLM锁具有丰富的锁工作模式,定义了6种锁语义分别为NL、CR、CW、PR、PW和EX,用以管理共享资源。
Etcd目前作为一个新兴的键值数据库管理开源组件目前在锁管理机制极为欠缺,仅能提供锁租约,通过定时更新锁租约来达到资源锁管理,锁的模式仅支持独占(EX)锁。在Linux版本中实现的DLM本身依赖于集群系统同步相关锁资源信息,同时在内核中实现,具有极为复杂的逻辑控制。如何基于Etcd的成熟的集群管理及键值数据库功能,根据DLM锁语义设计,利用相关技术丰富其锁管理机制,满足不同的资源管理需求,是我们亟待解决的问题。
发明内容
针对以上问题,本发明的目的在于提供一种基于分布式高可用键值数据库的分布锁实现方法及系统,能够利用到集群管理、存储资源管理、分布式锁管理等多种场景,在云计算及存储方向有极大收益。
本发明为实现上述目的,通过以下技术方案实现:一种基于Etcd的分布锁实现方法,包括:
对锁资源进行管理初始化;
当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
对已经存在锁资源进行管理。
进一步,所述对锁资源进行管理初始化包括如下步骤:
S11:在Etcd创建完成后,创建以lock为名称的key和对应的类似目录,在lock的下一层级创建子key,类似目录下创建新目录以及相应的锁资源;
S12:当Etcd创建某个key时,默认在lock下一级创建一个key。
进一步,所述当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理包括如下步骤:
S21:以主机名称及进程ID号做为资源竞争者标识;
S22:资源竞争者对同一个key加锁时,首先向Etcd的master节点发送请求,master节点对所有的竞争者使用Hash算法,通过取Hash后的最小值获得锁资源;
S23:通过Etcd master节点将host_name:pid:lock信息写入到lock目录下对应的同名key的value中;
S24:资源竞争者利用Etcd提供的compare and write接口,校验lock目录下对应的同名key的value内容,若和需要加锁资源一致,则加锁成功,若不一致,则加锁失败。
进一步,所述当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理包括:
当发现lock目录下同名key下不存在锁资源,同时不存在锁资源竞争,则master直接将相应的key对应的value更新;资源竞争者利用Etcd提供的compare and write接口校验是否加锁成功。
进一步,所述对已经存在锁资源进行管理包括如下步骤:
S41:当发现lock目录下同名的key下已经存在相应的锁资源时,读取其value中host_name:pid:lock字符串中的lock字段;
S42:根据DLM的锁兼容性,校验是否冲突,若冲突,则加锁失败;如果不冲突,则在value中增加记录需要加锁的资源信息。
进一步,当所述value
值中存在大于1个锁语义时,若进行锁语义添加,用逗号分隔。
相应的,本发明还公开了一种基于Etcd的分布锁实现系统,包括:
初始化单元,用于对锁资源进行管理初始化;
第一管理单元,用于当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
第二管理单元,用于当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
第三管理单元,用于对已经存在锁资源进行管理。
相应的,本发明还公开了一种基于Etcd的分布锁实现设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于Etcd的分布锁实现方法步骤。
对比现有技术,本发明有益效果在于:本发明提供了一种基于Etcd的分布锁实现方法、系统及设备,根据DLM锁语义及锁兼容性设计,使用字符串来代替相应的锁资源。通过在Etcd中设计锁管理初始化、锁资源竞争处理、无锁竞争加锁处理及已存在锁的加锁处理的完整锁方案,为Etcd锁方案提供了丰富的锁语义,更方便Etcd管理数据存储;同时在用户态可以开放DLM完整的锁语义接口,不必在内核态调用DLM实现,方案更加简单有效,复杂度低。本发明可以利用到集群管理、存储资源管理、分布式锁管理等多种场景,在云计算及存储方向有极大收益。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1是本发明的方法流程图。
附图2是本发明的系统结构图。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
如图1所示的种基于Etcd的分布锁实现方法,包括:
1、对锁资源进行管理初始化:
1.1、在Etcd创建完成后,创建“lock”为名称key,类似目录,在lock的下一层级可以创建子key,类似目录下创建新目录;需要加锁资源的key名称,value值存储相关锁资源;
1.2、当Etcd创建某个key时,默认在lock下一级创建一个key。
2、当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理:
2.1、以主机名称及进程ID号做为资源竞争者,即使用字符串“host_name:pid:lock”标识;
2.2、资源竞争者对同一个key加锁时,首先会向etcd的master节点发送请求,master节点对所有的竞争者使用Hash(host_name:pid:lock),取Hash后的最小值可以获得锁资源;
2.3、由Etcd master节点将host_name:pid:lock信息写入到lock目录下对应的同名key的value中;
2.4、资源竞争者利用etcd提供的compare and write接口,校验lock目录下对应的同名key的value内容,如果和需要加锁一致,则加锁成功,不一致,则加锁失败。
3、当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理:
当发现lock目录下同名key下未存在锁资源,同时不存在锁资源竞争,则master直接将相应的key对应的value更新,值同样为“host_name:pid:lock”,资源竞争者利用etcd提供的compare and write接口校验是否加锁成功。
4、对已经存在锁资源进行管理:
4.1、当发现lock目录下同名的key下已经存在相应的锁资源时,读取其value中“host_name:pid:lock”字符串中的lock字段;
4.2、根据上述DLM的锁兼容性,校验是否冲突,如果冲突,则加锁失败;如果不冲突,则在value中增加记录需要加锁的资源信息“host_name:pid:lock”;
4.3、注意,在value值中,可以存在多个锁语义,每次增加,以“,”逗号分隔,读取已加的锁资源时需要考虑已经增加的锁资源;锁冲突验证也需要保证和所有已加的lock字段不冲突;
在上述实施例中,
host_name为主机名,即Etcd服务启动时的参数项,用以辨别是哪个主机;
pid,为进程号,即主机内哪个进程需要加锁读写Etcd的数据;
lock,为DLM锁语义,存储以“000100”字符串,即上述描述的锁消息,用以判断锁冲突;
compare and write为etcd提供的标准接口。
相应的,如图2所示,本发明还公开了一种基于Etcd的分布锁实现系统,包括:
初始化单元,用于对锁资源进行管理初始化;
第一管理单元,用于当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
第二管理单元,用于当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
第三管理单元,用于对已经存在锁资源进行管理。
相应的,本发明还公开了一种基于Etcd的分布锁实现设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于Etcd的分布锁实现方法步骤。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限定的范围。
Claims (8)
1.一种基于Etcd的分布锁实现方法,其特征在于,包括:
对锁资源进行管理初始化;
当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
对已经存在锁资源进行管理。
2.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,所述对锁资源进行管理初始化包括如下步骤:
S11:在Etcd创建完成后,创建以lock为名称的key和对应的类似目录,在lock的下一层级创建子key,类似目录下创建新目录以及相应的锁资源;
S12:当Etcd创建某个key时,默认在lock下一级创建一个key。
3.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,所述当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理包括如下步骤:
S21:以主机名称及进程ID号做为资源竞争者标识;
S22:资源竞争者对同一个key加锁时,首先向Etcd的master节点发送请求,master节点对所有的竞争者使用Hash算法,通过取Hash后的最小值获得锁资源;
S23:通过Etcd master节点将host_name:pid:lock信息写入到lock目录下对应的同名key的value中;
S24:资源竞争者利用Etcd提供的compare and write接口,校验lock目录下对应的同名key的value内容,若和需要加锁资源一致,则加锁成功,若不一致,则加锁失败。
4.根据权利要求2所述的基于Etcd的分布锁实现方法,其特征在于,所述当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理包括:
当发现lock目录下同名key下不存在锁资源,同时不存在锁资源竞争,则master直接将相应的key对应的value更新;资源竞争者利用Etcd提供的compare and write接口校验是否加锁成功。
5.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,所述对已经存在锁资源进行管理包括如下步骤:
S41:当发现lock目录下同名的key下已经存在相应的锁资源时,读取其value中host_name:pid:lock字符串中的lock字段;
S42:根据DLM的锁兼容性,校验是否冲突,若冲突,则加锁失败;如果不冲突,则在value中增加记录需要加锁的资源信息。
6.根据权利要求1所述的基于Etcd的分布锁实现方法,其特征在于,当所述value值中存在大于1个锁语义时,若进行锁语义添加,用逗号分隔。
7.一种基于Etcd的分布锁实现系统,其特征在于,包括:
初始化单元,用于对锁资源进行管理初始化;
第一管理单元,用于当同时有多个主机或单主机多个进程需要对Etcd已经存储的key加锁时,对所资源进行竞争加锁管理;
第二管理单元,用于当预设锁资源目录下不存在锁资源时,进行无锁资源竞争管理;
第三管理单元,用于对已经存在锁资源进行管理。
8.一种基于Etcd的分布锁实现设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述基于Etcd的分布锁实现方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911416714.XA CN111241042B (zh) | 2019-12-31 | 2019-12-31 | 一种基于Etcd的分布锁实现方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911416714.XA CN111241042B (zh) | 2019-12-31 | 2019-12-31 | 一种基于Etcd的分布锁实现方法、系统及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111241042A true CN111241042A (zh) | 2020-06-05 |
CN111241042B CN111241042B (zh) | 2022-11-11 |
Family
ID=70864719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911416714.XA Active CN111241042B (zh) | 2019-12-31 | 2019-12-31 | 一种基于Etcd的分布锁实现方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241042B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100023521A1 (en) * | 2008-07-28 | 2010-01-28 | International Business Machines Corporation | System and method for managing locks across distributed computing nodes |
CN109862097A (zh) * | 2019-01-31 | 2019-06-07 | 上海易点时空网络有限公司 | Id生成方法及装置 |
CN110392876A (zh) * | 2017-03-10 | 2019-10-29 | 净睿存储股份有限公司 | 将数据集和其他受管理对象同步地复制到基于云的存储系统 |
-
2019
- 2019-12-31 CN CN201911416714.XA patent/CN111241042B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100023521A1 (en) * | 2008-07-28 | 2010-01-28 | International Business Machines Corporation | System and method for managing locks across distributed computing nodes |
CN110392876A (zh) * | 2017-03-10 | 2019-10-29 | 净睿存储股份有限公司 | 将数据集和其他受管理对象同步地复制到基于云的存储系统 |
CN109862097A (zh) * | 2019-01-31 | 2019-06-07 | 上海易点时空网络有限公司 | Id生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111241042B (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11847438B2 (en) | Offline capabilities for live applications in a cloud collaboration platform | |
US10713654B2 (en) | Enterprise blockchains and transactional systems | |
US11232098B2 (en) | Data structure reading methods and apparatuses, data structure update methods and apparatuses, and electronic devices | |
CN107480237B (zh) | 面向异构桌面云平台的数据融合方法及系统 | |
CN101650660B (zh) | 从中央存储装置引导计算机系统 | |
US8615488B2 (en) | Physical replication of database subset to improve availability and reduce resource cost in a cloud environment | |
TWI724570B (zh) | 資料結構的讀取及更新方法、裝置、電子設備及儲存媒體 | |
EP2572290A2 (en) | Sharing and synchronization of objects | |
CN102243648A (zh) | 并发地访问数据 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN115578096A (zh) | 区块链并行交易方法、装置、设备和存储介质 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
US20100023577A1 (en) | Method, system and article for mobile metadata software agent in a data-centric computing environment | |
US10127270B1 (en) | Transaction processing using a key-value store | |
US20140181809A1 (en) | Creating multiple rules for a device to allow concurrent access to the device by different virtual machines | |
CN110908644B (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN112785248A (zh) | 人力资源数据跨组织交互方法、装置、设备和存储介质 | |
CN111241042B (zh) | 一种基于Etcd的分布锁实现方法、系统及设备 | |
Vohra | Pro Docker | |
WO2024021417A1 (zh) | 数据账户创建方法及装置 | |
US8560572B2 (en) | System for lightweight objects | |
US10776344B2 (en) | Index management in a multi-process environment | |
US20050198005A1 (en) | Systems and methods for controlling access to an object | |
CN110019113B (zh) | 一种数据库的业务处理方法及数据库服务器 | |
US20190377708A1 (en) | System and method for providing a container environment in a single file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |