首页> 中国专利> 服务协调系统以及服务协调方法

服务协调系统以及服务协调方法

摘要

本申请公开了一种服务协调系统以及服务协调方法,该系统包括分布式应用的服务协调系统,用于提供第一锁和第二锁,其中,第一锁支持高于预设级别的服务的优先获取,第二锁支持各个级别的服务的顺序获取;服务器,与分布式应用的服务协调系统通信连接,用于根据服务请求对应的服务向分布式应用的服务协调系统请求第一锁或第二锁,并在同时获取到第一锁和第二锁的情况下,执行服务请求对应的服务。通过本申请,解决了相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题。

著录项

  • 公开/公告号CN113810479A

    专利类型发明专利

  • 公开/公告日2021-12-17

    原文格式PDF

  • 申请/专利权人 山石网科通信技术股份有限公司;

    申请/专利号CN202111017454.6

  • 发明设计人 苏建学;

    申请日2021-08-31

  • 分类号H04L29/08(20060101);

  • 代理机构11240 北京康信知识产权代理有限责任公司;

  • 代理人黄海英

  • 地址 215163 江苏省苏州市高新区景润路181号

  • 入库时间 2023-06-19 13:43:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-01-04

    实质审查的生效 IPC(主分类):H04L29/08 专利申请号:2021110174546 申请日:20210831

    实质审查的生效

说明书

技术领域

本申请涉及服务协调技术领域,具体而言,涉及一种服务协调系统以及服务协调方法。

背景技术

随着计算机业务的迅猛发展,服务器部署系统由传统的单机部署系统逐渐演化成分布式集群系统,由于分布式系统包括多个线程、多个进程,并且分布在不同的机器上,导致单机部署系统中的并发控制锁策略失效,在分布式系统之间进行同步访问共享资源时,需要使用分布式锁进行控制。

为了解决上述问题,相关技术中出现了基于redis(remote dictionary server,远程字典服务)原子命令的分布式锁,但是,一方面,在redis主从结构采用的是主从异步复制的策略,导致短时间内主库和从库数据短暂的不一致,容易破坏锁的互斥性。另一方面,多个服务同时对锁进行抢占时,是完全随机的,无法保证加锁的公平性、优先性。再一方面,某个服务加锁失败后,通常会休眠一段时间之后再进行重试,当锁的持有者持有锁的时间很长时,其它服务会有大量无效的重试操作,造成系统资源的浪费,并且某个服务在调用锁的过程发生崩溃时无法及时释放锁资源,导致其他服务无法正常进行。

针对相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题,目前尚未提出有效的解决方案。

发明内容

本申请提供一种服务协调系统以及服务协调方法,以解决相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题。

根据本申请的一个方面,提供了一种服务协调系统。该服务协调系统包括:分布式应用的服务协调系统,用于提供第一锁和第二锁,其中,第一锁支持高于预设级别的服务的优先获取,第二锁支持各个级别的服务的顺序获取;服务器,与分布式应用的服务协调系统通信连接,用于根据服务请求对应的服务向分布式应用的服务协调系统请求第一锁或第二锁,并在同时获取到第一锁和第二锁的情况下,执行服务请求对应的服务,其中,在服务对应的服务为一级服务的情况下,请求获取第一锁,在获取第一锁之后,持有第一锁并请求获取第二锁,在服务为二级服务的情况下,请求获取第二锁,在获取第二锁之后,请求获取第一锁,并在获取第一锁失败的情况下,释放第二锁,其中,一级服务的级别高于二级服务。

可选的,根据本申请的另一个方面,提供了一种服务协调方法,应用于上述的服务协调系统中,该方法包括:在当前服务请求对应的服务为一级服务的情况下,请求获取第一锁;在成功获取第一锁的情况下,请求获取第二锁;在成功获取第二锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。

可选的,在当前服务请求对应的服务为一级服务的情况下,请求获取第一锁之后,该方法还包括:在请求获取第一锁失败的情况下,等待当前持有第一锁的服务释放第一锁;在当前持有第一锁的服务释放第一锁的情况下,获取第一锁。

