CN109144740B - 一种分布式锁实现方法和装置 - Google Patents

一种分布式锁实现方法和装置 Download PDF

Info

Publication number
CN109144740B
CN109144740B CN201810959630.XA CN201810959630A CN109144740B CN 109144740 B CN109144740 B CN 109144740B CN 201810959630 A CN201810959630 A CN 201810959630A CN 109144740 B CN109144740 B CN 109144740B
Authority
CN
China
Prior art keywords
node
reading
space
shared storage
nodes
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.)
Active
Application number
CN201810959630.XA
Other languages
English (en)
Other versions
CN109144740A (zh
Inventor
马怀旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN201810959630.XA priority Critical patent/CN109144740B/zh
Publication of CN109144740A publication Critical patent/CN109144740A/zh
Application granted granted Critical
Publication of CN109144740B publication Critical patent/CN109144740B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式锁实现方法和装置。涉及云计算技术,解决了每次都需要读取全部共享存储空间造成资源浪费的问题。该方法包括:获取当前锁空间中存活的节点;读取共享存储中所述存活的节点对应的I/O块。本发明提供的技术方案适用于大型集群运算平台,实现了高效率高资源利用率的分布式锁。

Description

一种分布式锁实现方法和装置
技术领域
本发明涉及云计算技术,尤指一种分布式锁实现方法和装置。
背景技术
随着计算机技术和网络技术的快速发展,大型集群在实际生产环境中越来越多的被使用。通过虚拟化,组成云计算平台。在虚拟化系统中,不通系统或者是在同一个系统不同主机之间共享同一个或一组资源,常常需要协调动作,往往需要互斥来防止彼此的干扰,保证一致性,因此需要分布式锁来保证在上述情况下系统正常运行。
分布式锁实现方案大致分两种:一种实现方案是依赖于网络,通过网络通信来保证获取资源的一致性,但是对于网络的稳定性依赖度较高,比如DLM;第二种实现方案是依赖共享存储,通过对共享存储的读写保证多方的协商,实现方案如Sanlock。Sanlock的实现方案是依赖于Disk paxos算法,但是Disk paxos算法依赖于存储空间,Sanlock设定了固定的2048个块大小来实现Disk paxos算法,即一个资源对应的空间是1M,Sanlock通过deltalease来维护节点存活状态,通过Disk paxos算法来获取资源锁。Disk paxos算法是通过读取所有的数据来判断对方是否在获取资源,同时判断资源是否被获取,Disk paxos算法过程中至少要进行六次I/O来完成算法,其中每一次读取读取时候都是全部读取,即读取当前资源的所有的内容,即1M空间内容,当磁盘性能比较差时候一个Disk paxos算法需要读取至少3M空间,严重影响Sanlock算法时效性,同时,一般使用分布式锁的时候规模并没有达到2000节点个数,基本上都是个位数或者是十位数的节点个数使用,造成了存储空间的浪费。
发明内容
为了解决上述技术问题,本发明提供了一种分布式锁实现方法和装置,通过读取共享存储中存活节点对应部分,减少数据读取量,提升了分布式锁实现效率,解决了每次都需要读取全部共享存储空间造成资源浪费的问题。
为了达到本发明目的,本发明提供了一种分布式锁实现方法,包括:
获取当前锁空间中存活的节点;
读取共享存储中所述存活的节点对应的I/O块。
优选的,读取共享存储中所述存活的节点对应的I/O块的步骤包括:
确定所述存储的节点中节点号最大的节点;
根据所述节点号最大的节点在共享存储中的I/O块位置,获取读取时的最大偏移量;
根据所述最大偏移量,计算读取空间;
读取所述读取空间中I/O块内存储的信息。
优选的,所述锁空间中每个节点对应所述共享存储中的一个I/O块。
优选的,所述共享存储中的I/O块按照节点号的顺序分配。
优选的,获取当前锁空间中存活的节点的步骤包括:
获取当前锁空间中存活的节点号最大的节点。
本发明还提供了一种分布式锁实现装置,包括:
节点存活状态获取模块,用于获取当前锁空间中存活的节点;
信息读取模块,用于读取共享存储中所述存活的节点对应的I/O块。
优选的,所述信息读取模块包括:
最大节点确定单元,用于确定所述存储的节点中节点号最大的节点;
最大偏移量确定单元,用于根据所述节点号最大的节点在共享存储中的I/O块位置,获取读取时的最大偏移量;
读取空间计算单元,用于根据所述最大偏移量,计算读取空间;
信息读取单元,用于读取所述读取空间中I/O块内存储的信息。
优选的,所述节点存活状态获取模块,具体用于获取当前锁空间中存活的节点号最大的节点。
本发明提供了一种分布式锁实现方法和装置,获取当前锁空间中存活的节点,读取共享存储中所述存活的节点对应的I/O块。通过只读取存活节点对应的I/O块,减少数据读取量,提升了分布式锁实现效率,解决了每次都需要读取全部共享存储空间造成资源浪费的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明的一实施例提供的一种分布式锁实现方法的流程示意图;
图2为图1中步骤102的具体流程图;
图3为本发明的一实施例提供的一种分布式锁实现装置的结构示意图;
图4为图3中信息读取模块302的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
Disk paxos算法是通过读取所有的数据来判断对方是否在获取资源,同时判断资源是否被获取,Disk paxos算法过程中至少要进行六次I/O来完成算法,其中每一次读取读取时候都是全部读取,即读取当前资源的所有的内容,即1M空间内容,当磁盘性能比较差时候一个Disk paxos算法需要读取至少3M空间,严重影响Sanlock算法时效性,同时,一般使用分布式锁的时候规模并没有达到2000节点个数,基本上都是个位数或者是十位数的节点个数使用,造成了存储空间的浪费。
为了解决上述问题,本发明的实施例提供了一种分布式锁实现方法和装置。下面结合附图,对本发明的实施例进行说明。
本发明的一实施例提供了一种分布式锁实现方法,以Sanlock分布式锁为例,使用该方法实现分布式锁读取的流程如图1所示,包括:
步骤101、获取当前锁空间中存活的节点。
本步骤中,具体的,获取当前锁空间中存活的节点号最大的节点。
Sanlock的delta lease保存在当前锁空间中存活的节点的信息,Sanlock执行disk paxos算法时候从内存中读取该信息并不影响Sanlock disk paxos算法执行的时间。
delta lease算法中增加识别存活节点号最大的节点ID,Sanlock通过设置节点号1~2000来进行I/O块对应,即每个节点对应自己的I/O块,delta lease算法是写入节点自己对应的I/O块,读取别的节点对应的I/O块,从而达到证明自己存活并且识别其他节点存活信息的效果。
Sanlock节点对应的块是顺序的,同时是连续的,因此,通过不同的节点偏移量能够知道节点对应的ID号。
过delta lease保存的节点号,读取最大值,计算出I/O块大小,Sanlock的paxos算法对应的资源特点在于,资源信息的前两个块对应的是资源的信息,后边的2000个块对应的是节点的信息,即执行paxos算法时候会检查资源信息之后然后进行I/O,写入自己对应的块来证明自己要获取该资源,同时读取其他节点的块来判断没有竞争该锁资源。
竞争锁资源时候只有存活的节点即delta lease正常刷新的节点才能获取资源锁,因此执行paxos算法时候只需要知道存活的节点,读取存活节点对应的信息即可知道是否有人竞争锁资源。
步骤102、读取共享存储中所述存活的节点对应的I/O块。
所述锁空间中每个节点对应所述共享存储中的一个I/O块。所述共享存储中的I/O块按照节点号的顺序分配。只需要读取存活节点对应的信息,paxos算法节点对应的块同样是线性分布的,因此知道最大的节点号就能够知道需要读取的I/O块,不需要读取所有的节点信息。
本发明实施例中,修改Sanlock paxos算法delta lease和paxos lease,deltalease顺序保存存活的节点信息,并且保存最大的节点信息到一定位置,方便paxos lease进行读取;修改paxos算法,每一次进行读取时候从delta lease中读取存活节点的最大的id号,通过存活节点中最大节点ID计算出此次I/O读取的大小进行读取;重新编译Sanlock的rpm包,正常的部署使用Sanlock;配置使用Sanlock时最好是从最小节点数开始。
本步骤具体如图2所示,包括:
步骤1021、确定所述存储的节点中节点号最大的节点。
步骤1022、根据所述节点号最大的节点在共享存储中的I/O块位置,获取读取时的最大偏移量。
执行disk paxos算法时候获取节点最大值能够获取到资源空间中Sanlock写入的最大偏移量,从初始位置至该最大偏移量指向的位置即为读取空间,仅仅读取该读取空间即可读取集群所有的节点disk paxos算法的信息。
步骤1023、根据所述最大偏移量,计算读取空间。
步骤1024、读取所述读取空间中I/O块内存储的信息。
本发明实施例中只读取已经写过的最大偏移地址的内容不增加I/O次数,但是减小了需要读取的I/O块的数量,优化了I/O速率,提高了disk paxos算法速度本发明通过查看Sanlock的delta lease存活的节点个数,找出节点的最大值,通过仅仅读取存活节点对应的连续空间来减小每一次I/O读取的块大小,同时不增加I/O的次数,能够减小Sanlock执行disk paxos算法时候总I/O量,从而减小读取块大小来提升disk paxos算法速度,提高了Sanlock算法的时效性。
本发明的一实施例还提供了一种分布式锁实现装置,其结构如图3所示,包括:
节点存活状态获取模块301,用于获取当前锁空间中存活的节点;
信息读取模块302,用于读取共享存储中所述存活的节点对应的I/O块。
优选的,所述信息读取模块302的结构如图4所示,包括:
最大节点确定单元3021,用于确定所述存储的节点中节点号最大的节点;
最大偏移量确定单元3022,用于根据所述节点号最大的节点在共享存储中的I/O块位置,获取读取时的最大偏移量;
读取空间计算单元3023,用于根据所述最大偏移量,计算读取空间;
信息读取单元3024,用于读取所述读取空间中I/O块内存储的信息。
优选的,所述节点存活状态获取模块301,具体用于获取当前锁空间中存活的节点号最大的节点。
本发明的实施例提供了一种分布式锁实现方法和装置,获取当前锁空间中存活的节点,读取共享存储中所述存活的节点对应的I/O块。通过只读取存活节点对应的I/O块,减少数据读取量,提升了分布式锁实现效率,解决了每次都需要读取全部共享存储空间造成资源浪费的问题。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

Claims (4)

1.一种分布式锁实现方法,其特征在于,包括:
获取当前锁空间中存活的节点;
读取共享存储中所述存活的节点对应的I/O块;
所述锁空间中每个节点对应所述共享存储中的一个I/O块;
所述共享存储中的I/O块按照节点号的顺序分配,
读取共享存储中所述存活的节点对应的I/O块的步骤包括:
确定所述存储的节点中节点号最大的节点;
根据所述节点号最大的节点在共享存储中的I/O块位置,获取读取时的最大偏移量;
根据所述最大偏移量,计算读取空间;
读取所述读取空间中I/O块内存储的信息。
2.根据权利要求1所述的分布式锁实现方法,其特征在于,获取当前锁空间中存活的节点的步骤包括:
获取当前锁空间中存活的节点号最大的节点。
3.一种分布式锁实现装置,其特征在于,包括:
节点存活状态获取模块,用于获取当前锁空间中存活的节点;
信息读取模块,用于读取共享存储中所述存活的节点对应的I/O块;
所述锁空间中每个节点对应所述共享存储中的一个I/O块;
所述共享存储中的I/O块按照节点号的顺序分配,
所述信息读取模块包括:
最大节点确定单元,用于确定所述存储的节点中节点号最大的节点;
最大偏移量确定单元,用于根据所述节点号最大的节点在共享存储中的I/O块位置,获取读取时的最大偏移量;
读取空间计算单元,用于根据所述最大偏移量,计算读取空间;
信息读取单元,用于读取所述读取空间中I/O块内存储的信息。
4.根据权利要求3所述的分布式锁实现装置,其特征在于,
所述节点存活状态获取模块,具体用于获取当前锁空间中存活的节点号最大的节点。
CN201810959630.XA 2018-08-16 2018-08-16 一种分布式锁实现方法和装置 Active CN109144740B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810959630.XA CN109144740B (zh) 2018-08-16 2018-08-16 一种分布式锁实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810959630.XA CN109144740B (zh) 2018-08-16 2018-08-16 一种分布式锁实现方法和装置

Publications (2)

Publication Number Publication Date
CN109144740A CN109144740A (zh) 2019-01-04
CN109144740B true CN109144740B (zh) 2021-05-04

Family

ID=64790663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810959630.XA Active CN109144740B (zh) 2018-08-16 2018-08-16 一种分布式锁实现方法和装置

Country Status (1)

Country Link
CN (1) CN109144740B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109324907A (zh) * 2018-08-27 2019-02-12 郑州云海信息技术有限公司 一种分布式锁管理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103167010A (zh) * 2011-12-16 2013-06-19 伊姆西公司 用于在集群中指示节点存活的方法和设备
CN103458036A (zh) * 2013-09-03 2013-12-18 杭州华三通信技术有限公司 一种集群文件系统的访问装置和方法
CN104657260A (zh) * 2013-11-25 2015-05-27 航天信息股份有限公司 控制分布式节点间访问共享资源的分布式锁的实现方法
CN107517277A (zh) * 2017-10-09 2017-12-26 郑州云海信息技术有限公司 一种sanlock锁实现方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106201357A (zh) * 2016-07-18 2016-12-07 浪潮(北京)电子信息产业有限公司 一种存储池的构建方法及系统
CN106453656B (zh) * 2016-12-06 2019-12-06 东软集团股份有限公司 一种集群主机选取方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103167010A (zh) * 2011-12-16 2013-06-19 伊姆西公司 用于在集群中指示节点存活的方法和设备
CN103458036A (zh) * 2013-09-03 2013-12-18 杭州华三通信技术有限公司 一种集群文件系统的访问装置和方法
CN104657260A (zh) * 2013-11-25 2015-05-27 航天信息股份有限公司 控制分布式节点间访问共享资源的分布式锁的实现方法
CN107517277A (zh) * 2017-10-09 2017-12-26 郑州云海信息技术有限公司 一种sanlock锁实现方法和装置

Also Published As

Publication number Publication date
CN109144740A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
CN110018983B (zh) 一种元数据查询方法及装置
US10331641B2 (en) Hash database configuration method and apparatus
CN109246182B (zh) 一种分布式锁管理器及其实现方法
CN106708608B (zh) 一种分布式锁服务方法、获取方法及相应装置
CN110018878B (zh) 一种分布式系统数据加载方法以及装置
WO2017050064A1 (zh) 共享内存数据库的内存管理方法及装置
CN107391033B (zh) 数据迁移方法及装置、计算设备、计算机存储介质
CN108062235B (zh) 数据处理方法及装置
WO2019170011A1 (zh) 任务分配方法及装置、分布式存储系统
CN111880956A (zh) 一种数据同步方法和装置
CN109144740B (zh) 一种分布式锁实现方法和装置
CN102073733A (zh) 哈希表管理方法及装置
CN107451070B (zh) 一种数据的处理方法和服务器
CN113794696B (zh) 一种基于因果模型的网络安全信息处理方法和系统
CN111367649B (zh) 高精地图数据并行处理方法和装置
CN109144403B (zh) 一种用于云盘模式切换的方法与设备
CN111580959B (zh) 一种数据写入方法、数据写入装置、服务器及存储介质
CN109324764B (zh) 一种分布式独占锁的实现方法和装置
CN107590160B (zh) 一种监控基数树内部结构以实现测试的方法及装置
CN111435323B (zh) 信息的传输方法、装置、终端、服务器及存储介质
CN111522689B (zh) 全局快照方法、装置、电子设备及计算机可读存储介质
CN106790521B (zh) 采用基于ftp的节点设备进行分布式组网的系统及方法
US10803109B2 (en) Method and device for reading and writing video data in NAS device
CN109408485B (zh) 一种分布式锁实现方法和系统
CN110209351B (zh) 分布式存储数据处理方法和装置

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