CN103701770A - 一种基于租约机制的异常解锁方法 - Google Patents
一种基于租约机制的异常解锁方法 Download PDFInfo
- Publication number
- CN103701770A CN103701770A CN201310603001.0A CN201310603001A CN103701770A CN 103701770 A CN103701770 A CN 103701770A CN 201310603001 A CN201310603001 A CN 201310603001A CN 103701770 A CN103701770 A CN 103701770A
- Authority
- CN
- China
- Prior art keywords
- server
- service
- lease
- lock
- method based
- 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.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明提供一种基于租约机制的异常解锁方法,包括以下步骤:步骤S10.第一服务加锁并定义锁的租约期限;步骤S11.第一服务器执行第一服务时,每隔第一时长减少一部分锁的租约期限;步骤S12.第二服务器执行第二服务时,每隔第二时长复原锁的租约期限;步骤S13.第一服务器上的第一服务检测到租约期限为零时自己解锁;步骤S14.第二服务器执行完第二服务时对第一服务器上的第一服务执行解锁。本发明提供的方法,在服务器宕机的情况下,会自动解锁,使服务器正常工作。
Description
技术领域
本发明涉及云服务器技术领域,具体涉及一种基于租约机制的异常解锁方法。
背景技术
复杂软件一般由运行在不同的服务器上的服务共同协调完成一项复杂的功能。为了协调和控制不同服务访问关键资源,需要用到互斥锁或者共享锁。
互斥锁(英语:Mutual exclusion,缩写Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。互斥锁通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行访问的代码。
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。
在复杂软件中加锁和解锁的服务可能会分布在不同物理服务器上。某一个服务对关键资源加上锁以后,由于网络异常或者另一个负责解锁的服务所在服务器宕机可能会导致没有人来解锁。如果锁没有解,那所有其他服务都有可能都访问不了这些关键资源,最终导致软件中某些功能提供不了服务,最坏的结果甚至是整个系统崩溃,软件停止服务。
因此,有必要提出一种服务器异常解锁方法以解决上述的问题。
发明内容
本发明的一种基于租约机制的异常解锁方法,在服务器宕机的情况下,会自动解锁。
本发明提供了一种基于租约机制的异常解锁方法:包括以下步骤:
步骤S10,第一服务加锁并定义锁的租约期限;
步骤S11,第一服务器执行第一服务时,每隔第一时长减少一部分锁的租约期限;
步骤S12,第二服务器执行第二服务时,每隔第二时长复原锁的租约期限;
步骤S13,第一服务器上的第一服务检测到租约期限为零时自己解锁;
步骤S14,第二服务器执行完第二服务时对第一服务器上的第一服务执行解锁。
进一步地,还包括步骤S15,第一服务器重启时自己解锁。
更进一步地,其中所述步骤S12包括以下步骤:
步骤S1201,第一服务器向第二服务器发送执行第二服务的请求;
步骤S1202,第二服务器收到所述请求时执行第二服务。
更进一步地,其中所述步骤S12中,在第二服务器故障的情况下,通过所述步骤S13执行解锁。
更进一步地,其中所述步骤S12中,在第一服务器不能向第二服务器发送所述请求或第二服务器不能收到第一服务器发送的请求的情况下,通过所述步骤S13执行解锁。
更进一步地,其中所述步骤S13中,在第一服务器故障的情况下,通过所述步骤S14执行解锁。
更进一步地,其中所述步骤S13和步骤S14中,在所述第一服务器和第二服务器都故障的情况下,通过所述步骤S15执行解锁。
本发明具有以下的优点:
本发明的基于租约机制的异常解锁方法,在服务器宕机的情况下,自动解锁,缩短了服务器异常宕机后的恢复时间,能够更快地恢复服务器以及网络运营,节约了人力和物力成本,使快速恢复服务器异常宕机的技术迈上了一个新台阶,对于企业的运营、生产和生活都会带来了一定意义的好处。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
附图说明
图1是本发明的基于租约机制的异常解锁方法的原理示意图;
图2是本发明的基于租约机制的异常解锁方法的流程图;
图3是本发明的基于租约机制的异常解锁方法中第二服务器执行第二服务时,每隔第二时长复原锁的租约期限的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
所谓租约,是指服务器给予客户端在一定期限内可以控制修改操作的权力。如果服务器要修改数据,首先要征求拥有这块数据的租约的客户端的同意,之后才可以修改。客户端从服务器读取数据时往往就同时获取租约,在租约期限内,如果没有收到服务器的修改请求,就可以保证当前缓存中的内容就是最新的。如果在租约期限内收到了修改数据的请求并且同意了,就需要清空缓存。在租约过期以后,客户端如果还要从缓存读取数据,就必须重新获取租约,通常称这个操作为“续约”。
在租约期限内,客户端可以保证其缓存中的数据是最新的。同时,租约可以容忍各种非失效(机器崩溃、网络分割等)。如果客户端崩溃或者网络中断,服务器只需要等待其租约过期就可以进行修改操作。如果服务器出错丢失了所有客户端的信息,则只需要知道租约的最长期限,就可以在这个期限过后安全的修改数据。与回调方式相比,服务器只需记住还拥有租约的客户端即可。
图1显示了本发明的基于租约机制的异常解锁方法的原理示意图。
如图1所示,本发明的基于租约机制的异常解锁方法基于分布在不同物理服务器上的服务来实现。
具体来说,在第一服务器上执行第一服务会对某关键资源加锁,第一服务是基于租约机制而加锁,并设置了锁的租约期限,当锁的租约期限用完时,第一服务器会自解锁。另外,第二服务器会与第一服务器同时运行并共享上述资源,因此第一服务器中设置的锁为共享锁,用于第一服务器和第二服务器共享某项资源,两个服务器同时运行各自的服务,共同协调完成一项复杂的功能。
进一步,第一服务器会请求另一第二服务器同时运行第二服务并来执行解锁。由此,即使在第一服务器或网络故障的情况下,也能实现正常解锁,释放被第一服务占用的资源。
图2显示了本发明的基于租约机制的异常解锁方法的流程图。
如图2所示,本发明的基于租约机制的异常解锁方法包括以下步骤:
步骤S10,第一服务加锁并定义锁的租约期限。
第一服务器上的第一服务加锁,并定义该锁的租约期限。例如,该租约期限为30分钟。第一服务器在开始执行服务时使用了某项资源,会基于租约机制对该资源加锁,同时设置锁的租约期限,该租约期限的意义在于,当租约期限结束时,表示租约到期,服务器自动解锁,释放占用的资源。
步骤S11,第一服务器执行第一服务时,每隔第一时长减少一部分锁的租约期限。例如,该第一时长为5分钟。第一服务器在执行第一服务时会逐渐减少锁的租约期限,直至租约期限减少到0,第一服务器检测到租约期限为0时自己解锁。
步骤S12,第二服务器执行第二服务时,每隔第二时长复原锁的租约期限。例如,该第二时长为1分钟。第一服务器在执行第一服务时会通知第二服务器执行第二服务,第二服务器接收到请求后执行自己的第二服务,同时每隔一段时间把第一服务器的锁的租约期限复原。实现第一服务器上的第一服务服务和第二服务器上的第二服务服务同时共享同一资源。
步骤S13,第一服务器上的第一服务检测到租约期限为零时自己解锁。
步骤S14,第二服务器执行完第二服务时对第一服务器上的第一服务执行解锁。第二服务器执行完第二服务后对第一服务器执行解锁,同时删除第一服务器中的租约。其中步骤S14在步骤S13中所述的租约期限不为零的情况下执行,如果步骤S13中第一服务器上的第一服务检测到租约期限为零时,第一服务器上的第一服务自己已经解锁,不用执行步骤S14。
可选的,还包括步骤S15,第一服务器重启时自己解锁。
图3为本发明的方法步骤中的S12的流程图。
参考图3,如图3所示,
所述步骤S12包括:
步骤S1201,第一服务器向第二服务器发送执行第二服务的请求;
步骤S1202,第二服务器收到所述请求时执行第二服务。
所述步骤S12中,第二服务器执行第二服务时,每隔第二时长复原锁的租约期限中,如果第二服务器故障,则通过所述步骤S13第一服务器上的第一服务检测到租约期限为零时自己解锁执行解锁。不影响软件的正确性。例如,所述第二服务器故障为第二服务器宕机。
所述步骤S12第二服务器执行第二服务时,每隔第二时长复原锁的租约期限中,如果第一服务器不能向第二服务器发送所述请求或第二服务器不能收到第一服务器发送的请求,则通过所述步骤S13第一服务器上的第一服务检测到租约期限为零时自己解锁执行解锁。不影响软件的正确性。
所述步骤S13第一服务器上的第一服务检测到租约期限为零时自己解锁中,如果第一服务器故障,则通过所述步骤S14,第二服务器执行完第二服务时对第一服务器上的第一服务执行解锁,不影响软件的正确性。例如,所述第一服务器故障为第一服务器宕机。
所述步骤S13第一服务器上的第一服务检测到租约期限为零时自己解锁和步骤S14第二服务器执行完第二服务时对第一服务器上的第一服务执行解锁中,如果所述第一服务器和第二服务器都故障,则通过所述步骤S15第一服务器重启时自己解锁执行解锁。不影响软件的正确性。
通常来说,上述第二服务器是与第一服务器共享某资源,共用共享锁的服务器。
根据以上步骤,在任何异常情况下,第一服务的锁都会解除,不会出现第一服务对关键资源加上锁以后,由于网络异常或者第二服务所在服务器宕机可能会导致没有人来解锁,锁没有解,从而其他服务都有可能都访问不了这些关键资源,最终导致软件中某些功能提供不了服务,甚至是整个系统崩溃,软件停止服务的情况发生。
综上所述,本发明的基于租约机制的异常解锁方法,在服务器宕机的情况下,自动解锁,缩短了服务器异常宕机后的恢复时间,能够更快地恢复服务器以及网络运营。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (7)
1.一种基于租约机制的异常解锁方法,其特征在于:包括以下步骤:
步骤S10,第一服务加锁并定义锁的租约期限;
步骤S11,第一服务器执行第一服务时,每隔第一时长减少一部分锁的租约期限;
步骤S12,第二服务器执行第二服务时,每隔第二时长复原锁的租约期限;
步骤S13,第一服务器上的第一服务检测到租约期限为零时自己解锁;
步骤S14,第二服务器执行完第二服务时对第一服务器上的第一服务执行解锁。
2.根据权利要求1所述的基于租约机制的异常解锁方法,还包括步骤S15,第一服务器重启时自己解锁。
3.根据权利要求1所述的基于租约机制的异常解锁方法,所述步骤S12包括以下步骤:
步骤S1201,第一服务器向第二服务器发送执行第二服务的请求;
步骤S1202,第二服务器收到所述请求时执行第二服务。
4.根据权利要求1或3所述的基于租约机制的异常解锁方法,其中所述步骤S12中,在第二服务器故障的情况下,通过所述步骤S13执行解锁。
5.根据权利要求1或3所述的基于租约机制的异常解锁方法,其中所述步骤S12中,在第一服务器不能向第二服务器发送所述请求或第二服务器不能收到第一服务器发送的请求的情况下,通过所述步骤S13执行解锁。
6.根据权利要求1或3所述的基于租约机制的异常解锁方法,其中所述步骤S13中,在第一服务器故障的情况下,通过所述步骤S14执行解锁。
7.根据权利要求1或3所述的基于租约机制的异常解锁方法,其中所述步骤S13和步骤S14中,在所述第一服务器和第二服务器都故障的情况下,通过所述步骤S15执行解锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310603001.0A CN103701770A (zh) | 2013-11-22 | 2013-11-22 | 一种基于租约机制的异常解锁方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310603001.0A CN103701770A (zh) | 2013-11-22 | 2013-11-22 | 一种基于租约机制的异常解锁方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103701770A true CN103701770A (zh) | 2014-04-02 |
Family
ID=50363167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310603001.0A Pending CN103701770A (zh) | 2013-11-22 | 2013-11-22 | 一种基于租约机制的异常解锁方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103701770A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453471A (zh) * | 2016-07-08 | 2017-02-22 | 合网络技术(北京)有限公司 | 一种基于分布式应用的租约数据的发送及获取方法、装置 |
CN109240840A (zh) * | 2017-07-11 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 集群系统的容灾方法、装置和机器可读介质 |
CN111177197A (zh) * | 2019-12-26 | 2020-05-19 | 北京仁科互动网络技术有限公司 | 一种缓存处理方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1980236A (zh) * | 2005-12-09 | 2007-06-13 | 英业达股份有限公司 | 分布式数据动态程序代理方法 |
US20100017409A1 (en) * | 2004-02-06 | 2010-01-21 | Vmware, Inc. | Hybrid Locking Using Network and On-Disk Based Schemes |
CN102355473A (zh) * | 2011-06-28 | 2012-02-15 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
US8296599B1 (en) * | 2009-06-30 | 2012-10-23 | Symantec Corporation | System and method for implementing clustered network file system lock management |
CN102968486A (zh) * | 2012-11-26 | 2013-03-13 | 国电南瑞科技股份有限公司 | 一种基于变化日志的高可靠文件同步方法 |
CN103067471A (zh) * | 2012-12-24 | 2013-04-24 | 北京华科力扬科技有限公司 | 一种分布式存储的数据获取方法 |
-
2013
- 2013-11-22 CN CN201310603001.0A patent/CN103701770A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100017409A1 (en) * | 2004-02-06 | 2010-01-21 | Vmware, Inc. | Hybrid Locking Using Network and On-Disk Based Schemes |
CN1980236A (zh) * | 2005-12-09 | 2007-06-13 | 英业达股份有限公司 | 分布式数据动态程序代理方法 |
US8296599B1 (en) * | 2009-06-30 | 2012-10-23 | Symantec Corporation | System and method for implementing clustered network file system lock management |
CN102355473A (zh) * | 2011-06-28 | 2012-02-15 | 用友软件股份有限公司 | 分布式计算环境下的锁定控制系统和方法 |
CN102968486A (zh) * | 2012-11-26 | 2013-03-13 | 国电南瑞科技股份有限公司 | 一种基于变化日志的高可靠文件同步方法 |
CN103067471A (zh) * | 2012-12-24 | 2013-04-24 | 北京华科力扬科技有限公司 | 一种分布式存储的数据获取方法 |
Non-Patent Citations (1)
Title |
---|
KEVINFANKAI: "《租约机制简介》", 《租约机制简介-CSDN博客》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453471A (zh) * | 2016-07-08 | 2017-02-22 | 合网络技术(北京)有限公司 | 一种基于分布式应用的租约数据的发送及获取方法、装置 |
CN109240840A (zh) * | 2017-07-11 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 集群系统的容灾方法、装置和机器可读介质 |
CN111177197A (zh) * | 2019-12-26 | 2020-05-19 | 北京仁科互动网络技术有限公司 | 一种缓存处理方法及系统 |
CN111177197B (zh) * | 2019-12-26 | 2023-03-14 | 北京仁科互动网络技术有限公司 | 一种缓存处理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379428B2 (en) | Synchronization of client machines with a content management system repository | |
US11061884B2 (en) | Method and system to accelerate transaction commit using non-volatile memory | |
US10178184B2 (en) | System and method for session handling in a multitenant application server environment | |
US10089185B2 (en) | Multi-threaded smart copy | |
CN107077382B (zh) | 在多租户应用服务器环境中进行事务恢复的系统和方法 | |
CN107070919B (zh) | 用于数据库事务的幂等性 | |
US9934107B1 (en) | Designating backup nodes and backing up in parallel in a high-availability environment | |
US9311199B2 (en) | Replaying jobs at a secondary location of a service | |
US10445186B1 (en) | Associating a guest application within a virtual machine to create dependencies in backup/restore policy | |
US10437788B2 (en) | Automatic detection, retry, and resolution of errors in data synchronization | |
US7366742B1 (en) | System and method for distributed discovery and management of frozen images in a storage environment | |
KR101993432B1 (ko) | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 | |
US10489378B2 (en) | Detection and resolution of conflicts in data synchronization | |
WO2016049376A1 (en) | System and method for supporting patching in a multitenant application server environment | |
US10049022B2 (en) | Systems and methods to retain and reclaim resource locks and client states after server failures | |
US20210026671A1 (en) | Enforcing retention policies with respect to virtual machine snapshots | |
US20210073198A1 (en) | Using persistent memory and remote direct memory access to reduce write latency for database logging | |
US20160070494A1 (en) | Highly performant reliable message storage using in-memory replication technology | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
CN108108119B (zh) | 一种可扩展的存储集群事物的配置方法及装置 | |
CN111666134A (zh) | 一种分布式任务调度的方法和系统 | |
CN103701770A (zh) | 一种基于租约机制的异常解锁方法 | |
US9201685B2 (en) | Transactional cache versioning and storage in a distributed data grid | |
US20240134840A1 (en) | Distributed table lock application methods, apparatuses, storage media, and electronic devices | |
US9418097B1 (en) | Listener event consistency points |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140402 |
|
WD01 | Invention patent application deemed withdrawn after publication |