可选的,在成功获取第一锁的情况下,请求获取第二锁之后,该方法还包括:在请求获取第二锁失败的情况下,等待上一持有第二锁的服务释放第二锁;在当前持有第二锁的服务释放第二锁的情况下,获取第二锁。

可选的,在成功获取第二锁的情况下,释放第一锁,并执行服务请求所对应的服务之后,该方法还包括:在服务执行完毕的情况下,释放第二锁;或者在服务执行失败的情况下,释放第二锁。

可选的,根据本申请的另一个方面,提供了另一种服务协调方法,应用于上述的服务协调系统中,该方法包括:在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁;在成功获取第二锁的情况下,请求获取第一锁;在成功获取第一锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。

可选的,在在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁之后,该方法还包括:在请求获取第二锁失败的情况下,等待上一持有第二锁的服务释放第二锁;在当前持有第二锁的服务释放第二锁的情况下,获取第二锁。

可选的,在成功获取第二锁的情况下,请求获取第一锁之后,该方法还包括:在请求获取第一锁失败的情况下,释放第二锁,并在目标服务释放第二锁之后,请求获取第二锁,其中,在当前服务请求之前不存在未执行的二级服务的情况下,目标服务为当前持有一级锁的一级服务;在当前服务请求之前存在未执行的二级服务的情况下,目标服务为当前服务的前一个未执行的二级服务。

可选的,在在成功获取第一锁的情况下,释放第一锁,并执行服务请求所对应的服务之后,该方法还包括:在服务执行完毕的情况下,释放第二锁;或者在服务执行失败的情况下,释放第二锁。

可选的,释放第一锁,并执行服务请求所对应的服务包括:在执行服务请求所对应的服务之前,释放第一锁;或者在执行服务请求所对应的服务的过程中,释放第一锁;或者在执行服务请求所对应的服务之后,释放第一锁。

根据本发明实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制非易失性存储介质所在的设备执行一种服务协调方法。

根据本发明实施例的另一方面,还提供了一种电子装置,包含处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种服务协调方法。

通过本申请,采用一种服务协调系统,包括:分布式应用的服务协调系统,用于提供第一锁和第二锁,其中,第一锁支持高于预设级别的服务的优先获取,第二锁支持各个级别的服务的顺序获取;服务器,与分布式应用的服务协调系统通信连接,用于根据服务请求对应的服务向分布式应用的服务协调系统请求第一锁或第二锁,并在同时获取到第一锁和第二锁的情况下,执行服务请求对应的服务,其中,在服务对应的服务为一级服务的情况下,请求获取第一锁,在获取第一锁之后,持有第一锁并请求获取第二锁,在服务为二级服务的情况下,请求获取第二锁,在获取第二锁之后,请求获取第一锁,并在获取第一锁失败的情况下,释放第二锁,其中,一级服务的级别高于二级服务,解决了相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题,通过使用第一锁和第二锁对不同级别的服务交替加锁,进而达到了在保证同一级别的服务顺序执行的同时,保证高级别的服务得以提前执行的效果。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例提供的一种服务系统的示意图。

图2为根据本申请实施例的一种服务协调方法的示意图。

图3为根据本申请实施例的另一种服务协调方法的示意图。

图4是根据本申请实施例提供的一可选的实施方案的具体实施流程示意图。

图5是根据本申请实施例提供的一种服务协调装置的示意图。

图6是根据本申请实施例提供的另一种服务协调装置的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了解决了相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题,相关技术中出现了以下方法:

采用基于zookeeper curator框架的分布式锁对分布式系统访问共享资源的过程进行控制。

需要说明的是,zookeeper是一种分布式应用系统协调服务,zookeeper中规定,在同一时刻,不能有多个客户端创建同一个节点,利用这个特性可以实现分布式锁。

具体实现方式如下,使用zookeeper的临时顺序节点机制,同一时刻某个服务创建共享资源对应的临时顺序节点成功,该服务就持有分布式锁。创建失败的服务自动进行阻塞,并且通过watcher机制监听上一序号的临时顺序节点,每次获取锁的时候判断自己的序号是否为最小,最小即获取到锁,执行完毕就删除当前节点。

