CN109375988A - 一种分布式锁实现方法和装置 - Google Patents
一种分布式锁实现方法和装置 Download PDFInfo
- Publication number
- CN109375988A CN109375988A CN201811291959.XA CN201811291959A CN109375988A CN 109375988 A CN109375988 A CN 109375988A CN 201811291959 A CN201811291959 A CN 201811291959A CN 109375988 A CN109375988 A CN 109375988A
- Authority
- CN
- China
- Prior art keywords
- distributed lock
- distributed
- rbd
- node
- shared storage
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
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模型兼容RBD分布式锁增加内存负担、影响性能的问题。该方法包括:节点调用句柄,开启分布式锁信息专用的守护进程;所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作。本发明提供的技术方案适用于Sanlock分布式锁,实现了高效率的支持RBD的分布式锁***。
Description
技术领域
本发明涉及虚拟化计算平台技术,尤指一种分布式锁实现方法和装置。
背景技术
随着计算机技术和网络技术的快速发展,大型集群在实际生产环境中得到广泛使用。通过虚拟化,服务器集群组成云计算平台的虚拟化***。在虚拟化***中,常常需要协调动作,不同***或者是在同一个***不同主机之间共享同一个或一组资源,往往需要互斥来防止彼此的干扰,以保证一致性,因此需要分布式锁来保证上述情况的实现。
分布式锁一般来说需要支撑大规格环境下的使用,因此需要使用带租约的分布式锁来保证获取锁资源的节点的唯一性,同时还要保证同一个节点唯一的获取该资源。由于分布式锁的获取者是集群中的主机成员,因此分布式锁的实现方式分为两种:一种为网络型的,即DLM实现方式;一种是共享存储型的,即sanlock实现方式。
作为分布式存储Ceph,其具备扩展性和健壮性的特点,外加其比较便宜,因此深受集群使用者欢迎。一般来说使用其iSCSI服务,但是iSCSI服务的I/O路径太长,因此严重影响其分布式存储的性能。但是Ceph提供RBD存储池,通过RBD进行I/O,直接和Ceph节点进行通信,其I/O路径比较短,因此其性能比较好。并且RBD使用的时候自带多路径,不需要第三方多路径软件,因此更多的用户希望使用RBD方式进行Ceph的I/O,但是没有一种可以支持RBD的分布式锁方案。
在过去的尝试中,实现了sanlock集成RBD的I/O模型方式,但是通过增加I/O模型的方式导致sanlock占用的内存直接增加了300M以上,内存增加量代价过高,消耗资源量过大。
发明内容
为了解决上述技术问题,本发明提供了一种分布式锁实现方法和装置。通过第三方代理的专用守护进程进行分布式锁的读写操作,实现了高效率的支持RBD的分布式锁***,解决了集成I/O模型兼容RBD分布式锁增加内存负担、影响性能的问题。
为了达到本发明目的,本发明提供了一种分布式锁实现方法,包括:
节点调用句柄,开启分布式锁信息专用的守护进程;
所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作。
优选的,在存在多项I/O操作时,所述节点通过所述守护进程中的不同线程完成所述多项I/O操作。
优选的,所述对分布式锁的共享存储进行I/O操作的步骤具体为:
通过所述节点的本地套接字Local Socket与所述分布式锁的共享存储进行通信。
优选的,所述节点与所述分布式锁的共享存储交互的信息包括I/O操作的操作信息和操作针对的卷信息。
优选的,通过对分布式存储***中的可靠的自主的分布式对象存储块设备RBD进行I/O操作实现对所述共享存储的I/O操作。
优选的,所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作的步骤之后,还包括:
在I/O操作失败时检查可靠的自主的分布式对象及RBD的状态,在状态异常时关闭原来打开的句柄,重新调用句柄打开所述可靠的自主的分布式对象及RBD。
本发明还提供了一种分布式锁实现装置,包括:
专用进程管理模块,用于调用句柄,开启分布式锁信息专用的守护进程;
I/O模块,用于使用所述守护进程,对分布式锁的共享存储进行I/O操作。
优选的,所述I/O模块,具体用于在存在多项I/O操作时,所述节点通过所述守护进程中的不同线程完成所述多项I/O操作。
优选的,所述I/O模块通过本地套接字(Local Socket)与所述分布式锁的共享存储进行通信。
优选的,所述专用进程管理模块,还用于可靠的自主的分布式对象及RBD的状态,异常导致I/O操作失败时,关闭原来打开的句柄,重新调用句柄打开所述可靠的自主的分布式对象及RBD。
本发明提供了一种分布式锁实现方法和装置,节点调用句柄,开启分布式锁信息专用的守护进程,所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作。通过专用的守护进程,实现了第三方代理I/O操作,解决了集成I/O模型兼容RBD分布式锁增加内存负担、影响性能的问题,实现了高效率的支持RBD的分布式锁***。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明的一实施例提供的一种分布式锁实现方法的流程示意图;
图2为本发明的一实施例提供的一种分布式锁实现装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在过去的尝试中,实现了sanlock集成RBD的I/O模型方式,但是通过增加I/O模型的方式导致sanlock占用的内存直接增加了300M以上,内存增加量代价过高,消耗资源量过大。
为了解决上述问题,本发明的实施例提供了一种分布式锁实现方法和装置。通过第三方代理的专用守护进程进行分布式锁的读写操作,实现了高效率的支持RBD的分布式锁***,解决了集成I/O模型兼容RBD分布式锁增加内存负担、影响性能的问题。
下面结合附图,对本发明的实施例进行详细说明。
本发明实施例提供了一种分布式锁实现方法,使用该方法实现分布式锁的流程如图1所示,包括:
步骤101、节点调用句柄,开启分布式锁信息专用的守护进程。
本步骤中,在存在多项I/O操作时,所述节点通过所述守护进程中的不同线程完成所述多项I/O操作。通过动态多线程技术,动态的调整线程数,避免I/O高压力时候导致I/O阻塞。
本发明实施例通过调用句柄,增加了第三方I/O代理方式,使sanlock类型的分布式锁能够支持RBD的I/O模型,从而实现一套能够支持RBD的分布式锁***。减少sanlock服务占用内存空间,实现了sanlock支持RBD的I/O模型,增加了支持RBD存储的分布式锁模型。
步骤102、所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作。
本步骤中,通过所述节点的本地套接字Local Socket与所述分布式锁的共享存储进行通信。通过Local Socket进行I/O下发,提高消息的稳定性和传输速度。
通过对分布式存储***中的可靠的自主的分布式对象存储块设备(RBD)进行I/O操作实现对所述共享存储的I/O操作。
所述节点与所述分布式锁的共享存储交互的信息包括I/O操作的操作信息和操作针对的卷信息。
步骤103、在I/O操作失败时检查可靠的自主的分布式对象(RADOS)及RBD的状态,在状态异常时关闭原来打开的句柄,重新调用句柄打开RADOS及RBD。
第三方I/O代理服务进程作为专用的守护进程,动态的检测打开的RADOS和RBD的句柄,避免因为打开的句柄出现问题时候导致I/O无法下发。
本发明的一实施例还提供了一种分布式锁实现方法,能够实现支持RBD的sanlock。
本发明实施例中增加了一个守护进程,通过该守护进程进行I/O操作。因为集成RBD的I/O模型导致sanlock占用的内存较大,并且还会导致内存随着打开的文件的增加增加,因此本发明实施例中使用第三方的代理去处理RBD的I/O,同时保持RBD的长连接,避免因为频繁的打开关闭RBD的image导致进程占用的内存增加。通过第三方的代理实现,减少进程占用的内存信息,同时通过动态的线程池,动态的减压RBD的I/O压力。
sanlock进行I/O时候通过Local Socket进行通信,守护进程中通过动态的多线程机制,实现sanlock多I/O时候压力分担,同时当I/O失败时候检查RBD和RADOS的状态,如果有问题则关闭原来打开的句柄,同时重新打开RADOS和RBD。通过第三方代理的实现,增加RBD的句柄的检查操作,避免因为打开的句柄的问题导致I/O无法下发。通过Local Socket实现,保证数据的传输,同时还能减少sanlock进程占用内存。
本发明的一实施例提供了一种分布式锁实现方法,实现了sanlock对RBD卷的读写模型,即实现了sanlock能够在RBD上使用,从而实现了一套支持RBD的分布式锁***。
1)增加sanlock对RBD的支持,修改sanlock的diskio流程,动态的支持RBD读写,同时实现local的client端,通过Local Socket传送要进行I/O操作的信息和I/O的卷信息。
2)实现支持RBD读写流程的守护进程,实现RBD I/O的server端,接受sanlock调用的client端传输内容,进行RBD I/O,同时实现动态的多线程技术,从而避免sanlock对RBD的I/O压力比较大时候减压操作,同时实现RBD读写的长连接,避免因为频繁的打开、读写、关闭导致进程占用的内存增加。
本发明的一实施例还提供了一种分布式锁实现装置,其结构如图2所示,包括:
专用进程管理模块201,用于调用句柄,开启分布式锁信息专用的守护进程;
I/O模块202,用于使用所述守护进程,对分布式锁的共享存储进行I/O操作。
优选的,所述I/O模块202,具体用于在存在多项I/O操作时,所述节点通过所述守护进程中的不同线程完成所述多项I/O操作。
优选的,所述I/O模块202通过本地套接字Local Socket与所述分布式锁的共享存储进行通信。
优选的,所述专用进程管理模块201,还用于可靠的自主的分布式对象及RBD的状态,异常导致I/O操作失败时,关闭原来打开的句柄,重新调用句柄打开所述可靠的自主的分布式对象及RBD。
本发明的实施例提供了一种分布式锁实现方法和装置,节点调用句柄,开启分布式锁信息专用的守护进程,所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作。通过专用的守护进程,实现了第三方代理I/O操作,解决了集成I/O模型兼容RBD分布式锁增加内存负担、影响性能的问题,实现了高效率的支持RBD的分布式锁***。
通过增加第三方代理,使sanlock支持RBD卷的读写流程,从而使sanlock能够兼容RBD,实现了一套能够支持RBD的分布式锁***,更加便利的让集群使用分布式块存储,保证分布式块存储的数据一致性。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种分布式锁实现方法,其特征在于,包括:
节点调用句柄,开启分布式锁信息专用的守护进程;
所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作。
2.根据权利要求1所述的分布式锁实现方法,其特征在于,在存在多项I/O操作时,所述节点通过所述守护进程中的不同线程完成所述多项I/O操作。
3.根据权利要求1所述的分布式锁实现方法,其特征在于,所述对分布式锁的共享存储进行I/O操作的步骤具体为:
通过所述节点的本地套接字Local Socket与所述分布式锁的共享存储进行通信。
4.根据权利要求3所述的分布式锁实现方法,其特征在于,所述节点与所述分布式锁的共享存储交互的信息包括I/O操作的操作信息和操作针对的卷信息。
5.根据权利要求1所述的分布式锁实现方法,其特征在于,通过对分布式存储***中的可靠的自主的分布式对象存储块设备RBD进行I/O操作实现对所述共享存储的I/O操作。
6.根据权利要求1所述的分布式锁实现方法,其特征在于,所述节点使用所述守护进程,对分布式锁的共享存储进行I/O操作的步骤之后,还包括:
在I/O操作失败时检查可靠的自主的分布式对象及RBD的状态,在状态异常时关闭原来打开的句柄,重新调用句柄打开所述可靠的自主的分布式对象及RBD。
7.一种分布式锁实现装置,其特征在于,包括:
专用进程管理模块,用于调用句柄,开启分布式锁信息专用的守护进程;
I/O模块,用于使用所述守护进程,对分布式锁的共享存储进行I/O操作。
8.根据权利要求7所述的分布式锁实现装置,其特征在于,
所述I/O模块,具体用于在存在多项I/O操作时,所述节点通过所述守护进程中的不同线程完成所述多项I/O操作。
9.根据权利要求7所述的分布式锁实现装置,其特征在于,所述I/O模块通过本地套接字Local Socket与所述分布式锁的共享存储进行通信。
10.根据权利要求7所述的分布式锁实现装置,其特征在于,
所述专用进程管理模块,还用于可靠的自主的分布式对象及RBD的状态,异常导致I/O操作失败时,关闭原来打开的句柄,重新调用句柄打开所述可靠的自主的分布式对象及RBD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811291959.XA CN109375988B (zh) | 2018-11-01 | 2018-11-01 | 一种分布式锁实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811291959.XA CN109375988B (zh) | 2018-11-01 | 2018-11-01 | 一种分布式锁实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109375988A true CN109375988A (zh) | 2019-02-22 |
CN109375988B CN109375988B (zh) | 2021-07-30 |
Family
ID=65396841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811291959.XA Active CN109375988B (zh) | 2018-11-01 | 2018-11-01 | 一种分布式锁实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109375988B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699500A (en) * | 1995-06-01 | 1997-12-16 | Ncr Corporation | Reliable datagram service provider for fast messaging in a clustered environment |
US7565406B2 (en) * | 2002-07-24 | 2009-07-21 | Sun Microsystems, Inc. | Last thread lock management for multi-threaded process and distributed data systems |
CN106201357A (zh) * | 2016-07-18 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种存储池的构建方法及*** |
CN106572130A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 用于实现分布式锁管理的方法和设备 |
CN106909384A (zh) * | 2017-02-27 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于集群文件***的sanlock优化方法及装置 |
CN107239238A (zh) * | 2017-07-27 | 2017-10-10 | 郑州云海信息技术有限公司 | 一种基于分布式锁的存储的io操作方法及装置 |
CN107357664A (zh) * | 2017-07-13 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种分布式锁的实现方法和装置 |
CN107517277A (zh) * | 2017-10-09 | 2017-12-26 | 郑州云海信息技术有限公司 | 一种sanlock锁实现方法和装置 |
CN107888689A (zh) * | 2017-11-16 | 2018-04-06 | 无锡地铁集团有限公司 | 基于共享存储的加锁资源配置方法 |
-
2018
- 2018-11-01 CN CN201811291959.XA patent/CN109375988B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699500A (en) * | 1995-06-01 | 1997-12-16 | Ncr Corporation | Reliable datagram service provider for fast messaging in a clustered environment |
US7565406B2 (en) * | 2002-07-24 | 2009-07-21 | Sun Microsystems, Inc. | Last thread lock management for multi-threaded process and distributed data systems |
CN106572130A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 用于实现分布式锁管理的方法和设备 |
CN106201357A (zh) * | 2016-07-18 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种存储池的构建方法及*** |
CN106909384A (zh) * | 2017-02-27 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于集群文件***的sanlock优化方法及装置 |
CN107357664A (zh) * | 2017-07-13 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种分布式锁的实现方法和装置 |
CN107239238A (zh) * | 2017-07-27 | 2017-10-10 | 郑州云海信息技术有限公司 | 一种基于分布式锁的存储的io操作方法及装置 |
CN107517277A (zh) * | 2017-10-09 | 2017-12-26 | 郑州云海信息技术有限公司 | 一种sanlock锁实现方法和装置 |
CN107888689A (zh) * | 2017-11-16 | 2018-04-06 | 无锡地铁集团有限公司 | 基于共享存储的加锁资源配置方法 |
Non-Patent Citations (1)
Title |
---|
王志翔: "面向高并发数据访问的并行I/O性能优化机制研究", 《万方平台》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109375988B (zh) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372802B2 (en) | Virtual RDMA switching for containerized applications | |
US8429675B1 (en) | Virtual machine communication | |
US10423332B2 (en) | Fibre channel storage array having standby controller with ALUA standby mode for forwarding SCSI commands | |
US8443231B2 (en) | Updating a list of quorum disks | |
US11698759B2 (en) | Resolving failed or hanging mount points in a clustered storage solution for containers | |
US8756601B2 (en) | Memory coherency acceleration via virtual machine migration | |
AU2012304549B2 (en) | Clustered client failover | |
EP3815294B1 (en) | Method and apparatus for implementing a distributed blockchain transaction processing element in a datacenter | |
US10838977B2 (en) | Key-value replication with consensus protocol | |
US11917023B2 (en) | Fast session restoration for latency sensitive middleboxes | |
US20170277469A1 (en) | Small storage volume management | |
CN113342422A (zh) | 一种Linux兼容Android的多应用访问摄像头方法及装置 | |
US10979303B1 (en) | Segmentation of maintenance on distributed systems | |
CN109375988A (zh) | 一种分布式锁实现方法和装置 | |
CN110018782B (zh) | 一种数据读/写方法及相关装置 | |
US11899935B2 (en) | System and method for user space NVMe-over-RDMA host library | |
US11119994B1 (en) | Record-by-record live migration using segmentation | |
CN110058790B (zh) | 用于存储数据的方法、设备和计算机程序产品 | |
CN106302733A (zh) | 一种分布式集群融合nfs协议的实现方法及装置 | |
CN109358966A (zh) | 一种存储业务管理方法和装置 | |
US20230028407A1 (en) | In-band modification of event notification preferences for server events | |
US20170060632A1 (en) | Data plane resource allocation | |
US10642701B2 (en) | Releasing space on secondary storage device for resynchronization | |
CN106293678B (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 |