本说明书一个或多个实施例涉及数据库,尤其涉及一种远程锁等待管理方法及装置、电子设备及存储介质。
背景技术:
1、在互联网和信息化高速发展的今天,数据的产生呈爆炸式增长,因此对数据库及其管理的要求越来越高。数据库在执行sql请求等数据处理任务时,往往需要向所针对的数据资源添加锁,例如共享锁、排它锁等,以在数据资源并发访问时保持数据的一致性和事务的隔离性。这就使得,不同的数据处理任务可能会在同一数据资源上发生锁冲突,即多个数据处理任务均需向同一数据资源加锁而无法同时实现。面对上述锁冲突问题,单个数据库实例往往使用锁等待队列的方式进行锁等待管理,以使不同任务依次对数据资源加锁。
2、但是相关技术中,面对上述锁冲突问题,分布式数据库中的远程数据处理任务不存在有效的锁等待管理,往往只能使发生锁冲突的数据处理任务不断重试,直至能够对数据资源加锁,这导致计算资源和数据库实例间带宽的浪费较多,进而影响了分布式数据库的数据处理效果和用户的使用体验。
技术实现思路
1、有鉴于此,本说明书一个或多个实施例提供一种远程锁等待管理方法及装置、电子设备及存储介质。
2、为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
3、根据本说明书一个或多个实施例的第一方面,提出了一种远程锁等待管理方法,所述方法包括:
4、接收并执行控制节点发送的目标任务,若在所述目标任务针对的第一数据上发生锁冲突,则向所述控制节点发送携带所述第一数据的锁冲突信息;
5、若接收到所述控制节点发送的携带所述第一数据的锁等待消息,则将所述目标任务添加至所述第一数据对应的锁等待队列,其中,所述控制节点若将所述目标任务添加所述第一数据对应的锁等待队列,则向所述执行节点发送携带所述第一数据的锁等待消息;
6、若所述第一数据被释放,且所述目标任务为所述第一数据对应的锁等待队列内首个任务,则向所述控制节点发送携带所述目标任务的重试消息,以使所述控制节点重试所述目标任务。
7、在本说明书一个可能的实施例中,所述控制节点在接收到一个执行节点发送的锁冲突信息时将所述目标任务添加至所述锁冲突信息所携带的数据对应的锁等待队列、在接收到多个执行节点发送的锁冲突信息时将所述目标任务添加至接收到的多个锁冲突信息中一个锁冲突信息所携带的数据对应的锁等待队列;
8、所述控制节点在将所述目标任务添加至锁等待队列之后,向对应的执行节点返回锁等待消息。
9、在本说明书一个可能的实施例中,所述若接收到所述控制节点发送的携带所述第一数据的锁等待消息,则将所述目标任务添加至所述第一数据对应的锁等待队列,包括:
10、若在接收到所述控制节点发送的携带所述第一数据的锁等待消息之后所述第一数据未被释放,则将所述目标任务添加至所述第一数据对应的锁等待队列。
11、在本说明书一个可能的实施例中,所述方法还包括:
12、若在接收到所述控制节点发送的携带所述第一数据的锁等待消息之后所述第一数据已被释放,则向所述控制节点发送重试消息,以使所述控制节点重试所述目标任务。
13、在本说明书一个可能的实施例中,所述方法还包括:
14、接收并执行所述控制节点在重试所述目标任务时发送的所述目标任务,若在所述目标任务针对的第二数据上发生锁冲突,则向所述控制节点发送携带所述第二数据的锁冲突信息,以使所述控制节点向所述执行节点发送携带所述第一数据的释放消息,其中,所述第一数据和所述第二数据不同;
15、若接收到所述控制节点发送的携带所述第一数据的释放消息,将所述第一数据释放。
16、在本说明书一个可能的实施例中,所述方法还包括:
17、若所述第一数据被释放,且所述目标任务为所述第一数据对应的锁等待队列内首个任务,为所述锁等待队列内第二个任务添加重试等待时长;
18、若向所述控制节点发送携带所述目标任务的重试消息之后的时长达到所述重试等待时长,且未接收到所述控制节点在重试所述目标任务时发送的所述目标任务,则向控制节点发送携带所述第二个任务的重试消息,以使所述控制节点重试所述目标任务。
19、在本说明书一个可能的实施例中,所述方法还包括:
20、接收并执行所述控制节点在重试所述目标任务时发送的所述目标任务,若在所述目标任务针对的所述第一数据上发生锁冲突,则去除所述第二个任务上所添加的重试等待时长。
21、根据本说明书一个或多个实施例的第二方面,提出了一种远程锁等待管理方法,所述方法包括:
22、将所述目标任务发送至执行节点,以使所述执行节点执行所述目标任务,其中,所述执行节点若在所述目标任务针对的第一数据上发生锁冲突,则向控制节点发送携带所述第一数据的锁冲突信息;
23、若接收到所述执行节点发送的携带所述第一数据的锁冲突信息,并将所述目标任务添加至所述第一数据对应的锁等待队列,则向所述执行节点发送携带所述第一数据的锁等待消息,以使所述执行节点将所述目标任务添加至所述第一数据对应的锁等待队列;
24、若接收到所述执行节点发送的携带所述目标任务的重试消息,则重试所述目标任务,其中,所述执行节点在所述第一数据被释放,且所述目标任务为所述第一数据对应的锁等待队列内首个任务的情况下,向所述控制节点发送携带所述目标任务的重试消息。
25、在本说明书一个可能的实施例中,所述将所述目标任务发送至执行节点,以使所述执行节点执行所述目标任务,包括:
26、将所述目标任务发送至至少一个执行节点,以使所述至少一个执行节点执行所述目标任务,其中,所述至少一个执行节点中每个执行节点在所述目标任务针对的数据上发生锁冲突时,均向所述控制节点发送携带发生锁冲突的数据的锁冲突信息。
27、在本说明书一个可能的实施例中,所述方法还包括:
28、若接收到一个执行节点发送的锁冲突信息,则将所述目标任务添加至所述锁冲突信息所携带的数据对应的锁等待队列,若接收到多个执行节点发送的锁冲突信息,则将所述目标任务添加至所述多个锁冲突信息中一个锁冲突信息所携带的数据对应的锁等待队列;
29、在将所述目标任务添加至锁等待队列之后,向对应的执行节点返回锁等待消息。
30、在本说明书一个可能的实施例中,所述执行节点若在接收到所述控制节点发送的锁等待消息之后所述第一数据已被释放,则向所述控制节点发送携带所述目标任务的重试消息。
31、在本说明书一个可能的实施例中,所述执行节点在重试所述目标任务的过程中若在所述目标任务针对的第二数据上发生锁冲突,则向所述控制节点发送携带所述第二数据的锁冲突信息,其中,所述第一数据与所述第二数据不同;
32、所述方法还包括:
33、在重试所述目标任务的情况下,若接收到所述执行节点发送的携带所述第二数据的锁冲突信息,向所述执行节点发送针对所述第一数据的释放消息,以使所述执行节点将所述第一数据释放。
34、在本说明书一个可能的实施例中,所述方法还包括:
35、周期性探测所述执行节点的状态;
36、若在探测所述执行节点的状态时确定所述执行节点状态异常,则重试所述目标任务。
37、根据本说明书一个或多个实施例的第三方面,提出了一种远程锁等待管理装置,所述装置包括:
38、锁冲突模块,用于接收并执行控制节点发送的目标任务,若在所述目标任务针对的第一数据上发生锁冲突,则向所述控制节点发送携带所述第一数据的锁冲突信息;
39、锁等待模块,用于若接收到所述控制节点发送的携带所述第一数据的锁等待消息,则将所述目标任务添加至所述第一数据对应的锁等待队列,其中,所述控制节点若将所述目标任务添加所述第一数据对应的锁等待队列,则向所述执行节点发送携带所述第一数据的锁等待消息;
40、锁释放模块,用于若所述第一数据被释放,且所述目标任务为所述第一数据对应的锁等待队列内首个任务,则向所述控制节点发送携带所述目标任务的重试消息,以使所述控制节点重试所述目标任务。
41、在本说明书一个可能的实施例中,所述控制节点在接收到一个执行节点发送的锁冲突信息时将所述目标任务添加至所述锁冲突信息所携带的数据对应的锁等待队列、在接收到多个执行节点发送的锁冲突信息时将所述目标任务添加至接收到的多个锁冲突信息中一个锁冲突信息所携带的数据对应的锁等待队列;
42、所述控制节点在将所述目标任务添加至锁等待队列之后,向对应的执行节点返回锁等待消息。
43、在本说明书一个可能的实施例中,所述锁等待模块用于:
44、若在接收到所述控制节点发送的携带所述第一数据的锁等待消息之后所述第一数据未被释放,则将所述目标任务添加至所述第一数据对应的锁等待队列。
45、在本说明书一个可能的实施例中,所述重试模块还用于:
46、若在接收到所述控制节点发送的携带所述第一数据的锁等待消息之后所述第一数据已被释放,则向所述控制节点发送重试消息,以使所述控制节点重试所述目标任务。
47、在本说明书一个可能的实施例中,所述装置还包括队列更新模块,用于:
48、接收并执行所述控制节点在重试所述目标任务时发送的所述目标任务,若在所述目标任务针对的第二数据上发生锁冲突,则向所述控制节点发送携带所述第二数据的锁冲突信息,以使所述控制节点向所述执行节点发送携带所述第一数据的释放消息,其中,所述第一数据和所述第二数据不同;
49、若接收到所述控制节点发送的携带所述第一数据的释放消息,将所述第一数据释放。
50、在本说明书一个可能的实施例中,所述重试模块还用于:
51、若所述第一数据被释放,且所述目标任务为所述第一数据对应的锁等待队列内首个任务,为所述锁等待队列内第二个任务添加重试等待时长;
52、若向所述控制节点发送携带所述目标任务的重试消息之后的时长达到所述重试等待时长,且未接收到所述控制节点在重试所述目标任务时发送的所述目标任务,则向控制节点发送携带所述第二个任务的重试消息,以使所述控制节点重试所述目标任务。
53、在本说明书一个可能的实施例中,所述重试模块还用于:
54、接收并执行所述控制节点在重试所述目标任务时发送的所述目标任务,若在所述目标任务针对的所述第一数据上发生锁冲突,则去除所述第二个任务上所添加的重试等待时长。
55、根据本说明书一个或多个实施例的第四方面,提出了一种远程锁等待管理装置,所述方法包括:
56、发送模块,用于将所述目标任务发送至执行节点,以使所述执行节点执行所述目标任务,其中,所述执行节点若在所述目标任务针对的第一数据上发生锁冲突,则向控制节点发送携带所述第一数据的锁冲突信息;
57、通知模块,用于若接收到所述执行节点发送的携带所述第一数据的锁冲突信息,并将所述目标任务添加至所述第一数据对应的锁等待队列,则向所述执行节点发送携带所述第一数据的锁等待消息,以使所述执行节点将所述目标任务添加至所述第一数据对应的锁等待队列;
58、重试模块,用于若接收到所述执行节点发送的携带所述目标任务的重试消息,则重试所述目标任务,其中,所述执行节点在所述第一数据被释放,且所述目标任务为所述第一数据对应的锁等待队列内首个任务的情况下,向所述控制节点发送携带所述目标任务的重试消息。
59、在本说明书一个可能的实施例中,所述发送模块用于:
60、将所述目标任务发送至至少一个执行节点,以使所述至少一个执行节点执行所述目标任务,其中,所述至少一个执行节点中每个执行节点在所述目标任务针对的数据上发生锁冲突时,均向所述控制节点发送携带发生锁冲突的数据的锁冲突信息。
61、在本说明书一个可能的实施例中,所述装置还包括队列选择模块,用于:
62、若接收到一个执行节点发送的锁冲突信息,则将所述目标任务添加至所述锁冲突信息所携带的数据对应的锁等待队列,若接收到多个执行节点发送的锁冲突信息,则将所述目标任务添加至所述多个锁冲突信息中一个锁冲突信息所携带的数据对应的锁等待队列;
63、在将所述目标任务添加至锁等待队列之后,向对应的执行节点返回锁等待消息。
64、在本说明书一个可能的实施例中,所述执行节点若在接收到所述控制节点发送的锁等待消息之后所述第一数据已被释放,则向所述控制节点发送携带所述目标任务的重试消息。
65、在本说明书一个可能的实施例中,所述执行节点在重试所述目标任务的过程中若在所述目标任务针对的第二数据上发生锁冲突,则向所述控制节点发送携带所述第二数据的锁冲突信息,其中,所述第一数据与所述第二数据不同;
66、所述装置还包括队列更新模块,用于:
67、在重试所述目标任务的情况下,若接收到所述执行节点发送的携带所述第二数据的锁冲突信息,向所述执行节点发送针对所述第一数据的释放消息,以使所述执行节点将所述第一数据释放。
68、在本说明书一个可能的实施例中,所述装置还包括探测模块,用于:
69、周期性探测所述执行节点的状态;
70、若在探测所述执行节点的状态时确定所述执行节点状态异常,则重试所述目标任务。
71、根据本说明书一个或多个实施例的第五方面,提出了一种计算机程序产品,包括计算机程序/指令,该计算程序/指令被处理器执行时实现第一方面或第二方面所述方法的步骤。
72、根据本说明书一个或多个实施例的第六方面,提出了一种电子设备,包括:
73、处理器;
74、用于存储处理器可执行指令的存储器;
75、其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。
76、根据本说明书一个或多个实施例的第七方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。
77、根据本说明书一个或多个实施例的第八方面,提出了一种分布式数据库系统,所述系统包括:
78、至少一个执行节点,所述执行节点用于在执行控制节点下发的远程任务时向所述控制节点上报锁冲突信息、将所述远程任务添加至所述锁冲突信息涉及的数据对应的锁等待队列中,以及在所述锁冲突信息涉及的数据被释放且所述远程任务处于所在的锁等待队列队首的情况下,远程通知所述控制节点重试所述远程任务;
79、至少一个控制节点,所述控制节点用于向执行节点下发远程任务、根据所述执行节点上报的锁冲突信息将所述远程任务添加至锁等待队列中、以及根据所述执行节点的远程通知对所述远程任务进行重试。
80、示例性的,所述执行节点用于运行第一方面所述的远程锁等待管理方法。
81、示例性的,所述控制节点用于运行第二方面所述的远程锁等待管理方法。
82、本说明书的实施例提供的技术方案可以包括以下有益效果:
83、本说明书实施例所提供的远程锁等待管理方法,控制节点在首次执行或重试目标任务时会将目标任务下发至执行节点,执行节点在执行目标任务的过程中若在目标任务针对的第一数据上发生锁冲突,则向所述控制节点发送携带所述第一数据的锁冲突信息,以通知控制节点目标任务在第一数据上发上了锁冲突;执行节点可以将目标任务添加至第一数据对应的锁等待队列并向执行节点返回锁等待消息,以通知执行节点目标任务已添加至第一数据对应的锁等待队列;执行节点则可以在接收到锁等待消息后也将目标任务添加至第一数据对应的锁等待队列,并在第一数据被释放且目标任务为队首时通过重试消息通知控制节点对目标任务进行重试。可见,该方法通过执行节点向控制节点上报锁冲突信息和重试消息的方式实现远程锁等待管理,使得分布式数据库中的远程数据处理任务也能够进行有效的锁等待管理,从而避免发生锁冲突后的远程数据处理任务不断重试而导致计算资源和数据库实例间带宽的浪费,以提高分布式数据库的数据处理效果和用户的使用体验。
1.一种远程锁等待管理方法,所述方法包括:
2.根据权利要求1所述的远程锁等待管理方法,所述控制节点在接收到一个执行节点发送的锁冲突信息时将所述目标任务添加至所述锁冲突信息所携带的数据对应的锁等待队列、在接收到多个执行节点发送的锁冲突信息时将所述目标任务添加至接收到的多个锁冲突信息中一个锁冲突信息所携带的数据对应的锁等待队列;
3.根据权利要求1所述的远程锁等待管理方法,所述若接收到所述控制节点发送的携带所述第一数据的锁等待消息,则将所述目标任务添加至所述第一数据对应的锁等待队列,包括:
4.根据权利要求3所述的远程锁等待管理方法,所述方法还包括:
5.根据权利要求1所述的远程锁等待管理方法,所述方法还包括:
6.根据权利要求1所述的远程锁等待管理方法,所述方法还包括:
7.根据权利要求6所述的远程锁等待管理方法,所述方法还包括:
8.一种远程锁等待管理方法,所述方法包括:
9.根据权利要求8所述的远程锁等待管理方法,所述将所述目标任务发送至执行节点,以使所述执行节点执行所述目标任务,包括:
10.根据权利要求9所述的远程锁等待管理方法,所述方法还包括:
11.根据权利要求8所述的远程锁等待管理方法,所述执行节点若在接收到所述控制节点发送的锁等待消息之后所述第一数据已被释放,则向所述控制节点发送携带所述目标任务的重试消息。
12.根据权利要求8所述的远程锁等待管理方法,所述执行节点在重试所述目标任务的过程中若在所述目标任务针对的第二数据上发生锁冲突,则向所述控制节点发送携带所述第二数据的锁冲突信息,其中,所述第一数据与所述第二数据不同;
13.根据权利要求8所述的远程锁等待管理方法,所述方法还包括:
14.一种远程锁等待管理装置,所述装置包括:
15.根据权利要求14所述的远程锁等待管理装置,所述锁等待模块用于:
16.根据权利要求15所述的远程锁等待管理装置,所述重试模块还用于:
17.根据权利要求14所述的远程锁等待管理装置,所述重试模块还用于:
18.根据权利要求17所述的远程锁等待管理装置,所述重试模块还用于:
19.一种远程锁等待管理装置,所述装置包括:
20.根据权利要求19所述的远程锁等待管理装置,所述发送模块用于:
21.根据权利要求20所述的远程锁等待管理装置,所述装置还包括队列选择模块,用于:
22.根据权利要求19所述的远程锁等待管理装置,所述执行节点在重试所述目标任务的过程中若在所述目标任务针对的第二数据上发生锁冲突,则向所述控制节点发送携带所述第二数据的锁冲突信息,其中,所述第一数据与所述第二数据不同;
23.根据权利要求19所述的远程锁等待管理装置,所述装置还包括探测模块,用于:
24.一种计算机程序产品,包括计算机程序/指令,该计算程序/指令被处理器执行时实现权利要求1至13中任一项所述方法的步骤。
25.一种电子设备,包括:
26.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至13中任一项所述方法的步骤。
27.一种分布式数据库系统,所述系统包括:
28.根据权利要求27所述的数据库系统,所述执行节点用于运行如权利要求1至7中任一项所述的远程锁等待管理方法。
29.根据权利要求27所述的数据库系统,所述控制节点用于运行如权利要求8至13中任一项所述的远程锁等待管理方法。