一方面,zookeeper临时节点只在会话生命周期存在,会话一结束会自动销毁,可以保证服务崩溃时分布式锁立即释放。另一方面,zookeeper临时顺序节点产生的节点是有序的,可以保证服务调用按序排队,可以保证分布式锁的公平性。再一方面,zookeeper采用watcher机制,在代表锁资源的节点被删除,即可以触发watcher机制解除阻塞重新去获取锁,不用反复休眠并反复尝试加锁,减少系统资源的浪费,这也是zookeeper分布式锁较其他分布式锁方案的一大优势。

但是,该方法还存在以下缺点:多个服务同时对锁进行抢占时,无法区分高优先级的服务,高优先级的服务无法优先执行。

基于此,本申请希望提供一种能够解决上述技术问题的方案,其详细内容将在后续实施例中得以阐述。

本公开实施例提供了一种服务协调系统。图1是根据本申请实施例的服务系统的示意图。如图1所示,该服务系统包括:

分布式应用的服务协调系统101,用于提供第一锁和第二锁,其中,第一锁支持高于预设级别的服务的优先获取,第二锁支持各个级别的服务的顺序获取。

具体的,分布式应用的服务协调系统101包含第一锁和第二锁,其中第一锁为优先互斥(PriorityMutex)锁,也即优先级锁,用于支持高级别的服务的优先获取,预设级别的服务为第二级别的服务,优先级较低,高于预设级别的服务为高级别服务,高级别的服务可以优先获取第一锁;第二锁为FairMutex(公平互斥)锁,也即公平锁,用于保证服务调用按序排队,可以保证服务调用的公平性,所有级别的服务按时间顺序获取。

例如,当高级别的服务和低级别的服务同时存在时,优先级锁由高级别的服务获取;当高级别的服务在低级别的服务之后创建,公平锁由先创建的低级别的服务获取。

服务器102,与分布式应用的服务协调系统通信连接,用于根据产生的服务请求对应的服务,向分布式应用的服务协调系统请求获取第一锁或第二锁,并在同时获取到第一锁和第二锁的情况下,执行服务请求对应的服务,其中,在服务为一级服务的情况下,先请求获取第一锁,并在获取第一锁之后,请求获取第二锁;在服务为二级服务的情况下,先请求获取第二锁,并在获取第二锁之后,请求获取第一锁,其中,一级服务的级别高于二级服务。

具体的,服务器102可以为多个服务器,多个服务器可以分别发出多条服务执行请求指令。服务执行请求指令对应的服务可以分为一级服务和二级服务,并且一级服务的优先级高于二级服务,两种服务只有在同时获取第一锁和第二锁时才可以执行。

需要说明的是,由于两种服务的优先级不同,所以两种服务获取两种锁的顺序有所差异。例如,一级服务先请求获取优先锁,并在获取优先锁之后请求获取公平锁;二级服务先请求获取公平锁,并在获取公平锁之后请求获取优先锁。

本申请实施例提供的一种服务协调系统,通过分布式应用的服务协调系统101,用于提供第一锁和第二锁,其中,第一锁支持高于预设级别的服务的优先获取,第二锁支持各个级别的服务的顺序获取;服务器102,与分布式应用的服务协调系统通信连接,用于根据服务请求对应的服务向分布式应用的服务协调系统请求第一锁或第二锁,并在同时获取到第一锁和第二锁的情况下,执行服务请求对应的服务,其中,在服务对应的服务为一级服务的情况下,请求获取第一锁,在获取第一锁之后,持有第一锁并请求获取第二锁,在服务为二级服务的情况下,请求获取第二锁,在获取第二锁之后,请求获取第一锁,并在获取第一锁失败的情况下,释放第二锁,其中,一级服务的级别高于二级服务,解决了相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题,通过使用第一锁和第二锁对不同级别的服务交替加锁,进而达到了在保证同一级别的服务顺序执行的同时,保证高级别的服务得以提前执行的效果。

本申请实施例还提供了一种服务协调方法,应用于上述的服务协调系统中,图2为根据本申请实施例的一种服务协调方法的示意图,如图2所示:该方法包括:

步骤S202,在当前服务请求对应的服务为一级服务的情况下,请求获取第一锁。

步骤S204,在成功获取第一锁的情况下,请求获取第二锁。

步骤S206,在成功获取第二锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。

具体的,第一锁为优先级锁,用于支持高级别的服务的优先获取,第二锁为公平锁,用于保证服务调用按序排队,所有级别的服务按时间顺序获取。当前服务为一级服务时,服务优先级高,所以先请求获取优先级锁,当优先级锁没有被其他服务持有时,该一级服务成功获得优先级锁,并请求获取公平锁,当公平锁没有被其他服务持有时,该一级服务成功获得公平锁,此时该一级服务同时获得两个锁,即可执行服务,同时将优先级锁释放,提供给后续服务。

本申请实施例提供的一种服务协调方法,通过在当前服务请求对应的服务为一级服务的情况下,请求获取第一锁;在成功获取第一锁的情况下,请求获取第二锁;在成功获取第二锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。通过使用两个分布式锁按照不同顺序加锁的方法来控制公平性和优先级。进而达到了在保证公平执行的前提下,额外支持优先级锁机制,确保高优先级的动作可以优先被执行的效果。

存在请求获取第一锁时,第一锁正在被其他服务使用的情况,可选地,在本申请实施例提供的服务协调方法中,在当前服务请求对应的服务为一级服务的情况下,请求获取第一锁之后,该方法还包括:在请求获取第一锁失败的情况下,等待当前持有第一锁的服务释放第一锁;在当前持有第一锁的服务释放第一锁的情况下,获取第一锁。

具体的,当有其他服务正在使用优先级锁时,当前一级服务请求获取优先级锁失败,则当前服务阻塞等待,并等待持有优先级锁的服务释放优先级锁;当持有优先级锁的服务释放优先级锁时,当前一级服务立刻获取优先级锁,并请求获取公平锁。

存在请求获取第二锁时,第二锁正在被其他服务使用的情况,可选的,在本申请实施例提供的服务协调方法中,在成功获取第一锁的情况下,请求获取第二锁之后,该方法还包括:在请求获取第二锁失败的情况下,等待上一持有第二锁的服务释放第二锁;在当前持有第二锁的服务释放第二锁的情况下,获取第二锁。

具体的,在当前一级服务成功获取优先级锁,但是有其他服务正在使用公平锁的情况发生时,当前一级服务阻塞等待,直到上一个服务因为无法获取优先级锁而放弃公平锁时,当前一级服务获取公平锁,即可开始执行当前一级服务,同时将优先级锁释放,提供给后续服务。

可选的,在本申请实施例提供的服务协调方法中,在成功获取第二锁的情况下,释放第一锁,并执行服务请求所对应的服务之后,该方法还包括:在服务执行完毕的情况下,释放第二锁;或者在服务执行失败的情况下,释放第二锁。

具体的,在当前一级服务执行完毕后,会释放公平锁至下一个服务;但是如果当前一级服务正在执行的时候,执行过程中出现异常并发生崩溃,公平锁会立刻释放,不会影响其他等待的服务执行。

本申请实施例还提供了另一种服务协调方法,应用于上述的服务协调系统中,图3为根据本申请实施例的另一种服务协调方法的示意图。如图3所示,该方法包括:

步骤S302,在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁。

步骤S304,在成功获取第二锁的情况下,请求获取第一锁。

步骤S306,在成功获取第一锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。

具体的,第一锁为优先级锁,用于支持高级别的服务的优先获取,第二锁为公平锁,用于保证服务调用按序排队,所有级别的服务按时间顺序获取。当前服务为二级服务时,服务优先级低,所以先请求获取公平锁,当公平锁没有被其他服务持有时,当前二级服务成功获得公平锁,并请求获取优先级锁,当优先级锁没有被其他服务持有时,当前二级服务成功获得优先级锁,此时当前二级服务同时获得两个锁,即可执行服务,同时将优先级锁释放,提供给后续服务。

本申请实施例提供的一种服务协调方法,通过在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁;在成功获取第二锁的情况下,请求获取第一锁;在成功获取第一锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。通过使用两个分布式锁按照不同顺序加锁的方法来控制公平性和优先级。进而达到了在保证公平执行的前提下,额外支持优先级锁机制,确保高优先级的动作可以优先被执行的效果。

可选的,在本申请实施例提供的服务协调方法中,在在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁之后,该方法还包括:在请求获取第二锁失败的情况下,等待上一持有第二锁的服务释放第二锁;在当前持有第二锁的服务释放第二锁的情况下,获取第二锁。

具体的,当公平锁被其他服务持有时,当前二级服务无法获得公平锁,开始阻塞等待,直到上一个服务执行完毕释放公平锁后当前二级服务获取公平锁。

可选的,在本申请实施例提供的服务协调方法中,在成功获取第二锁的情况下,请求获取第一锁之后,该方法还包括:在请求获取第一锁失败的情况下,释放第二锁,并在目标服务释放第二锁之后,请求获取第二锁,其中,在当前服务请求之前不存在未执行的二级服务的情况下,目标服务为当前持有一级锁的一级服务;在当前服务请求之前存在未执行的二级服务的情况下,目标服务为当前服务的前一个未执行的二级服务。

具体的,在当前二级服务获得公平锁之后,会请求获取优先级锁,如果此时有其它服务持有该优先级锁,则阻塞等待,在一定时间内仍然无法获得优先级锁,说明当前有一级服务持有优先级锁,则放弃公平锁并移动到当前持有优先级锁的一级服务后面,等待当前持有优先级锁的一级服务执行完成后再次尝试。

例如,当前二级服务请求获取优先级锁,如果此时有其它服务持有优先级锁,当前服务阻塞等待,此时当前二级服务会尝试在500毫秒的时间内获取优先级锁,如果时间内未获得优先级锁,则阻塞超时,此时存在由于高级别服务持有优先级锁,并等待获取公平锁执行服务调用的情况。则当前二级服务无法调用,释放公平锁并移动到当前持有优先级锁的一级服务后面等待下一轮再次尝试。

需要说明的是,如果当前二级服务的前面没有未执行的二级服务,则直接移动到当前持有优先级锁的一级服务后面,在当前持有优先级锁的一级服务执行完成后再次获取公平锁并请求获取优先级锁;如果当前二级服务的前面有未执行的二级服务,则移动到该未执行的二级服务后面,在该未执行的二级服务释放公平锁后获取公平锁并请求获取优先级锁。

可选的,在本申请实施例提供的服务协调方法中,在在成功获取第一锁的情况下,释放第一锁,并执行服务请求所对应的服务之后,该方法还包括:在服务执行完毕的情况下,释放第二锁;或者在服务执行失败的情况下,释放第二锁。

具体的,在当前二级服务执行完毕后,会释放公平锁以供下一个服务获取;但是如果当前二级服务正在执行的时候,执行过程中出现异常并发生崩溃,公平锁会立刻释放,不会影响其他等待公平锁的服务的加锁操作。

可选的,释放第一锁,并执行服务请求所对应的服务包括:在执行服务请求所对应的服务之前,释放第一锁;或者在执行服务请求所对应的服务的过程中,释放第一锁;或者在执行服务请求所对应的服务之后,释放第一锁。

需要说明的是,在当前服务获得两把锁的时候,无论在何时都可以释放优先级锁,例如,在执行服务请求所对应的服务之前和过程中释放,后续一级服务就可以开始获取优先级锁;在执行服务请求所对应的服务之后释放,当前服务的后一个服务如果为一级服务,则先获取优先级锁,再获取公平锁,进行服务执行,如果为二级服务,则后续一级服务先进行优先锁的获取,该二级服务再获取公平锁。

下面提供一可选的实施方案对本申请提供一种服务协调方法进行进一步解释说明。

需要说明的是,在应用平台中,任务运行时会自动向关联的服务器下发服务请求。如果多个任务使用了相同的服务器,那么同时就会有多个任务并发向服务器下发服务请求,此时需要使用分布式锁来控制多个任务之间的并发问题。与此同时,如果用户通过应用平台手动向服务器下发服务请求,通常与用户交互的手动下发服务请求需要及时响应,在预期的时间内返回结果,所以需要提前处理。

图4为该可选的实施方案的具体实施流程示意图,其中,第一锁为优先级锁,第二锁为公平锁,一级服务为手动下发的服务,编号为4号,二级服务为自动下发的服务,编号为1号、2号、3号,如图4所示,该方法包括:

步骤S401为:分布式系统发生了1号服务、2号服务、3号服务共3个低级别的服务,按照服务的先后顺序,1号服务先获取到公平锁并请求获取优先级锁。由于没有其它服务持有优先级锁,1号服务开始执行服务。

步骤S402为:在1号服务执行服务期间,手动写入了一个高优先级的4号服务。4号服务是高级别的服务,立即申请获取优先级锁,由于没有其它服务占用优先级锁,则成功获取优先级锁。并且4号服务还申请获取公平锁,此时公平锁被1号服务占用,获取失败只能等待。

步骤S403为:当1号服务完成并释放公平锁时,按照顺序2号服务获取公平锁。2号服务获取公平锁后,申请获取优先级锁,但是优先级锁已经被4号服务持有。2号服务获取优先级锁失败,无法执行服务,于是释放公平锁并重新排队。

步骤S404为:按照顺序,3号服务获取公平锁。3号服务与2号服务的服务级别相同,获取优先级锁失败,释放公平锁并在2号后面重新排队。按照顺序,4号服务获取公平锁。此时4号服务已经成功获取两把锁,可以开始执行服务并释放优先级锁。

步骤S405为:4号服务完成,释放了公平锁,按照顺序,2号服务重新获取公平锁,并申请获取优先级锁。此时由于没有一级服务持有优先级锁,所以2号服务成功获取优先级锁、开始执行服务并且释放优先级锁。后续3号服务执行过程与2号服务执行过程类似。

需要说明的是,在这种场景下,若使用相关技术中的分布式锁来控制手动和自动向服务器下发服务请求过程,手动的下发需要在自动下发的动作后面排队,等待被执行,而每个下发服务请求的动作需要花费的时间无法预测,就会导致手动的下发服务请求阻塞过长时间,最后因为前后台交互超时而无法返回结果。

而通过使用本申请提供的服务协调方法,可以将手动下发的服务请求优先级提高,从而将手动下发的服务请求放在队列的头部,一旦当前正在执行的服务完成,立即执行手动下发的服务,提高了手动下发的服务执行的效率,减少了响应时间。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例还提供了一种服务协调装置,需要说明的是,本申请实施例的一种服务协调装置可以用于执行本申请实施例所提供的一种用于服务协调方法。以下对本申请实施例提供的一种服务协调装置进行介绍。

图5是根据本申请实施例的一种服务协调装置的示意图。如图5所示:该装置包括:第一获取单元501、第二获取单元502、第一执行单元503。

具体地,第一获取单元501,用于当前服务请求对应的服务为一级服务的情况下,请求获取第一锁。

第二获取单元502,用于在成功获取第一锁的情况下,请求获取第二锁。

第一执行单元503,用于在成功获取第二锁的情况下,执行当前服务请求所对应的服务并释放第一锁。

本申请实施例提供的服务协调装置,通过第一获取单元501在当前服务请求对应的服务为一级服务的情况下,请求获取第一锁;第二获取单元502在成功获取第一锁的情况下,请求获取第二锁;第一执行单元503在成功获取第二锁的情况下,执行当前服务请求所对应的服务。解决了相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题,通过使用第一锁和第二锁对不同级别的服务交替加锁,进而达到了在保证同一级别的服务顺序执行的同时,保证高级别的服务得以提前执行的效果。

可选地,在本申请实施例提供的服务协调装置中,第一获取单元501包括:第一获取模块,用于在请求获取第一锁失败的情况下,等待当前持有第一锁的服务释放第一锁;第二获取模块,在当前持有第一锁的服务释放第一锁的情况下,获取第一锁。

可选地,在本申请实施例提供的服务协调装置中,第二获取单元502包括:第三获取模块,用于在成功获取第一锁的情况下,请求获取第二锁之后,在请求获取第二锁失败的情况下,等待上一持有第二锁的服务释放第二锁。第四获取模块,用于在当前持有第二锁的服务释放第二锁的情况下,获取第二锁。

可选的,在本申请实施例提供的服务协调装置中,第一执行单元503包括,第一释放模块,用于在成功获取第二锁的情况下,释放第一锁;第二释放模块,用于在执行服务请求所对应的服务之后,释放第二锁,或者在服务执行失败的情况下,释放第二锁。

所述服务协调装置包括处理器和存储器,上述第一获取单元501、第二获取单元502、第一执行单元503等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来达到了在保证公平执行的前提下,额外支持优先级锁机制,确保高优先级的动作可以优先被执行的效果。

本申请实施例还提供了另一种服务协调装置,需要说明的是,本申请实施例的另一种服务协调装置可以用于执行本申请实施例所提供的另一种用于服务协调方法。以下对本申请实施例提供的另一种服务协调装置进行介绍。

图6是根据本申请实施例的另一种服务协调装置的示意图。如图6所示:该装置包括:第三获取单元601、第四获取单元602、第二执行单元603。

具体地,第三获取单元601,用于在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁。

第四获取单元602,用于在成功获取第二锁的情况下,请求获取第一锁。

第二执行单元603,用于在成功获取第一锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。

本申请实施例提供的服务协调装置,通过第三获取单元601在当前服务请求对应的服务为二级服务的情况下,请求获取第二锁;第四获取单元602在成功获取第二锁的情况下,请求获取第一锁;第二执行单元603在成功获取第一锁的情况下,释放第一锁,并执行当前服务请求所对应的服务。解决了相关技术中分布式锁无法既保证同一级别的服务访问的公平性,又保证不同级别的服务间得以区分执行的问题,通过使用第一锁和第二锁对不同级别的服务交替加锁,进而达到了在保证同一级别的服务顺序执行的同时,保证高级别的服务得以提前执行的效果。

可选的,在本申请实施例提供的服务协调装置中,第三获取单元601包括:第五获取模块,用于在请求获取第二锁失败的情况下,等待上一持有第二锁的服务释放第二锁。第六获取模块,用于在当前持有第二锁的服务释放第二锁的情况下,获取第二锁。

可选的,在本申请实施例提供的服务协调装置中,第四获取单元602包括:第三释放模块,用于在请求获取第一锁失败的情况下,释放第二锁。第七获取模块,用于在目标服务释放第二锁之后,请求获取第二锁,其中,在当前服务请求之前不存在未执行的二级服务的情况下,目标服务为当前持有一级锁的一级服务;在当前服务请求之前存在未执行的二级服务的情况下,目标服务为当前服务的前一个未执行的二级服务。

可选的,在本申请实施例提供的服务协调装置中,第二执行单元603包括,第四释放模块,用于在成功获取第一锁的情况下,释放第一锁;第五释放模块,用于在执行服务请求所对应的服务之后,释放第二锁,或者在服务执行失败的情况下,释放第二锁。

所述另一种服务协调装置包括处理器和存储器,上述第三获取单元601、第四获取单元602、第二执行单元603等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来达到了在保证公平执行的前提下,额外支持优先级锁机制,确保高优先级的动作可以优先被执行的效果。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请实施例还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,程序运行时控制非易失性存储介质所在的设备执行一种服务协调方法。

本申请实施例还提供了一种电子装置,包含处理器和存储器;存储器中存储有计算机可读指令,处理器用于运行计算机可读指令,其中,计算机可读指令运行时执行一种服务协调方法。本文中的电子装置可以是服务器、PC、PAD、手机等。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号