分布式事务资源执行的方法、装置和系统
技术领域
本发明实施例涉及计算机技术,尤其涉及一种分布式事务资源执行的方法、装置和系统。
背景技术
目前,机器与机器间的通信(Machine to Machine,以下简称M2M)即物联网技术,已经在越来越多的行业和领域得到广泛的应用,例如智能交通、农业灌溉、智能家居等行业。M2M系统运营商为了满足对不同行业应用服务的需要,开发了统一的M2M平台,以实现部分公共能力,例如数据访问和存储、数据的共享和传输、群组通信等。该M2M平台对下可以接入不同种类的被管对象设备(例如传感器),对上可以提供应用访问接口,允许不同行业的应用服务器通过访问接口调用M2M平台提供的公共能力。
对于采用RESTful架构的M2M系统中的分布式事务来说,一个事务指的是某一项任务或者操作需要应用服务器和被管对象设备之间的多个请求来完成,并且要求该事务具有原子性(这里所说原子性,即一个事务是一个不可分割的工作单位,事务中包括的操作均要执行,确保执行的完整性),且在一些M2M系统分布式事务提交场景中,要求多个服务器上的事务资源能够同时执行。例如,在智能灌溉场景中,由一个水源和数量众多的阀门组成(这些阀门即被管对象设备),通过阀门的开关闭合以及开放的百分比决定给哪块农田进行灌溉以及灌溉的流量。具体为:一块土地被分为多个地块,分布在不同地块的田地上部署的土壤传感器收集土壤缺水程度,并将采集到的土壤缺水数据通过部署在不同地块的网关上报给M2M平台。应用服务器通过读取M2M平台上传感器的数据决定每块土壤当前是不是缺水,并通过控制阀门的开闭来实现对土地的灌溉。因此,对一块土地的灌溉需要调整多个阀门来实现,例如打开渠首阀
门、分干管阀门、支渠阀门、支管阀门等。这些阀门要求可以同时打开,否则如果渠首阀门和分干管的阀门打开了,但是支渠阀门却没有打开,会造成支渠溢出;或者,在一些较细管道处,阀门调整不同步可能造成细管道压力异常,造成接榫脱离或者管道变形等。
现有技术中提供了一种RESTful架构下分布式事务资源执行的方法,即尝试提交取消(TCC-Try Confirm Cancel,以下简称TCC)方法,具体为:应用服务器向多个被管对象设备发送更新请求,每个更新请求中携带该更新请求的过期时间;被管对象设备判断自身是否具有执行该更新请求的条件,若是,则向应用服务器返回成功响应,并等待应用服务器发送针对所述更新请求的提交请求;若否,则向应用服务器返回失败响应,应用服务器进入回滚阶段;当应用服务器收到每个被管对象设备返回的成功响应后,向该多个被管对象设备的每个被管对象设备发送提交请求,使得多个被管对象设备执行该更新请求,即完成事务资源的执行,进入最终状态。若被管对象设备在过期时间到达之前没有接收到应用服务器发送的提交请求,自动取消之前接收到的更新请求,使得被管对象设备回到初始状态。
但是,现有技术提供的方法经常会由于各被管对象设备在收到所述提交请求时存在延时,使得多个被管对象设备不能同时执行事务资源(即不能同时执行更请求),从而影响分布式系统的可靠性;另外,现有技术中事务协调器与服务器之间至少需要两个请求(上述的更新请求和提交请求)才能完成一个事务,其信令开销较大。
发明内容
本发明实施例提供一种分布式事务资源执行的方法、装置和系统,用以解决现有技术中因提交请求的接收延时使得多个被管对象设备不能同时执行事务资源的更新请求,从而影响分布式系统的可靠性的技术问题,以及解决现有技术中信令开销大的技术问题。
第一方面,本发明实施例提供一种分布式事务资源执行的方法,应用于机器与机器通信M2M系统,所述M2M系统包括至少两个被管对象设备和应用服务器,第一被管对象设备为所述至少两个被管对象设备中的任
意一个;第二被管对象设备为所述至少两个被管对象设备中除第一被管对象设备之外的所有被管对象设备;所述方法包括:
所述第一被管对象设备接收所述应用服务器针对第一事务发送的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行的操作;
所述第二被管对象设备接收所述应用服务器针对所述第一事务发送的第二事务资源创建请求,所述第二事务资源创建请求包括第二待操作资源标识、第二执行时间和第二待执行的操作;所述第一执行时间与所述第二执行时间相同;
所述第一被管对象设备根据所述第一事务资源创建请求成功创建所述第一事务的第一事务资源,以及所述第二被管设备根据所述第二事务资源创建请求成功创建所述第一事务的第二事务资源;所述第一事务资源包括所述第一执行时间和所述第一待执行的操作,以及所述第二事务资源包括所述第二执行时间和所述第二待执行的操作;
所述第一被管对象设备向所述应用服务器发送所述第一事务的第一事务资源创建成功的响应,以及所述第二被管对象设备向所述应用服务器发送所述第一事务的第二事务资源创建成功的响应;
在到达所述第一执行时间之时,所述第一被管对象设备和所述第二被管设备分别执行各自的待执行的操作。
结合第一方面,在第一方面的第一种可能的实施方式中,所述方法还包括:
所述第一被管对象设备接收所述应用服务器针对第二事务发送的第三事务资源创建请求,所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;
所述第二被管对象设备接收所述应用服务器针对所述第二事务发送的第四事务资源创建请求,所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行的操作;所述第三执行时间与所述第四执行时间相同;
所述第一被管对象设备根据所述第三事务资源创建请求确定所述第二事务的第三事务资源创建失败,并向所述应用服务器发送所述第二事务
的第三事务资源创建失败的响应;以及所述第二被管设备根据所述第四事务资源创建请求成功创建所述第二事务的第四事务资源,并向所述应用服务器发送所述第二事务的第四事务资源创建成功的响应,所述第四事务资源创建成功的响应中携带所述第四事务资源的标识;
向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备接收所述应用服务器发送的针对所述第二事务的第四事务资源的处理请求,所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识;
所述向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备根据所述第四事务资源的标识处理创建的第四事务资源。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述第一被管对象设备根据所述第三事务资源创建请求确定所述第二事务的第三事务资源创建失败,包括:
所述第一被管对象设备确定所述第一被管对象设备存在第一事务资源队列;其中,所述第一事务资源队列包括至少一个事务资源;
所述第一被管对象设备根据所述第三执行时间以及所述第一被管对象设备的第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件;
所述第一被管对象设备根据所述预设的资源创建条件确定将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间;所述第一被管对象设备向所述应用服务器发送携带更新后的第三执行时间的第二失败响应。
结合第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述第二被管对象设备根据所述第四事务资源创建请求成功创建所述第二事务的第四事务资源,包括:
所述第二被管对象设备确定所述第二被管对象设备存在第二事务资源队列;其中,所述第二事务资源队列包括至少一个事务资源;
所述第二被管对象设备根据所述第四执行时间以及所述第二被管对
象设备的第二待操作资源的状态确定所述第四事务资源满足预设的资源创建条件,并创建所述第四事务资源。
结合第一方面的第一种可能的实施方式至第一方面的第三种可能的实施方式中的任一项,在第一方面的第四种可能的实施方式中,所述针对所述第二事务的第四事务资源的处理请求为携带所述第四事务资源的标识和更新后的第三执行时间的更新请求;所述向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备根据所述第四事务资源的标识处理创建的第四事务资源,具体包括:
所述第二被管对象设备根据所述更新后的第三执行时间成功更新所述第四事务资源,并在更新成功后向所述应用服务器返回更新成功的响应消息;或根据所述更新后的第三执行时间更新所述第四事务资源失败,并向所述应用服务器返回更新失败的响应消息。
结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,所述第二被管对象设备根据所述更新后的第三执行时间成功更新所述第四事务资源,包括:
所述第二被管对象设备根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源;
所述第二被管对象设备将所述更新后的第三执行时间作为新的第四事务资源的执行时间;
所述第二被管对象设备根据所述新的第四事务资源的执行时间以及所述第二被管对象设备的第二待操作资源的状态确定所述新的第四事务资源满足预设的资源创建条件;
所述第二被管对象设备根据所述更新后的第三执行时间创建所述新的第四事务资源。
结合第一方面的第一种可能的实施方式至第一方面的第三种可能的实施方式中的任一项,在第一方面的第六种可能的实施方式中,所述针对所述第二事务的第四事务资源的处理请求为携带所述第四事务资源的标识的删除请求,所述向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备根据所述第四事务资源的标识处理创建的第四事务资源,具体包括:
所述第二被管对象设备根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源。
结合第一方面的第六种可能的实施方式,在第一方面的第七种可能的实施方式中,所述第二事务资源队列中预留状态的事务资源为一个,所述第二被管对象设备根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源之后,该方法进一步包括:
所述第二被管对象设备根据所述第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断所述第二位置上的事务资源能否执行成功;所述第一位置为与所述第四事务资源在所述第二事务资源队列中的前一个位置,所述第二位置为与所述第四事务资源在所述第二事务资源队列中的后一个位置;
若所述第二位置上的事务资源执行成功,则所述第二被管对象设备向所述应用服务器发送第一删除响应,并在所述第一位置上的事务资源执行后,更新所述第二位置上的事务资源的状态为预留状态;
若所述第二位置上的事务资源执行失败,则所述第二被管对象设备删除所述第二位置上的事务资源。
结合第一方面的第六种可能的实施方式,在第一方面的第八种可能的实施方式中,所述第二事务资源队列中预留状态的事务资源为至少二个,所述第二被管对象设备根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源之后,该方法进一步包括:
所述第二被管对象设备判断所述第二事务资源队列中处于半预留状态的事务资源是否满足预设的删除条件;
若是,则所述第二被管对象设备删除所述处于半预留状态的事务资源,并向所述应用服务器发送第二删除响应;
若否,则所述第二被管对象设备根据所述处于半预留状态的事务资源之前的任一个事务资源执行后的第二待操作资源的状态,判断所述处于半预留状态的事务资源均能够执行成功,则所述第二被管对象设备将所述处于半预留状态的事务资源更新为预留状态。
第二方面,本发明实施例提供一种分布式事务资源执行的方法,应用于机器与机器通信M2M系统,所述M2M系统包括至少两个被管对象设
备和应用服务器,第一被管对象设备为所述至少两个被管对象设备中的任意一个;所述第二被管对象为所述至少两个被管对象设备中除第一被管设备对象之外的所有被管对象设备;所述方法包括:
应用服务器向第一被管对象设备发送针对第一事务的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行操作;
所述应用服务器向第二被管对象设备发送针对所述第一事务的第二事务资源创建请求,所述第二事务资源创建请求包括所述第一待操作资源标识、第二执行时间和第二待执行操作;所述第一执行时间与所述第二执行时间相同;
所述应用服务器在预设时间内接收到第二被管对象设备发送的所述第一事务的第二事务资源创建成功的响应,以及,接收到所述第一被管对象设备发送的所述第一事务的第一事务资源创建成功的响应。
结合第二方面,在第二方面的第一种可能的实施方式中,所述方法还包括:
所述应用服务器向所述第一被管对象设备发送针对第二事务的第三事务资源创建请求;所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行操作;
所述应用服务器向所述第二被管对象设备发送针对所述第二事务的第四事务资源创建请求,所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行操作;所述第三执行时间与所述第四执行时间相同;
所述应用服务器在预设时间内接收到所述第一被管对象设备发送的所述第二事务的第三事务资源创建失败的响应,以及在所述预设时间内接收到所述第二被管对象设备发送的所述第二事务的第四事务资源创建成功的响应;所述第四事务资源创建成功的响应中携带所述第四事务资源的标识;
所述应用服务器基于所述第二事务的第三事务资源创建失败的响应和所述第二事务的第四事务资源创建成功的响应,向发送所述第四事务资源创建成功的响应的第二被管对象设备发送针对所述第二事务的第四事
务资源的处理请求,所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述应用服务器基于所述第二事务的第三事务资源创建失败的响应和所述第二事务的第四事务资源创建成功的响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送针对所述第二事务的第四事务资源的处理请求,包括:
所述应用服务器确定所述第二事务的第三事务资源创建失败的响应为不携带更新后的第三执行时间的第一失败响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送携带所述第四事务资源标识的删除请求;或,
所述应用服务器确定所述第二事务的第三事务资源创建失败的响应为携带所述更新后的第三执行时间的第二失败响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送携带所述更新后的第三执行时间和所述第四事务资源标识的更新请求;所述方法进一步包括:所述应用服务器向所述第一被管设备发送携带更新后的第三执行时间的第三事务资源的创建请求。
第三方面,本发明实施例提供一种应用服务器,应用于机器与机器通信M2M系统,所述M2M系统包括至少两个被管对象设备和应用服务器,第一被管对象设备为所述至少两个被管对象设备中的任意一个;所述第二被管对象为所述至少两个被管对象设备中除第一被管设备对象之外的所有被管对象设备;所述应用服务器包括:
发送模块,用于向第一被管对象设备发送针对第一事务的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行操作;还用于向第二被管对象设备发送针对所述第一事务的第二事务资源创建请求,所述第二事务资源创建请求包括所述第一待操作资源标识、第二执行时间和第二待执行操作;所述第一执行时间与所述第二执行时间相同;
接收模块,用于在预设时间内接收到第二被管对象设备发送的所述第一事务的第二事务资源创建成功的响应,以及,接收到所述第一被管对象
设备发送的所述第一事务的第一事务资源创建成功的响应。
结合第三方面,在第三方面的第一种可能的实施方式中,所述发送模块,还用于向所述第一被管对象设备发送针对第二事务的第三事务资源创建请求;所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行操作;以及,还用于向所述第二被管对象设备发送针对所述第二事务的第四事务资源创建请求,所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行操作;所述第三执行时间与所述第四执行时间相同;
所述接收模块,还用于在预设时间内接收到所述第一被管对象设备发送的所述第二事务的第三事务资源创建失败的响应,以及在所述预设时间内接收到所述第二被管对象设备发送的所述第二事务的第四事务资源创建成功的响应;所述第四事务资源创建成功的响应中携带所述第四事务资源的标识;
则所述发送模块,还用于基于所述第二事务的第三事务资源创建失败的响应和所述第二事务的第四事务资源创建成功的响应,向发送所述第四事务资源创建成功的响应的第二被管对象设备发送针对所述第二事务的第四事务资源的处理请求,所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
结合第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,所述发送模块,具体用于确定所述第二事务的第三事务资源创建失败的响应为不携带更新后的第三执行时间的第一失败响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送携带所述第四事务资源标识的删除请求;或,确定所述第二事务的第三事务资源创建失败的响应为携带所述更新后的第三执行时间的第二失败响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送携带所述更新后的第三执行时间和所述第四事务资源标识的更新请求;
所述发送模块,还用于向所述第一被管设备发送携带更新后的第三执行时间的第三事务资源的创建请求。
第四方面,本发明实施例提供一种分布式事务资源执行系统,应用于机器与机器通信M2M系统,所述M2M系统包括至少两个被管对象设备
和应用服务器,第一被管对象设备为所述至少两个被管对象设备中的任意一个;第二被管对象设备为所述至少两个被管对象设备中除第一被管对象设备之外的所有被管对象设备;所述分布式事务资源执行系统包括:所述第一被管对象设备和所述第二被管对象设备;
所述第一被管对象设备,用于接收所述应用服务器针对第一事务发送的第一事务资源创建请求,并根据所述第一事务资源创建请求成功创建所述第一事务的第一事务资源,并向所述应用服务器发送所述第一事务的第一事务资源创建成功的响应;所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行的操作;
所述第二被管对象设备,用于接收所述应用服务器针对所述第一事务发送的第二事务资源创建请求,并根据所述第二事务资源创建请求成功创建所述第一事务的第二事务资源,并向所述应用服务器发送所述第一事务的第二事务资源创建成功的响应;所述第二事务资源创建请求包括第二待操作资源标识、第二执行时间和第二待执行的操作;所述第一执行时间与所述第二执行时间相同;所述第一事务资源包括所述第一执行时间和所述第一待执行的操作,以及所述第二事务资源包括所述第二执行时间和所述第二待执行的操作;
在到达所述第一执行时间之时,所述第一被管对象设备和所述第二被管设备均用于执行各自的待执行的操作。
结合第四方面,在第四方面的第一种可能的实施方式中,所述第一被管对象设备,还用于接收所述应用服务器针对第二事务发送的第三事务资源创建请求,并根据所述第三事务资源创建请求确定所述第二事务的第三事务资源创建失败,并向所述应用服务器发送所述第二事务的第三事务资源创建失败的响应;所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;
所述第二被管对象设备,还用于接收所述应用服务器针对所述第二事务发送的第四事务资源创建请求,并根据所述第四事务资源创建请求成功创建所述第二事务的第四事务资源,并向所述应用服务器发送所述第二事务的第四事务资源创建成功的响应;所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行的操作;所述第三执行
时间与所述第四执行时间相同;所述第四事务资源创建成功的响应中携带所述第四事务资源的标识;
向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备,还用于接收所述应用服务器发送的针对所述第二事务的第四事务资源的处理请求,并根据所述第四事务资源的标识处理创建的第四事务资源;所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
结合第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,所述第一被管对象设备,具体用于确定所述第一被管对象设备存在第一事务资源队列,并根据所述第三执行时间以及所述第一被管对象设备的第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件,并根据所述预设的资源创建条件确定将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间以及向所述应用服务器发送携带更新后的第三执行时间的第二失败响应;其中,所述第一事务资源队列包括至少一个事务资源。
结合第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式,在第四方面的第三种可能的实施方式中,所述第二被管对象设备,具体用于确定所述第二被管对象设备存在第二事务资源队列,并根据所述第四执行时间以及所述第二被管对象设备的第二待操作资源的状态确定所述第四事务资源满足预设的资源创建条件,并创建所述第四事务资源;其中,所述第二事务资源队列包括至少一个事务资源。
结合第四方面的第一种可能的实施方式至第四方面的第三种可能的实施方式中的任一项,在第四方面的第四种可能的实施方式中,所述针对所述第二事务的第四事务资源的处理请求为携带所述第四事务资源的标识和更新后的第三执行时间的更新请求;所述第二被管对象设备,还用于根据所述更新后的第三执行时间成功更新所述第四事务资源,并在更新成功后向所述应用服务器返回更新成功的响应消息;或根据所述更新后的第三执行时间更新所述第四事务资源失败,并向所述应用服务器返回更新失败的响应消息。
结合第四方面的第四种可能的实施方式,在第四方面的第五种可能的
实施方式中,所述第二被管对象设备,还用于根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源,并将所述更新后的第三执行时间作为新的第四事务资源的执行时间,并根据所述新的第四事务资源的执行时间以及所述第二被管对象设备的第二待操作资源的状态确定所述新的第四事务资源满足预设的资源创建条件,以及根据所述更新后的第三执行时间创建所述新的第四事务资源。
结合第四方面的第一种可能的实施方式至第四方面的第三种可能的实施方式中的任一项,在第四方面的第六种可能的实施方式中,所述针对所述第二事务的第四事务资源的处理请求为携带所述第四事务资源的标识的删除请求,所述第二被管对象设备,还用于根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源。
结合第四方面的第六种可能的实施方式,在第四方面的第七种可能的实施方式中,所述第二事务资源队列中预留状态的事务资源为一个,所述第二被管对象设备,还用于在根据所述第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断所述第二位置上的事务资源能否执行成功;所述第一位置为与所述第四事务资源在所述第二事务资源队列中前一个位置,所述第二位置为与所述第四事务资源在所述第二事务资源队列中后一个位置;
若所述第二位置上的事务资源执行成功,则所述第二被管对象设备,还用于向所述应用服务器发送第一删除响应,并在所述第一位置上的事务资源执行后,更新所述第二位置上的事务资源的状态为预留状态;
若所述第二位置上的事务资源执行失败,则所述第二被管对象设备,还用于删除所述第二位置上的事务资源。
结合第四方面的第六种可能的实施方式,在第四方面的第八种可能的实施方式中,所述第二事务资源队列中预留状态的事务资源为至少二个,所述第二被管对象设备,还用于判断所述第二事务资源队列中处于半预留状态的事务资源是否满足预设的删除条件;
若所述第二事务资源队列中处于半预留状态的事务资源满足预设的删除条件,则所述第二被管对象设备,还用于删除所述处于半预留状态的事务资源,并向所述应用服务器发送第二删除响应;
若所述第二事务资源队列中处于半预留状态的事务资源不满足预设的删除条件,则所述第二被管对象设备,还用于根据所述处于半预留状态的事务资源之前的任一个事务资源执行后的第二待操作资源的状态,判断所述处于半预留状态的事务资源均能够执行成功后,将所述处于半预留状态的事务资源更新为预留状态。
第五方面,本发明实施例提供一种被管对象设备,应用于机器与机器通信M2M系统,所述M2M系统包括至少两个被管对象设备和应用服务器,所述被管对象设备为所述至少两个被管对象设备中的任意一个;第二被管对象设备为所述至少两个被管对象设备中除所述被管对象设备之外的所有被管对象设备;所述被管对象设备包括:
接收模块,用于接收所述应用服务器针对第一事务发送的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行的操作;所述第一执行时间与所述M2M系统中除所述被管对象设备之外的所述第二被管对象设备接收到针对第一事务的第二事务资源创建请求中的第二执行时间相同;
创建模块,用于根据所述第一事务资源创建请求成功创建第一事务资源;所述第一事务资源包括所述第一执行时间和第一待执行的操作;
确定模块,用于在到达所述第一执行时间之时,确定没有接收到所述应用服务器发送的针对所述第一事务的第一事务资源的处理请求,所述针对所述第一事务的第一事务资源的处理请求为所述应用服务器接收到所述第二被管对象设备发送第一事务的第二事务资源创建失败的响应后发送的;
处理模块,用于执行所述第一待执行的操作。
结合第五方面,在第五方面的第一种可能的实施方式中,所述被管对象设备还包括发送模块;
所述接收模块,还用于接收所述应用服务器发送的针对第二事务的第三事务资源创建请求,所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;所述第三执行时间与所述第二被管对象设备接收到的针对所述第二事务的第四事务资源创建请求中的第四执行时间相同;
所述创建模块,还用于根据所述第三事务资源创建请求确定第三事务资源创建失败;
所述发送模块,用于向所述应用服务器发送所述第二事务的第三事务资源创建失败的响应。
结合第五方面的第一种可能的实施方式,在第五方面的第二种可能的实施方式中,所述创建模块,具体用于确定所述被管对象设备存在第一事务资源队列,并根据所述第三执行时间和所述被管对象设备的第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件,并根据所述预设的资源创建条件确定将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间;其中,所述第一事务资源队列包括至少一个事务资源;
所述发送模块,具体用于向所述应用服务器发送携带更新后的第三执行时间的第二失败响应。
结合第五方面的第一种可能的实施方式,在第五方面的第三种可能的实施方式中,所述被管对象设备还包括发送模块;
所述接收模块,还用于接收所述应用服务器发送的第二事务的第三事务资源创建请求,所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;所述第三执行时间与所述第二被管对象设备接收到的针对所述第二事务的第四事务资源的创建请求中的第四执行时间相同;
所述创建模块,还用于根据所述第三事务资源创建请求成功创建所述第三事务资源;
所述发送模块,用于向所述应用服务器发送针对所述第二事务的第三事务资源创建成功的响应;所述第三事务资源创建成功的响应中携带所述第三事务资源的标识;
所述确定模块,还用于在到达所述第三执行时间之前,确定接收到所述应用服务器发送的针对所述第二事务的第三事务资源的处理请求;所述针对所述第二事务的第三事务资源的处理请求中携带所述第三事务资源的标识;
所述处理模块,还用于根据所述第三事务资源的标识处理创建的所述
第三事务资源。
结合第五方面的第三种可能的实施方式,在第五方面的第四种可能的实施方式中,所述创建模块,具体用于确定所述被管对象设备存在第一事务资源队列;并根据所述第三执行时间和所述被管对象设备的第一待操作资源的状态确定所述第三事务资源满足预设的资源创建条件,并创建所述第三事务资源;其中,所述第一事务资源队列包括至少一个事务资源。
结合第五方面的第三种可能的实施方式或第五方面的第四种可能的实施方式,在第五方面的第五种可能的实施方式中,所述针对所述第二事务的第三事务资源的处理请求为携带所述第三事务资源标识和更新后的第四执行时间的更新请求,所述处理模块,具体用于根据所述更新后的第四执行时间成功更新所述第三事务资源,并在更新成功后向所述应用服务器返回更新成功的响应消息;或根据所述更新后的第四执行时间更新所述第三事务资源失败,并向所述应用服务器返回更新失败的响应消息。
结合第五方面的第五种可能的实施方式,在第五方面的第六种可能的实施方式中,所述处理模块,具体用于根据所述第三事务资源的标识删除所述被管对象设备上的所述第三事务资源,并将所述更新后的第四执行时间作为新的第三事务资源的执行时间;以及,根据所述新的第三事务资源的执行时间以及所述被管对象设备的第一待操作资源的状态确定所述新的第三事务资源满足所述预设的资源创建条件,并根据所述更新后的第四执行时间创建所述新的第三事务资源。
结合第五方面的第三种可能的实施方式或第五方面的第四种可能的实施方式,在第五方面的第七种可能的实施方式中,所述针对所述第二事务的第三事务资源的处理请求为携带所述第三事务资源标识的删除请求,所述处理模块,具体用于根据所述第三事务资源标识删除所述被管对象设备上的所述第三事务资源。
结合第五方面的第七种可能的实施方式,在第五方面的第八种可能的实施方式中,所述第一事务资源队列中预留状态的事务资源为一个,所述处理模块,还用于根据所述第一事务资源队列中第一位置上的事务资源执行后的第一待操作资源的状态,判断所述第二位置上的事务资源能否执行成功;若所述第二位置上的事务资源执行成功,则向所述应用服务器发送
第一删除响应,并在所述第一位置上的事务资源执行后,更新所述第二位置上的事务资源的状态为预留状态;若所述第二位置上的事务资源执行失败,则删除所述第二位置上的事务资源;其中,所述第一位置为与所述第三事务资源在所述第一事务资源队列中的前一个位置,所述第二位置为与所述第三事务资源在所述第一事务资源队列中的后一个位置。
结合第五方面的第七种可能的实施方式,在第五方面的第九种可能的实施方式中,所述第一事务资源队列中预留状态的事务资源为至少二个,所述处理模块,还用于判断所述第一事务资源队列中处于半预留状态的事务资源是否满足预设的删除条件;若是,则删除所述处于半预留状态的事务资源,并向所述应用服务器发送第二删除响应;若否,则根据所述处于半预留状态的事务资源之前的任一个事务资源执行后的第一待操作资源的状态,判断所述处于半预留状态的事务资源均能够执行成功,则将所述处于半预留状态的事务资源更新为预留状态。
本发明实施例提供的分布式事务资源执行的方法、装置和系统,通过在发送给多个被管对象设备的事务资源创建请求中携带相同的执行时间,使得多个被管对象设备可以在确定创建事务资源成功,并且在执行时间到达时刻同时执行自身所创建的事务资源,确保了事务资源的同时执行。另外,本发明实施例中确保事务资源同时执行只需要应用服务器向被管对象设备发送一个事务资源创建请求,因此节省了应用服务器的信令开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的分布式事务资源执行的方法实施例一的流程示意图;
图2为本发明提供的智能灌溉的M2M网络架构示意图;
图3为本发明提供的分布式事务资源执行的方法实施例二的流程示
意图;
图4为本发明提供的分布式事务资源执行的方法实施例二的另一流程示意图;
图5为本发明提供的分布式事务资源执行的方法实施例二的另一流程示意图;
图6为本发明提供的分布式事务资源执行的方法实施例二的另一流程示意图;
图7为本发明提供的分布式事务资源执行的方法实施例三的流程示意图;
图8为本发明提供的分布式事务资源执行的方法实施例四的流程示意图;
图9为本发明提供的分布式事务资源执行的方法实施例五的流程示意图;
图10为本发明提供的应用服务器实施例的结构示意图;
图11为本发明提供的被管对象设备实施例一的结构示意图;
图12为本发明提供的被管对象设备实施例二的结构示意图
图13为本发明提供的分布式事务资源执行系统实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请涉及的技术方案可以适用于机器与机器通信(Machine to Machine,以下简称M2M)系统,该系统可以包括至少两个被管对象设备和应用服务器。本申请中涉及的第一被管对象设备可以为上述至少两个被管对象设备中的任一设备,第二被管对象可以为所述至少两个被管对象设备中除第一被管对象设备之外的所有被管对象设备。若定义M2M系统中的某一个被管对象设备为第一被管对象设备,则这里的第二被管对象设备
即为M2M系统中除第一被管对象设备之外的其他的所有被管对象设备。需要说明的是,本申请中的被管对象设备可以为服务器、通信网关或者M2M平台,上述应用服务器可以为M2M系统中的事务协调器,还可以为其他的管理实体设备。
在RESTful架构中,应用服务器可以为作为基础设施节点的应用实体(Infrastructure Node-Application Entity,以下简称IN-AE)、作为应用服务节点的应用实体(Application Service Node-Application Entity,以下简称ASN-AE)、作为应用专属节点的应用实体(Application Dedicated Node-Application Entity,以下简称ADN-AE)或作为中间节点的应用实体(Middle Node-Application Entity,以下简称MN-AE)。上述被管对象设备可以为作为基础设施节点的公共服务实体(Infrastructure Node-Common Service Entity,以下简称IN-CSE)、作为中间节点的公共服务实体(Middle Node-Common Service Entity,以下简称MN-CSE)、作为应用服务节点的公共服务实体(Application Service Node-Common Service Entity,以下简称ASN-CSE)。在RESTful架构中,一个事务的参与方包括一个AE和多个CSE组成的;其中,AE即为本申请中的应用服务器,CSE即为本申请中的被管对象设备。
另外,需要说明的是,一个被管对象设备上只对应一个待操作资源,即这个被管对象设备上接收的任何事务资源创建请求中所包括的待操作资源的标识都是同一个标识。不同的被管对象设备对应不同的待操作资源。
图1为本发明提供的分布式事务资源执行的方法实施例一的流程示意图。本发明实施例涉及的是被管对象设备针对应用服务器的一个事务中的多个事务资源同时执行的具体过程,即针对M2M系统中的被管对象设备上的待操作资源,当前并不存在其他事务的事务资源的场景。如图1所示,该方法包括:
S101:第一被管对象设备接收所述应用服务器针对第一事务发送的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行的操作。
S102:第二被管对象设备接收所述应用服务器针对所述第一事务发送
的第二事务资源创建请求,所述第二事务资源创建请求包括第二待操作资源标识、第二执行时间和第二待执行的操作;所述第一执行时间与所述第二执行时间相同。
具体的,应用服务器分别向第一被管对象设备和第二被管对象设备发送针对第一事务的第一事务资源创建请求和针对第一事务的第二事务资源创建请求,即第一事务资源和第二事务资源同属于应用服务器的第一事务。第一事务资源创建请求中包括第一待操作资源标识、第一执行时间和第一待执行的操作,第二事务资源创建请求中包括第二待操作资源的标识、第二执行时间和第二待执行的操作。其中,第一执行时间和第二执行时间相同。可选的,第一待执行的操作和第二待执行的操作可以相同,也可以不同。并且,该第一待执行的操作或第二待执行的操作可以以原语的形式体现,也可以以其他的方式体现。
S103:第一被管对象设备根据所述第一事务资源创建请求成功创建所述第一事务的第一事务资源,以及所述第二被管设备根据所述第二事务资源创建请求成功创建所述第一事务的第二事务资源;所述第一事务资源包括所述第一执行时间和所述第一待执行的操作,以及所述第二事务资源包括所述第二执行时间和所述第二待执行的操作。
需要说明的是,第一被管设备和第二被管对象设备所执行的操作类似,因此,下述的技术方案均以第一被管对象设备为描述对象,第二被管对象设备所执行的操作可以参照第一被管对象设备来执行,即第二被管对象设备创建第二事务资源的过程可以参照第一被管对象设备创建第一事务资源的过程。
具体的,第一被管对象设备根据第一事务资源创建请求中携带的第一执行时间、第一待执行的操作等信息判断该第一事务资源能否创建成功。第一原语中包含请求的发起方、所请求的目标资源的标识、请求的具体内容等信息。
可选的,第一被管对象设备可以通过上述第一待执行的操作中所包含的信息确定第一事务资源创建请求是否满足创建事务资源的条件,具体可以包括下述(1)至(4)的内容:(1)第一被管对象设备根据第一待执行的操作中包含的“所请求的目标资源的标识”,检查第一待执行的操作
所请求的目标资源是不是第一待操作资源;(2)第一被管对象设备根据第一待执行的操作中所包含的“请求的发起方”,检查发起方(即应用服务器)有没有足够的权限发起该第一事务资源创建请求;(3)第一被管对象设备根据第一待执行的操作中包含的“请求的内容”,检查是否能够对第一待操作资源执行所述请求的内容,例如,第一被管对象设备通过检查第一待执行的操作中所包含的属性是否满足第一被管对象设备的属性允许范围,来检查是否能够对第一待操作资源执行所请求的内容;(4)第一被管对象设备根据第一执行时间与结合自己工作、休眠周期安排,检查能否保证在第一执行时间所规定的时间执行第一事务资源创建请求中携带的第一待执行的操作。
如果上述4项均检查成功,则说明第一事务资源创建请求满足创建事务资源的条件,第一被管对象设备可以根据该第一事务资源创建请求成功创建第一事务资源。基于RESTful架构的特点,所创建的第一事务资源中包括该第一事务资源的状态、第一执行时间和第一待执行的操作三个属性(相应的,第二事务资源中包括该第二事务资源的状态、第二执行时间和第二待执行的操作三个属性)。
需要说明的是,上述第一事务资源包含状态、执行时间和待执行的操作三个属性。状态(用state表示)表示当前事务资源所处的状态,该状态可能是预留状态,还可能是半预留状态。其中,预留状态是指被管对象设备可以保证在执行时间到达时能够成功执行该事务资源中的待执行的操作,即被管对象设备已经检查了需要执行该事务资源所需的各种条件,包括访问权限、属性一致性等。半预留状态是事务资源位于事务资源队列中时经常出现的状态,即被管对象设备能否成功执行该事务资源依赖于事务资源队列中某一个或多个事务资源执行后的第一待操作资源的状态。执行时间(用Texec表示)表示当前事务资源的执行时间,用来指示被管对象设备在到达该绝对时间时,执行该事务资源中待执行的操作。待执行的操作(用Primitive表示)表示待执行的请求,即包含了对该被管对象设备上的待操作资源进行处理时所需要的全部信息。
另外,事务资源与被管对象设备上的待操作资源是相关联的,即事务资源中的待执行的操作所请求的目标资源就是该待操作资源。事务资源跟
待操作资源的关联方式可以是事务资源的标识是待操作资源的一个属性,还可以是事务资源是待操作资源的子资源。具体的,待操作资源中可以包含一个或多个事务资源的标识,还可以是事务资源的标识中直接包含待操作资源的标识。
S104:第一被管对象设备向所述应用服务器发送所述第一事务的第一事务资源创建成功的响应,以及所述第二被管对象设备向所述应用服务器发送所述第一事务的第二事务资源创建成功的响应。
具体的,当第一被管对象设备成功创建第一事务资源后,会向应用服务器发送第一事务的第一事务资源创建成功的响应。第一被管对象设备在等待到达第一执行时间这一段时间里,可选的,第一被管对象设备确定是否接收到了应用服务器发送的针对第一事务的第一事务资源的处理请求。由于应用服务器上的一个事务是由多个事务资源组成的,因此,应用服务器会向多个被管对象设备发送不同的事务资源创建请求,以在每个被管对象设备上创建属于一个事务的事务资源。在本实施例中,如果第二被管对象设备在创建第二事务资源时并没有创建成功,则第二被管对象设备会向应用服务器发送第二事务资源创建失败响应。应用服务器在收到第二事务资源创建失败响应后,向第一被管对象设备发送针对第一事务的第一事务资源的处理请求,以指示第一被管对象设备删除或更新已创建成功的第一事务资源。如果第二被管对象设备创建第二事务资源成功,则会向应用服务器发送第一事务的第二事务资源创建成功的响应,应用服务器因此不会向第一被管对象设备发送针对第一事务的第一事务资源的处理请求。
S105:在到达所述第一执行时间之时,所述第一被管对象设备和所述第二被管设备分别执行各自的待执行的操作。
具体的,若第一被管对象设备在第一执行时间到达时,并没有接收到应用服务器发送的针对第一事务的第一事务资源的处理请求,说明M2M系统中的第二被管对象设备上的第二事务资源也创建成功,因此,第一被管对象设备根据上述所创建的第一事务资源中的第一待执行的操作,对第一待操作资源标识指示的第一待操作资源执行所述第一待执行的操作。进一步的,由于M2M系统中的第二被管对象设备上的第二事务资源也创建成功,并且第二被管对象设备也没有收到应用服务器发送的针对第一事务
的第二事务资源的处理请求,因此,第二被管对象设备也可以在第二执行时间对第二待操作资源标识所指示的第二待操作资源执行所述第二待执行的操作。也就是说第一被管对象设备和第二被管对象分别同时执行第一待执行的操作和第二待执行的操作,即同时执行属于同一事务所包含的事务资源。
为了更好的说明本发明实施例的技术方案,此处以背景技术中智能灌溉的例子来进行说明:
在智能灌溉的例子中,应用服务器为注册到M2M平台上的网络应用,被管对象设备为分布在不同农田里的阀门,参见图2所示的智能灌溉的M2M网络架构,该M2M系统包括一个应用服务器和三个阀门,其中,阀门1为第一被管对象设备,阀门2和阀门3均为第二被管对象设备。
应用服务器分别向阀门1、阀门2和阀门3发送事务资源创建请求。其中,发送给阀门1的事务资源创建请求为第一事务资源创建请求,发送给阀门2的事务资源创建请求为第二事务资源创建请求,发送给阀门3的事务资源创建请求为另一第二事务资源创建请求。应用服务器发送给三个阀门的事务资源创建请求中的执行时间均为12:00,且分别包含针对不同的阀门进行调节的请求,发送给阀门1的第一事务资源请求是请求将阀门1的开启程度调整为20%(即第一待执行的操作),发送给阀门2的第二事务资源请求是请求将阀门2的开启程度调整为30%(第二待执行的操作),发送给阀门3的第二事务资源请求是请求将阀门3的开启程度调整为40%(另一第二待执行的操作)。
以阀门1为例(阀门2和阀门3执行的操作可以参见阀门1),阀门1首先检查应用服务器是不是拥有创建第一事务资源的权限;其次再检查第一事务资源创建请求中包含的第一待执行的操作,该第一待执行的操作的内容为将阀门1大小调整20%;阀门1进一步检查应用服务器有没有对阀门1上的待操作资源进行调整的权限,并检查20%是不是符合阀门的调整幅度等;最后,阀门1再根据第一事务资源创建请求中提供的第一执行时间,结合自己的休眠时间,最后得出结论,第一事务资源可以创建成功,即阀门1可以保证在12:00把阀门1调节为其全开总量的20%。在该例子中,由于阀门1是首次创建事务资源,即阀门1的待操作资源并没有对应
的事务资源队列,因此阀门1分配第一事务资源当前的状态为预留状态,并携带在第一事务资源创建成功响应中发送给应用服务器。
阀门2和阀门3可以执行类似的步骤,在该例子中,假设阀门2和阀门3也同样可以保证在12:00把阀门调节为相应的大小,因此三个阀门所创建的事务资源都为预留状态。在本实施例中,因为3个阀门都返回了事务资源创建成功响应,因此在等待执行时间到达这段时间之内,应用服务器并不会发出任何请求。
当到达上述三个阀门所创建的事务资源中指定的执行时间时,即时间到达12:00时,三个阀门同时执行各自的待执行的操作的内容。即阀门1调整其开关为20%,阀门2调整其开关为30%,阀门3调整其开关为40%。
在本发明实施例中,通过在发送给多个被管对象设备的事务资源创建请求中携带相同的执行时间,使得多个被管对象设备可以在确定创建事务资源成功,并且在执行时间到达时刻同时执行自身所创建的事务资源,确保了事务资源的同时执行。另外,本发明实施例中确保事务资源同时执行只需要应用服务器向被管对象设备发送一个事务资源创建请求,因此节省了应用服务器的信令开销。
图3为本发明提供的分布式事务资源执行的方法实施例二的流程示意图。在上述实施例的基础上,本实施例涉及的方法是第一被管对象设备确定第二事务的第三事务资源创建失败,向应用服务器发送所述第二事务的第三事务资源创建失败的响应的过程。进一步地,如图3所示,该方法还包括:
S201:第一被管对象设备接收所述应用服务器针对第二事务发送的第三事务资源创建请求,所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作。
S202:第二被管对象设备接收所述应用服务器针对所述第二事务发送的第四事务资源创建请求,所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行的操作;所述第三执行时间与所述第四执行时间相同。
具体的,应用服务器分别向第一被管对象设备和第二被管对象设备发
送针对第二事务的第三事务资源创建请求和针对第二事务的第四事务资源创建请求。第三事务资源创建请求中包括第一待操作资源标识、第三执行时间和第三待执行的操作,第四事务资源创建请求中包括第二待操作资源的标识、第四执行时间和第四待执行的操作。其中,第三执行时间和第四执行时间相同。可选的,第三待执行的操作和第四待执行的操作可以相同,也可以不同。并且,该第三待执行的操作或第四待执行的操作可以以原语的形式体现,也可以以其他的方式体现。
S203:第一被管对象设备根据所述第三事务资源创建请求确定所述第二事务的第三事务资源创建失败,并向所述应用服务器发送所述第二事务的第三事务资源创建失败的响应。
S204:第二被管设备根据所述第四事务资源创建请求成功创建所述第二事务的第四事务资源,并向所述应用服务器发送所述第二事务的第四事务资源创建成功的响应,所述第四事务资源创建成功的响应中携带所述第四事务资源的标识。
需要说明的是,第一被管设备和第二被管对象设备所执行的操作类似,因此,下述的技术方案均以第一被管对象设备为描述对象,第二被管对象设备所执行的操作可以参照第一被管对象设备来执行,即第二被管对象设备创建第四事务资源的过程可以参照第一被管对象设备创建第三事务资源的过程。
具体的,第一被管对象设备根据第三事务资源创建请求中携带的第三执行时间、第三待执行的操作等信息判断该第三事务资源能否创建成功。第三待执行的操作中包含针对第一待操作资源的请求,该请求中可以包括请求的发起方、所请求的目标资源的标识、请求的具体内容等信息。
可选的,第一被管对象设备可以通过上述第三待执行的操作中所包含的信息确定第三事务资源创建请求是否满足创建事务资源的条件。该条件具体可以包括下述(1)至(4)的内容:(1)第一被管对象设备根据第三待执行的操作中包含的“所请求的目标资源的标识”,检查第三待执行的操作所请求的目标资源是不是第一待操作资源;(2)第一被管对象设备根据第三待执行的操作中所包含的“请求的发起方”,检查发起方(即应用服务器)有没有足够的权限发起该请求;(3)第一被管对象设备根
据第三待执行的操作中包含的“请求的内容”,检查是否能够对第一待操作资源执行所请求的内容;(4)第一被管对象设备根据第三执行时间与结合自己工作、休眠周期安排,检查能否保证在第三执行时间所规定的时间执行第三事务资源创建请求中携带的第三待执行的操作。
如果上述4项任意一项检查失败,则说明第三事务资源创建请求不满足创建事务资源的条件,第一被管对象设备确定创建第三事务资源失败,并向应用服务器发送第一事务资源创建失败响应。
进一步地,第二被管设备根据上述第四事务资源创建请求成功创建第二事务的第四事务资源(具体参照第三事务资源的创建过程),并向应用服务器发送所述第二事务的第四事务资源创建成功的响应,该第四事务资源创建成功的响应中携带第四事务资源的标识。
应用服务器在接收到第一被管对象设备发送的第二事务的第三事务资源创建失败的响应以及第二被管对象设备发送的第二事务的第四事务资源创建成功的响应后,确定向创建第四事务资源成功的第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该针对第二事务的第四事务资源的处理请求中携带上述第四事务资源的标识。
S205:向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备接收所述应用服务器发送的针对所述第二事务的第四事务资源的处理请求,所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
具体的,该针对第二事务的第四事务资源的处理请求可以为删除第四事务资源的删除请求;也可以为更新第四事务资源中的第四执行时间的更新请求,以使第二被管对象设备获得新的第四事务资源(当第一被管对象设备判断第三事务资源创建请求中的第三执行时间不合适时,其会向应用服务器发送携带更新后的第三执行时间的第三事务资源创建失败的响应,应用服务器因此会向第二被管对象设备发送携带更新后的第三执行时间的处理请求;当然,第一被管对象设备也会根据该更新后的第三执行时间创建新的第三事务资源)。
S206:向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备根据所述第四事务资源的标识处理创建的第四事务
资源。
具体的,上述向应用服务器发送第四事务资源创建成功的响应的第二被管对象设备在接收到应用服务器发送的针对第二事务的第四事务资源的处理请求后,根据该处理请求中携带的第四事务资源的标识处理第二被管对象设备上已创建成功的第四事务资源。
可选的,可以是第二被管对象设备为了保证第二事务的原子性,删除第二被管对象设备上的第四事务资源(因为第三事务资源没有创建成功,则第二事务本身也就不能执行成功,因此同属于第二事务的第四事务资源即使创建成功,也应该删除)。
可选的,可以是更新第二被管对象设备上的第四事务资源执行第四待执行的操作的时间,使得第一被管对象设备执行创建的新的第三事务资源的第三待执行的操作的时间和第二被管对象设备执行新的第四事务资源的第四待执行的操作的时间一致,并且在更新后的第三执行时间到达之前,应用服务器并没有发送任何的处理请求给第一被管对象设备和第二被管对象设备,因此,第一被管对象设备和第二被管对象设备可以同时执行属于同一事务所包含的事务资源。
本发明实施例提供的分布式事务资源执行的方法,通过第一被管对象设备和第二被管对象设备分别接收应用服务器发送的携带相同执行时间的第三事务资源创建请求和第四事务资源创建请求,在第二被管对象设备根据第四事务资源创建请求中的第四执行时间确定创建第四事务资源成功,并且在第四执行时间到达之前接收到应用服务器发送的针对第二事务的第四事务资源的处理请求,第二被管对象设备根据该处理请求处理已创建的第四事务资源。本发明实施例提供的方法,使得第二被管对象设备可以根据应用服务器发送的针对第二事务的第四事务资源的处理请求(当处理请求为更新请求时)确保自身执行更新后的第四事务资源的时间与第一被管对象设备执行自身所创建的新的第三事务资源的时间相同,即确保第一被管对象设备和第二被管对象设备可以同时执行各自的待执行的操作,保证了事务资源的同时执行。
在上述图3所示实施例的基础上,作为本发明实施例的第一种可能的
实施方式,本发明实施例涉及的是被管对象设备只执行一个事务所包括的多个事务资源,且执行失败(即执行事务失败)的具体场景,即针对M2M系统中的第一被管对象设备上的第一待操作资源,当前并没有关联其他事务的事务资源的场景。上述S203具体可以为:
若第一被管对象设备通过上述第三待执行的操作中所包含的信息确定第三事务资源创建请求不满足上述创建事务资源的条件中的(1)的内容,则第一被管对象设备根据上述第三事务资源创建请求确定第三事务资源创建失败,并向应用服务器发送第二事务的第三事务资源创建失败的响应,以告知应用服务器第三事务资源无法创建成功。
若第一被管对象设备通过上述第三待执行的操作中所包含的信息确定第三事务资源创建请求不满足上述创建事务资源的条件中的(2)至(4)中任一项的内容,则第一被管对象设备根据上述第三事务资源创建请求确定第三事务资源创建失败,并向应用服务器发送携带更新后的第三执行时间的第三事务资源创建失败的响应,以告知应用服务器当前的第三执行时间不合适,但第一被管对象设备利用其在第三事务资源创建失败的响应中所携带的更新后的第三执行时间,第三事务资源可以创建成功。
为了更好的说明本实施例的技术方案,此处继续以上述智能灌溉的例子为例来进行说明:
应用服务器分别向阀门1、阀门2和阀门3发送事务资源创建请求。其中,发送给阀门1的事务资源创建请求为第三事务资源创建请求,发送给阀门2的事务资源创建请求为第四事务资源创建请求,发送给阀门3的事务资源创建请求为另一第四事务资源创建请求。应用服务器发送给三个阀门的事务资源创建请求中的执行时间均为12:00,且分别包含针对不同的阀门进行调节的请求,发送给阀门1的第三事务资源请求是请求将阀门1的开启程度调整为20%,发送给阀门2的第四事务资源请求是请求将阀门2的开启程度调整为30%,发送给阀门3的第四事务资源请求是请求将阀门3的开启程度调整为40%。
以阀门1为例(阀门2和阀门3执行的操作可以参见阀门1),阀门1首先检查应用服务器是不是拥有创建第三事务资源的权限;其次再检查第三事务资源创建请求中包含的第三待执行的操作,该第三待执行的操作
的内容为将阀门1大小调整20%;阀门1进一步检查应用服务器有没有对阀门1上的待操作资源进行调整的权限,并检查20%是不是符合阀门的调整幅度等;最后,阀门1再根据第三事务资源创建请求中提供的第三执行时间,结合自己的休眠时间,最后得出结论,第三事务资源由于不符合(4)的条件因此不能创建成功,但是其在12:01时可以创建成功,因此,第三被管对象设备向应用服务器发送携带更新后的第三执行时间(即12:01)的第三事务资源创建失败的响应。在该例子中,假设阀门2和阀门3的第四事务资源是可以创建成功的,即阀门2和阀门3所接收到的第四事务资源创建请求满足上述(1)至(4)的条件,因此阀门2和阀门3会向应用服务器发送相应的事务资源创建成功响应,并在该响应中携带各自创建的第四事务资源的标识,以告知应用服务器阀门2和阀门3的第四事务资源创建成功。
由于当前应用服务器收到了阀门1发送的第三事务资源创建失败的响应,且该响应中携带了更新后的第三执行时间,因此,应用服务器会向阀门2和阀门3发送针对第二事务的第四事务资源的处理请求,该处理请求可以为携带了上述更新后的第三执行时间和上述第四事务资源的标识的更新请求,可选的,该更新请求中还可以进一步携带第四待执行的操作;并且,应用服务器还会向阀门1发送新的第三事务资源创建请求,该新的第三事务资源创建请求中携带了上述更新后的第三执行时间,可选的,还可以进一步携带上述第三待执行的操作。
当阀门1收到该新的第三事务资源创建请求时,同样可以执行上述(1)至(4)内容,由于之前阀门1已经判断第三待执行的操作符合(1)至(3)的内容,因此由于新的第三事务资源创建请求中携带的第三待执行的操作未发生变化,故阀门1可以直接判断更新后的第三执行时间是否符合(4)的内容;并且,由于该更新后的第三执行时间是阀门1自己根据自身的工作情况向应用服务器推荐的时间,也就是说该更新后的第三执行时间是可以确保新的第三事务资源创建成功的时间。当阀门2和阀门3接收到应用服务器发送的更新请求时,同样执行上述(1)至(4)的内容,由于之前阀门2和阀门3分别已经判断各自的第四待执行的操作符合(1)至(3)的内容,因此由于上述更新请求中携带的第四待执行的操作未变,
故阀门2和阀门3也可以直接判断更新后的第三执行时间是否符合(4)的内容。假设阀门2判断所接收到的更新请求中的更新后的第三执行时间符合(4)的内容,即阀门2上的第四事务资源可以更新成功,同时假设阀门3判断所接收到的更新请求中的更新后的第三执行时间不符合(4)的内容,即阀门3确定自身在更新后的第三执行时间到达时已经进入休眠状态,且恢复工作的时间不确定,因此,阀门3上的第四事务资源无法创建成功,且阀门3本地已经不能支持任何事务资源的创建了。故阀门3向应用服务器发送第二事务的第四事务资源创建失败的响应,告知应用服务器自身已经不能支持任何事务资源的创建这一情况。
此时,阀门1上的新的第三事务资源已经创建成功,阀门2上的第四事务资源已经更新成功,但在更新后的第三执行时间到达之前,由于应用服务器接收到了阀门3发送的第二事务的第四事务资源创建失败的响应,并且获知阀门3已经不支持任何事务资源的创建了,故应用服务器会向阀门1和阀门2发送删除请求,以删除阀门1上的新的第三事务资源和阀门2上更新后的第四事务资源,确保事务的原子性。故应用服务器上当前的第二事务不能执行成功。
当阀门1收到该新的第三事务资源创建请求时,若阀门1根据新的第三事务资源创建请求创建新的第三事务资源成功,且阀门2和阀门3根据更新请求中的更新后的第三执行时间更新第四事务资源成功,并且阀门1、阀门2和阀门3在更新后的第三执行时间到达之前均未收到应用服务器发送的处理请求,则在更新后的第三执行时间到达时,阀门1、阀门2和阀门3同时执行新的第三事务资源和更新后的第四事务资源。
本发明实施例提供的分布式事务资源执行的方法,通过第一被管对象设备在根据第三事务资源创建请求创建第三事务资源失败时,向应用服务器发送第二事务的第三事务资源创建失败的响应,并通过在第三事务资源创建失败的响应中携带更新后的第三执行时间,以使应用服务器向第一被管对象设备发送新的第三事务资源创建请求,以创建新的第三事务资源,并且应用服务器向第二被管对象设备发送针对第二事务的第四事务资源的处理请求;当该处理请求为携带更新后的第三执行时间的更新请求时,使得第一对象设备和第二被管对象设备可以根据该更新后的第三执行时
间处理各自当前所创建的事务资源,确保各自当前的事务资源在该更新后的第三执行时间到达时可以同时执行。
在实际的M2M系统中,经常会出现针对一个被管对象设备上的待操作资源,已经存在的事务资源还没有执行,新的事务资源创建请求又发送过来,此时将会形成针对该待操作资源的事务资源队列。因此,在上述图3所示实施例的基础上,作为本发明实施例的第二种可能的实施方式,本发明实施例适用的是被管对象设备上并发事务资源处理的场景,即被管对象设备上存在事务资源队列的场景。本实施例涉及的是第一被管独对象设备创建在第一事务资源队列中创建第三事务资源失败的具体过程。参见图4所示,上述S203具体可以包括:
S301:第一被管对象设备确定所述第一被管对象设备存在第一事务资源队列;其中,所述第一事务资源队列包括至少一个事务资源。
由于第一被管对象设备和第二被管对象设备所执行的操作类似,因此下述的技术方案以第一被管对象设备为主要描述对象,第二被管对象设备在接收到第四事务资源创建请求后所执行的操作可以参照第一被管对象设备在接收到第三事务资源创建请求后所执行的操作。
具体的,当第一被管对象设备接收到应用服务器针对第二事务发送的第三事务资源创建请求后,根据第三事务资源创建请求中携带的第一待操作资源的标识确定是否存在该第一待操作资源对应的第一事务资源队列。其中,该第一事务资源队列包括至少一个事务资源,且该第一事务资源队列中的事务资源按照该第一事务资源队列中的每个事务资源的执行时间进行排列。若第一被管对象设备判断自身不存在第一事务资源队列,则第一被管对象设备可以按照上述图1所示的实施例或者图3所示的实施例中的第一种可能的实施方式中的技术方案执行,在此不再赘述。如果判断存在第一事务资源队列,执行步骤302
S302:第一被管对象设备根据所述第三执行时间和所述第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件。
具体的,当第一被管对象设备根据第一待操作资源标识确定第一被管对象设备存在第一事务资源队列,则第一被管对象设备根据上述第三事务
资源创建请求中的第三执行时间和第一事务资源队列中的每个事务资源的执行时间进行排列对比,确定第三事务资源在第一事务资源队列中的插入位置。需要说明的是,第一被管对象设备当前还没有成功创建第三事务资源,这里所说的第三事务资源是待创建的事务资源。
进一步的,第一被管对象设备可以根据上述第三执行时间和第一被管对象设备上的第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件,即确定第三事务资源创建失败,并向应用服务器发送第二事务的第三事务资源创建失败的响应。其中,所述第一待操作资源的状态具体为第一事务资源队列中至少一个事务资源执行后的待操作资源的状态。其中,第一被管对象设备确定所述第三事务资源不满足预设的资源创建条件具体可以为下述A和B两种情况:
A:第一被管对象设备根据所述第三执行时间和所述第一被管对象设备的第一待操作资源的状态确定将所述第三执行时间更新为所述第一事务资源队列中各事务资源的执行时间之后的任一时间,均不满足预设的资源创建条件,所述第一被管对象设备向所述应用服务器发送第一失败响应。
可选的,当上述第一事务资源队列包括的预留状态的事务资源为一个,且该第一事务资源队列中位于首位的事务资源的状态为预留状态,则上述第一被管对象设备根据所述第三执行时间和所述第一待操作资源的状态确定将所述第三执行时间更新为所述第一事务资源队列中各事务资源的执行时间之后的任一时间时,均不满足预设的资源创建条件,具体可以包括下述a、b、c三种情况。需要说明的是,该预设的资源创建条件,具体可以参见a、b、c中介绍的内容。另外,该预设的资源创建条件与上述实施例中(1)至(4)的内容是不同的例如:在下述预设的资源创建条件a中,第一被管对象设备只是在第三事务资源位于队首时,确定第三事务资源位于第一事务资源队列其他任一位置时均不能执行成功,只要满足这种条件,则第一被管对象设备就确定第三事务资源创建失败;但是,对于如何具体判断第三事务资源在第一事务资源队列中的其他任一位置时是否执行成功,其具体的判断步骤可以按照上述实施例中的(1)-(4)的条件来进行判断。
a:若根据第三执行时间,确定在上述第三事务资源在第一事务资队列的插入位置之前不存在第一事务资源队列的任何事务资源,且第一被管对象设备判断若将第三事务资源的第三执行时间更新为第一事务资源队列中的各事务资源的执行时间之后的任一时间时(即第一被管对象设备判断若将第三事务资源插入第一事务资源队列中的其他任一位置时),确定第三事务资源在第三执行时间到达时均不能执行成功。也就是说,基于第一事务资源队列中的任何一个事务资源执行之后的第一待操作资源的状态,第三事务资源均不能切换为预留状态,则第一被管对象设备确定创建所述第三事务资源失败,并向应用服务器发送第一失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带第四事务资源的标识的删除请求,该删除请求用于删除所有第二被管对象设备上的已创建成功的第四事务资源。
需要说明的是,本发明实施例所涉及的事务资源在执行到达时不能执行成功,也可以理解为事务资源不能切换为预留状态。另外,如上所述,在a的情形中,上述第一待操作资源状态为第一事务资源队列中任一位置的事务资源执行之后的第一待操作资源的状态。
b:若根据第三执行时间,确定在第三事务资源在第一事务资源队列中的插入位置之前和之后均存在第一事务资源队列的事务资源,则第一被管对象设备根据第三位置上的事务资源执行后的第一待操作资源的状态,判断第三事务资源是否能够执行成功;其中,该第三位置为与第三事务资源在第一事务资源队列中的插入位置相邻的前一个位置。
若上述第一被管对象设备根据上述第三位置上的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源不能执行成功,且判断若将所述第三事务资源的第三执行时间更新为第一事务资源队列中的各事务资源的执行时间之后的任一时间时(即将第三事务资源插入所述第一事务资源队列中的其他任一位置时),确定该第三事务资源也均不能执行成功。也就是说,基于第一事务资源队列中的任何一个事务资源执行之后的状态,第三事务资源均不能切换为预留状态,则第一被管对象设备确定创建所述第三事务资源失败,并向应用服务器发送第一失败响应,以使应用
服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带第四事务资源标识的删除请求,该删除请求用于删除所有第二被管对象设备上已创建成功的第四事务资源。
若上述第一被管对象设备根据上述第三位置上的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源能够执行成功,并根据该第三事务资源执行之后的第一待操作资源的状态,判断第四位置上的第一事务资源队列的事务资源不能执行成功(该第四位置为与第三事务资源在第一事务资源队列中的插入位置相邻的后一个位置);且判断将上述第三事务资源的第三执行时间更新为第一事务资源队列中各事务资源的执行时间之后的任一时间时(即判断将第三事务资源插入上述第一事务资源队列中的其他任一位置时),第一被管对象设备确定该第三事务资源也均不能执行成功。也就是说,基于第一事务资源队列中的任何一个事务资源执行之后的状态,第三事务资源均不能切换为预留状态,则第一被管对象设备确定创建所述第三事务资源失败,并向应用服务器发送第一失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带第四事务资源的标识的删除请求,该删除请求用于删除所有第二被管对象设备上已创建成功的第四事务资源。
如上所述,在b的情形中,上述第一待操作资源状态可以为第三位置上的事务资源执行后的第一待操作资源的状态;还可以为第三事务资源执行之后的第一待操作资源的状态;还可以为第一事务资源队列中任一事务资源执行之后的第一待操作资源的状态。第一待操作资源的状态的内容依据不同的情况而定。
c:若根据第三执行时间,确定在第三事务资源在第一事务资源队列中的插入位置之前存在第一事务资源队列的事务资源,且在该插入位置之后不存在第一事务资源队列的事务资源,则第一被管对象设备根据第三位置上的事务资源执行后的第一待操作资源状态,判断上述第三事务资源是否能够执行成功。
若第一被管对象设备根据上述第三位置上的事务资源执行后的第一
待操作资源的状态,判断上述第三事务资源不能执行成功,且判断若将该第三事务资源的第三执行时间更新为第一事务资源队列中各事务资源的执行之间之后的任一时间时(即将第三事务资源插入上述第一事务资源队列中的其他任一位置时),第一被管对象设备确定该第三事务资源均不能执行成功。也就是说,基于第一事务资源队列中的任何一个事务资源执行之后的状态,第三事务资源均不能切换为预留状态,则第一被管对象设备确定创建第三事务资源失败,并向应用服务器发送第一失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带第四事务资源的标识的删除请求,该删除请求用于删除所有第二被管对象设备上已创建成功的第四事务资源。
如上所述,在c的情形中,上述第一待操作资源状态可以为第三位置上的事务资源执行后的第一待操作资源的状态,还可以为第一事务资源队列中任一事务资源执行之后的第一待操作资源的状态。第一待操作资源的状态的内容依据不同的情况而定。
可选的,当上述第一事务资源队列包括的预留状态的事务资源为至少两个,则第一被管对象设备根据所述第三执行时间和所述第一待操作资源的状态确定将所述第三执行时间更新为所述第一事务资源队列中各事务资源的执行时间之后的任一时间时,均不满足预设的资源创建条件,具体可以包括下述d、e两种情况。需要说明的是,该预设的资源创建条件,具体可以参见d、e中介绍的判断条件。
d:若第一被管对象设备根据第三事务资源执行之后的第一待操作资源的状态,判断位于第三事务资源在第一事务资源队列中的插入位置之后其他任一预留状态的第一事务资源队列的事务资源均不能执行或者其中一个不能执行成功,且判断若将该第三事务资源的第三执行时间更新为第一事务资源队列中各事务资源的执行时间之后的任一时间时(即将该第三事务资源插入上述第一事务资源队列中的其他任一位置时),第一被管对象设备根据第一事务队列的所述其他任一位置的事务资源执行之后的第一待操作资源的状态,判断所述其他任一位置之后的所有处于预留状态的
事务资源也均不能执行成功或者其中一个不能执行成功,则第一被管对象设备确定该第三事务资源创建失败,并向所述应用服务器发送第一失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带第四事务资源的标识的删除请求,该删除请求用于删除所有第二被管对象设备上已创建成功的第四事务资源。
如上所述,在d的情形中,上述第一待操作资源状态可以为第三事务资源执行之后的第一待操作资源的状态,还可以为第一事务队列中其他任一位置的事务资源执行之后的第一待操作资源的状态。第一待操作资源的状态的内容依据不同的情况而定。
e:若第一被管对象设备根据第三事务资源执行之后的第一待操作资源的状态,判断位于第三事务资源在第一事务资源队列中的插入位置之后其他任一预留状态的事务资源均能够执行成功,则第一被管对象设备进一步判断在该插入位置之前是否还存在第一事务资源队列的其他事务资源。
若在第三事务资源在第一事务资源队列的插入位置之前存在第一事务资源队列的其他事务资源,则第一被管对象设备根据该插入位置之前存在的第一事务资源队列的其他事务资源中的任一个事务资源执行后的第一待操作资源的状态,判断第三事务资源是否均能够执行成功;若否,则第一被管对象设备进一步根据第三位置上的第一事务资源队列的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源是否能够执行成功。若否,则第一被管对象设备进一步判断若将该第三事务资源的执行时间更新为第一事务资源队列中各事务资源的执行时间之后的任一时间时,该第三事务资源是否能够执行成功(即判断若将该第三事务资源插入上述第一事务资源队列中的其他任一位置时,该第三事务资源是否能够执行成功)。当第一被管对象设备判断若将该第三事务资源插入上述第一事务资源队列中的所述其他任一位置时,该第三事务资源均不能执行成功,则第一被管对象设备确定该第三事务资源创建失败,并向所述应用服务器发送第一失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带第四事务资源的标识的删除请求,该删除请求用于删除所
有第二被管对象设备上已创建成功的第四事务资源。
如上所述,在e的情形中,上述第一待操作资源状态可以为第三事务资源执行之后的第一待操作资源的状态,还可以为上述确定的插入位置之前的任一个事务资源执行后的第一待操作资源的状态,还可以为第三位置上的事务资源执行后的第一待操作资源的状态,还可以为第一事务队列中其他任一位置的事务资源执行之后的第一待操作资源的状态。第一待操作资源的状态的内容依据不同的情况而定。
综上所述,上述a、b、c、d、e五种情况,均是第一被管对象设备根据第三执行时间和第一待操作资源的状态确定将第三事务资源的第三执行时间更新为第一事务资源队列中各事务资源的执行时间之后的任一时间时,均不满足预设的资源创建条件的情况。
B:第一被管对象设备根据所述第三执行时间和所述第一被管对象设备的第一待操作资源的状态确定第三事务资源不满足预设的资源创建条件,则第一被管对象设备根据该预设的资源创建条件将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间(即该时间使得第三事务资源满足所述预设的资源创建条件);所述第一被管对象设备向所述应用服务器发送携带更新后的第三执行时间的第二失败响应。
可选的,当上述第一事务资源队列包括的预留状态的事务资源为一个,且该第一事务资源队列中位于首位的事务资源的状态为预留状态,则第一被管对象设备根据所述第三执行时间和所述第一待操作资源的状态确定将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间时满足所述预设的资源创建条件,具体可以包括下述f、g、h三种情况。需要说明的是,该预设的资源创建条件,具体可以参见f、g、h中介绍的判断条件。
f:若根据第三执行时间,确定在上述第三事务资源在第一事务资队列的插入位置之前不存在第一事务资源队列的任何事务资源,且第一被管对象设备判断若将第三事务资源的第三执行时间更新为第一事务资源队列中一个事务资源的执行时间之后的时间时(即第一被管对象设备判断若
将第三事务资源插入第一事务资源队列中的某一个位置时),第一被管对象设备根据该位置的事务资源执行后的第一待操作资源的状态,确定该第三事务资源能够执行成功,则第一被管对象设备确定创建所述第三事务资源失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带上述更新后的第三执行时间和第四事务资源标识的更新请求;并使得应用服务器向第一被管对象设备发送携带该更新后的第三执行时间的新的第三事务资源创建请求,以创建新的第三事务资源。其中,该更新后的第三执行时间为第一被管对象设备在上述第一事务资源队列中成功创建新的第三事务资源的时间。
如上所述,上述f情形中的第一待操作资源的状态可以为将第三事务资源插入第一事务资源队列中的某一个位置,该位置的事务资源执行之后的第一待操作资源的状态(该事务资源的执行要确保第三事务资源能够执行成功)。第一待操作资源的状态的内容依据不同的情况而定。
g:若根据第三执行时间,确定在第三事务资源在第一事务资源队列中的插入位置之前和之后均存在第一事务资源队列的事务资源,则第一被管对象设备根据第三位置上的事务资源执行后的第一待操作资源的状态,判断第三事务资源是否能够执行成功;其中,该第三位置为与第三事务资源在第一事务资源队列中的插入位置相邻的前一个位置。
若上述第一被管对象设备根据上述第三位置上的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源不能执行成功,且判断若将该第三事务资源的第三执行时间更新为第一事务资源队列中一个事务资源的执行时间之后的时间时(即将第三事务资源插入第一事务资源队列中的某一个位置时),第一被管对象设备根据该位置的事务资源执行后的第一待操作资源的状态,确定该第三事务资源能够执行成功,则第一被管对象设备确定创建第三事务资源失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带所述更新后的第三执行时间和第四事务资源
的标识的更新请求;并使得应用服务器向第一被管对象设备发送携带该更新后的第三执行时间的新的第三事务资源创建请求,以创建新的第三事务资源。其中,该更新后的第三执行时间为第一被管对象设备在上述第一事务资源队列中成功创建新的第三事务资源的时间。
若上述第一被管对象设备根据上述第三位置上的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源能够执行成功,且第一被管对象设备根据该第三事务资源执行之后的第一待操作资源的状态,判断第四位置上的第一事务资源队列的事务资源不能执行成功(该第四位置为与第三事务资源在第一事务资源队列中的插入位置相邻的后一个位置),则第一被管对象设备进一步判断若将上述第三事务资源的第三执行时间更新为第一事务资源队列中一个事务资源的执行时间之后的时间时(即将第三事务资源插入第一事务资源队列中的某一个位置时),第一被管对象设备根据该位置的事务资源执行后的第一待操作资源的状态,该第三事务资源能够执行成功,则第一被管对象设备确定创建第三事务资源失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带上述更新后的第三执行时间和第四事务资源的标识的更新请求;并使得应用服务器向第一被管对象设备发送携带该更新后的第三执行时间的新的第三事务资源创建请求,以创建新的第三事务资源。其中,该更新后的第三执行时间为第一被管对象设备在上述第一事务资源队列中成功创建新的第三事务资源的时间。
如上所述,上述g情形中的第一待操作资源的状态可以为第三位置上的事务资源执行后的第一待操作资源的状态,还可以为第三事务资源执行之后的第一待操作资源的状态,还可以为将第三事务资源插入第一事务资源队列中的某一个位置,该位置的事务资源执行之后的第一待操作资源的状态(该事务资源的执行要确保第三事务资源能够执行成功)。第一待操作资源的状态的内容依据不同的情况而定。
h:若根据第三执行时间,确定在第三事务资源在第一事务资源队列中的插入位置之前存在第一事务资源队列的事务资源,且在该插入位置之
后不存在第一事务资源队列的事务资源,则第一被管对象设备根据第三位置上的事务资源执行后的第一待操作资源状态,判断上述第三事务资源是否能够执行成功。
若第一被管对象设备根据上述第三位置上的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源不能执行成功,且判断若将该第三事务资源的第三执行时间更新为第一事务资源队列中一个事务资源的执行时间之后的时间时(即将第三事务资源插入上述第一事务资源队列中的某一个位置时),第一被管对象设备根据该位置的事务资源执行后的第一待操作资源的状态,该第三事务资源能够执行成功,则第一被管对象设备确定创建第三事务资源失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带所述更新后的第三执行时间和第四事务资源的标识的更新请求;并使得应用服务器向第一被管对象设备发送携带该更新后的第三执行时间的新的第三事务资源创建请求,以创建新的第三事务资源。其中,该更新后的第三执行时间为第一被管对象设备在上述第一事务资源队列中成功创建新的第三事务资源的时间。
需要说明的是,上述h情形中的第一待操作资源的状态可以为第三位置上的事务资源执行后的第一待操作资源的状态,还可以为将第三事务资源插入第一事务资源队列中的某一个位置,该位置的事务资源执行之后的第一待操作资源的状态(该事务资源的执行要确保第三事务资源能够执行成功)。第一待操作资源的状态的内容依据不同的情况而定。
可选的,当上述第一事务资源队列包括的预留状态的事务资源为至少两个,则第一被管对象设备根据所述第三执行时间和所述第一待操作资源的状态确定将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间时,满足预设的资源创建条件,具体可以包括下述i、j两种情况。需要说明的是,该预设的资源创建条件,具体可以参见i、j中介绍的判断条件。
i:若第一被管对象设备根据第三事务资源执行之后的第一待操作资
源的状态,判断位于第三事务资源在第一事务资源队列中的插入位置之后其他任一预留状态的第一事务资源队列的事务资源均不能执行或者其中一个不能执行成功,且判断若将该第三事务资源的第三执行时间更新为第一事务资源队列中一个事务资源的执行时间之后的时间时(即将该第三事务资源插入上述第一事务资源队列中的某一个位置时),该第一事务资源队列中处于该时间之后的预留状态的事务资源均能够执行成功(即第一被管对象设备根据该位置的事务资源执行之后的第一待操作资源的状态,确定该位置之后的所有处于预留状态的第一事务资源队列的事务资源均能够执行成功);则第一被管对象设备确定该第三事务资源创建失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带所述更新后的第三执行时间和第四事务资源的标识的更新请求;并使得应用服务器向第一被管对象设备发送携带该更新后的第三执行时间的新的第三事务资源创建请求,以创建新的第三事务资源。其中,该更新后的第三执行时间为第一被管对象设备在上述第一事务资源队列中成功创建新的第三事务资源的时间。
需要说明的是,上述i情形中的第一待操作资源的状态可以为第三事务资源执行之后的第一待操作资源的状态,还可以为将第三事务资源插入第一事务资源队列中的某一个位置,该位置的事务资源执行之后的第一待操作资源的状态(该事务资源的执行要确保该位置之后的所有处于预留状态的第一事务资源队列的事务资源均能够执行成功)。第一待操作资源的状态的内容依据不同的情况而定。
j:若第一被管对象设备根据第三事务资源执行之后的第一待操作资源的当前状态,判断位于第三事务资源在第一事务资源队列中的插入位置之后其他任一预留状态的事务资源均能够执行成功,则第一被管对象设备进一步判断在该插入位置之前是否还存在第一事务资源队列的其他事务资源。
若在第三事务资源在第一事务资源队列的插入位置之前存在第一事务资源队列的其他事务资源,则第一被管对象设备根据该插入位置之前存
在的第一事务资源队列的其他事务资源中的任一个事务资源执行后的第一待操作资源的状态,判断第三事务资源是否均能够执行成功;若否,则第一被管对象设备进一步根据第三位置上的第一事务资源队列的事务资源执行后的第一待操作资源的状态,判断上述第三事务资源是否能够执行成功。若否,则第一被管对象设备进一步判断若将该第三事务资源的执行时间更新为第一事务资源队列中一个事务资源的执行时间之后的时间时,该第三事务资源是否能够执行成功(即若将第三事务资源插入上述第一事务资源队列中的某一个位置时,第一被管对象设备根据该位置的事务资源执行后的第一待操作资源的状态,确定该第三事务资源能够执行成功),则第一被管对象设备确定该第三事务资源创建失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以使应用服务器向接收到第四事务资源创建请求的所有第二被管对象设备发送针对第二事务的第四事务资源的处理请求,且该处理请求为携带所述更新后的第三执行时间和第四事务资源的标识的更新请求;并使得应用服务器向第一被管对象设备发送携带该更新后的第三执行时间的新的第三事务资源创建请求,以创建新的第三事务资源。其中,该更新后的第三执行时间为第一被管对象设备在上述第一事务资源队列中成功创建新的第三事务资源的时间。
需要说明的是,上述i情形中的第一待操作资源的状态可以为第三事务资源执行之后的第一待操作资源的状态,还可以为第三事务资源在第一事务资源队列中的插入位置之前存在的其他事务资源中的任一个事务资源执行后的第一待操作资源的状态,还可以为第三位置上的事务资源执行后的第一待操作资源的状态,还可以为将第三事务资源插入第一事务资源队列中的某一个位置,该位置的事务资源执行之后的第一待操作资源的状态(该事务资源的执行要确保第三事务资源执行成功)。第一待操作资源的状态的内容依据不同的情况而定。
综上所述,上述f、g、h、i、j五种情况,均是第一被管对象设备根据第三执行时间和第一待操作资源的状态确定将第三事务资源的第三执行时间更新为第一事务资源队列中任一事务资源的执行时间之后的时间时,满足预设的资源创建条件的情况。
在上述图3所示实施例的基础上,作为本发明实施例的第三种可能的实施方式,本发明实施例适用的也是被管对象设备上并发事务资源处理的场景,即被管对象设备上存在事务资源队列的场景。本实施例涉及的是第二被管独对象设备创建在第二事务资源队列中创建第四事务资源成功的具体过程。参见图5所示,上述S204具体可以包括:
S401:第二被管对象设备确定所述第二被管对象设备存在第二事务资源队列;其中,所述第二事务资源队列包括至少一个事务资源。
具体的,当第二被管对象设备接收到应用服务器发送的第四事务资源创建请求后,确定是否存在第二事务资源队列。其中,该第二事务资源队列包括至少一个事务资源,且该第二事务资源队列中的事务资源按照该第二事务资源队列中的每个事务资源的执行时间进行排列。若第二被管对象设备判断自身不存在第二事务资源队列,则第二被管对象设备可以按照上述图1所示的实施例一或者图3所示的实施例中的第一种可能的实施方式中的技术方案执行,在此不在赘述。如果判断存在第二事务资源队列,执行步骤402.
S402:第二被管对象设备根据所述第四执行时间以及所述第二被管对象设备的第二待操作资源的状态确定所述第四事务资源满足预设的资源创建条件,并创建所述第四事务资源。
具体的,当第二被管对象设备确定存在第二事务资源队列,则第二被管对象设备根据上述第四事务资源创建请求中的第四执行时间和第二事务资源队列中的每个事务资源的执行时间进行排列对比,确定第四事务资源在第二事务资源队列中的插入位置。需要说明的是,第二被管对象设备当前还没有成功创建第四事务资源,这里所说的第四事务资源是待创建的事务资源。
进一步地,第二被管对象设备根据所述第四执行时间和所述第二待操作资源的状态确定所述第四事务资源满足预设的资源创建条件,并创建第四事务资源,以及向所述应用服务器发送携带第四事务资源的标识的第一事务资源创建成功响应。具体可以包括分为下述C和D两种情况:
C:当上述第二事务资源队列包括的预留状态的事务资源为一个,且该第二事务资源队列中位于首位的事务资源的状态为预留状态,则第二被
管对象设备根据第四执行时间和第二待操作资源的状态确定第四事务资源,满足预设的资源创建条件,并创建第四事务资源。具体可以包括下述k、l两种情况。需要说明的是,该预设的资源创建条件,具体可以参见k、l中介绍的判断条件。
k:若根据第四执行时间,确定在上述第四事务资源在第二事务资源队列的插入位置之前和之后均存在第二事务资源队列的事务资源,则第二被管对象设备根据第一位置上的事务资源执行后的第二待操作资源的状态,判断第四事务资源是否能够执行成功;其中,该第一位置为与第四事务资源在第二事务资源队列中的插入位置相邻的前一个位置。
若上述第二被管对象设备根据上述第一位置上的事务资源执行后的第二待操作资源的状态,判断上述第四事务资源能够执行成功,并根据该第四事务资源执行之后的第二待操作资源的状态,判断第二位置上的第二事务资源队列的事务资源也能够执行成功(该第二位置为与第四事务资源在第二事务资源队列中的插入位置相邻的后一个位置),则第二被管对象设备确定创建所述第四事务资源成功,并向应用服务器发送第二事务的第四事务资源创建成功的响应,且该响应中携带的第四事务资源的状态为半预留状态,且携带第四事务资源的标识。
可选的,在第四事务创建成功后,并且在第四执行时间到达时第二被管对象设备执行第四事务资源中所包括的第四待执行的操作,并在执行后将第四事务资源从队列中删除,并将下一个事务资源(即第二位置上的事务资源)从半预留状态切换为预留状态,并告知应用服务器该第二位置的事务资源已经切换为预留状态。
如上所述,在k的情形中,该第二待操作资源的状态可以为第一位置的事务资源执行之后的第二待操作资源的状态,还可以为第四事务资源执行之后的第二待操作资源的状态。该第二待操作资源的状态的内容依据不同的情况而定。
l:若根据第四执行时间,确定在第四事务资源在第二事务资源队列中的插入位置之前存在第二事务资源队列的事务资源,且上述插入位置之后不存在第二事务资源队列的事务资源,则当第二被管对象设备根据第一位置上的事务资源执行后的第二待操作资源状态,判断上述第四事务资源
能够执行成功,则第二被管对象设备确定创建所述第四事务资源成功,并向应用服务器发送第二事务的第四事务资源创建成功的响应,且该响应中携带的第四事务资源的状态为半预留状态,并且携带第四事务资源的标识。
如上所述,在l的情形中,该第二待操作资源的状态可以为第一位置的事务资源执行之后的第二待操作资源的状态。
D:当上述第二事务资源队列包括的预留状态的事务资源为至少两个,则第二被管对象设备根据第四执行时间和第二待操作资源的状态确定第四事务资源满足预设的资源创建条件,并创建第四事务资源。具体可以包括下述m、n、p三种情况。需要说明的是,该预设的资源创建条件,具体可以参见m、n、p中介绍的判断条件。
m:若第二被管对象设备根据第四事务资源执行之后的第二待操作资源的状态,判断位于第四事务资源在第二事务资源队列中的插入位置之后其他任一预留状态的事务资源均能够执行成功,且第二被管对象设备判断在该插入位置之前不存在第二事务资源队列的其他事务资源,则第二被管对象设备确定创建所述第四事务资源成功,并向应用服务器发送第二事务的第四事务资源创建成功的响应,且该响应中携带的第四事务资源的状态为预留状态,且携带第四事务资源的标识。
如上所述,在m的情形中,该第二待操作资源的状态可以为第四事务资源执行之后的第二待操作资源的状态。
n:若第二被管对象设备根据第四事务资源执行之后的第二待操作资源的状态,判断位于第四事务资源在第二事务资源队列中的插入位置之后其他任一预留状态的第二事务资源队列的事务资源均能够执行成功,且第二被管对象设备判断在上述插入位置之前存在第二事务资源队列的其他事务资源,则第二被管对象设备进一步根据该插入位置之前存在的第二事务资源队列的其他事务资源中的任一个事务资源执行后的第二待操作资源的状态,判断第四事务资源是否均能够执行成功;若是,则第二被管对象设备确定创建所述第四事务资源成功,并向应用服务器发送第二事务的第四事务资源创建成功的响应,且该响应中携带的第四事务资源的状态为预留状态,且携带第四事务资源的标识。
如上所述,在n的情形中,该第二待操作资源的状态可以为第四事务资源执行之后的第二待操作资源的状态,还可以为第四事务资源在第二事务资源队列中的插入位置之前存在的其他事务资源中的任一个事务资源执行后的第二待操作资源的状态。该第二待操作资源的状态的内容依据不同的情况而定。
p:若第二被管对象设备根据第四事务资源执行之后的第二待操作资源的状态,判断位于第四事务资源在第二事务资源队列中的插入位置之后其他任一预留状态的第二事务资源队列的事务资源均能够执行成功,且第二被管对象设备判断在上述插入位置之前存在第二事务资源队列的其他事务资源,则第二被管对象设备进一步根据该插入位置之前存在的第二事务资源队列的事务资源中的任一个事务资源执行后的第二待操作资源的状态,判断第四事务资源是否均能够执行成功;若否(即基于上述插入位置之前存在的第二事务资源队列的事务资源中的任一个事务资源执行后的第二待操作资源的状态,只要第四事务资源有一个不能执行成功),则第二被管对象设备进一步根据第一位置上的事务资源执行后的第二待操作资源的状态,判断第四事务资源是否能够执行成功。若第二被管对象设备根据第一位置上的事务资源执行后的第二待操作资源的状态,判断第四事务资源能够执行成功,则第二被管对象设备确定创建所述第四事务资源成功,并向应用服务器发送第二事务的第四事务资源创建成功的响应,且该响应中携带的第四事务资源的状态为半预留状态,且携带第四事务资源的标识。
如上所述,在p的情形中,该第二待操作资源的状态可以为第四事务资源执行之后的第二待操作资源的状态,还可以为第四事务资源在第二事务资源队列中的插入位置之前存在的其他事务资源中的任一个事务资源执行后的第二待操作资源的状态,还可以为第一位置上的事务资源执行后的第二待操作资源的状态。该第二待操作资源的状态的内容依据不同的情况而定。
综上所述,上述k、l、m、n、p五种情况,均是第二被管对象设备根据第四执行时间和上述第二待操作资源的状态确定第四事务资源满足预设的资源创建条件的情况。
在上述图3所示实施例的基础上,作为本发明实施例的第四种可能的实施方式,本实施例涉及的是当第二被管对象设备接收到的针对第二事务的第四事务资源的处理请求为携带第四事务资源的标识和更新后的第三执行时间的更新请求,第二被管对象设备根据该更新请求处理第四事务资源的具体过程。具体的,上述S206具体包括:第二被管对象设备根据所述更新后的第三执行时间成功更新所述第四事务资源,并在更新成功后向所述应用服务器返回更新成功的响应消息;或根据所述更新后的第三执行时间更新所述第四事务资源失败,并向所述应用服务器返回更新失败的响应消息。
具体的,第二被管对象设备在接收到上述更新请求后,对自身已创建成功的第四事务资源进行处理,可以包括下述q、s两种情况:
q:当第二被管对象设备确定第二被管对象设备上不存在第二事务资源队列时,即当前的第二被管对象设备上的第二待操作资源没有关联其他事务的事务资源,只关联了第四事务资源,则第二被管对象设备判断该更新后的第三执行时间是否不符合上述(4)的内容,即判断该更新后的第三执行时间是否落在了第二被管对象设备的休眠周期内;若上述更新后的第三执行时间仍然是第二被管对象设备的工作时间,则第二被管对象设备直接将已创建成功的第四事务资源的第四执行时间更新为上述更新后的第三执行时间,并向应用服务器发送更新成功的响应消息。若上述更新后的第三执行时间仍然是第二被管对象设备的休眠时间,则第二被管对象设备确定更新第四事务资源失败,并向应用服务器发送更新失败的响应消息。
r:当第二被管对象设备确定第二被管对象设备上存在第二事务资源队列时,则第二被管对象设备在接收到携带更新后的第三执行时间的更新请求后,将之前创建成功的第四事务资源从第二事务资源队列中删除,然后将更新后的第三执行时间作为新的第四事务资源的执行时间;第二被管对象设备根据该新的第四事务资源的执行时间以及对应的第二待操作资源的状态确定所述新的第四事务资源满足预设的资源创建条件,则根据该更新后的第三执行时间创建所述新的第四事务资源,并向应用服务器发送
更新成功的响应。也就是说,当第二被管对象设备确定自身存在第二事务资源队列时,第二被管对象设备在接收到更新请求后所做的操作,实际上为重新创建新的事务资源的操作,其具体的执行过程可以参见上述a~r中描述的具体方案。
当第二被管对象设备根据上述更新请求成功将第四事务资源的第四执行时间更新为上述更新后的第三执行时间,且第一被管对象设备根据上述新的第三事务资源创建请求中携带的更新后的第三执行时间创建新的第三事务资源成功(并且,第一被管对象设备和第二被管对象设备向应用服务器发送的第二事务的事务资源创建成功的响应中携带的事务资源的状态均为预留状态),且在更新后的第三新的执行时间到达之前,应用服务器并没有发送任何的处理请求,则第一被管对象设备和第二被管对象设备在上述更新后的第三执行时间到达时,同时执行各自的待执行的操作。
在上述图3所示实施例的基础上,作为本发明实施例的第五种可能的实施方式,本实施例涉及的是当第二被管对象设备接收到的针对第二事务的第四事务资源的处理请求为携带第四事务资源的标识的删除请求,第二被管对象设备根据该删除请求处理第四事务资源的具体过程。如图6所示,上述S206具体包括:
S501:第二被管对象设备根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源。
S502:第二被管对象设备向所述应用服务器发送删除响应。
具体的,可以分为下述s、t两种情况:
s:当第二事务资源队列中预留状态的事务资源为一个时,在第二被管对象设备删除第四事务资源之后,第二被管对象设备执行判断操作,获得判断结果;其中,该判断操作包括:第二被管对象设备根据第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断第二位置上的事务资源能否执行成功(即第二被管对象设备根据第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断第二位置上的事务资源能否进入预留状态);该第一位置为与第四事务资源在第二事务资源队列中的插入位置相邻的前一个位置,第二位置为与第四
事务资源在第二事务资源队列中的插入位置相邻的后一个位置。
当第二被管对象设备删除第四事务资源之后,若第二被管对象设备根据第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断第二位置上的事务资源执行成功,则第二被管对象设备向上述应用服务器发送第一删除响应,并在上述第一位置上的事务资源执行后,更新第二位置上的事务资源的状态为预留状态,并通知应用服务器该第二位置上的事务资源已经处于预留状态。
当第二被管对象设备删除第四事务资源之后,若第二被管对象设备根据第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断第二位置上的事务资源执行失败,则第二被管对象设备删除该第二位置上的事务资源,并通知应用服务器该第二位置上的事务资源已经被删除;第二被管对象设备进一步判断所删除的第二位置上的事务资源是否为上述第二事务资源队列中的最后一个事务资源;若判断该第二位置上的事务资源不是第二事务资源队列中的最后一个事务资源,则第二被管对象设备将该第二位置的下一个位置作为新的第二位置,并对该新的第二位置上的事务资源执行上述判断操作;若判断该第二位置上的事务资源是第二事务资源队列中的最后一个事务资源,则结束删除事务资源的流程。
此处可以以一个简单的例子来说明:假设第二事务资源队列中包括T1、T2、T3、T4四个事务资源;第四事务资源插入在T1和T2之间,假设第四事务资源为T5。其中,上述T1为预留状态,T2、T3和T4为半预留状态。如表1所示:
表1:第二事务资源队列
当第二被管对象设备在第二事务资源队列中删除T5之后,则要根据第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断第二位置上的事务资源是否能够切换为预留状态,即第二被管对象设备要根据T5之前的T1执行之后的第二待操作资源的状态,判断T2是否能够切换为预留状态。若是,则第二被管对象设备向应用服务器发送第一删除响应,并在T1执行后,更新T2的状态为预留状态,并通
知应用服务器T2已经处于预留状态。若否,则第二被管对象设备也要删除T2,并通知应用服务器T2已经被删除;进一步地,第二被管对象设备还需要判断所删除的T2是否为第二事务资源队列中的最后一个事务资源;若判断T2不是第二事务资源队列中的最后一个事务资源,则第二被管对象设备继续根据T1执行之后的第二待操作资源的状态(此时T5和T2已经被删除了),判断T3是否能够切换为预留状态,若是,则第二被管对象设备向应用服务器发送第一删除响应,并在T1执行后,更新T3的状态为预留状态,并通知应用服务器T3已经处于预留状态;若否,则第二被管对象设备也要删除T3,并通知应用服务器T3已经被删除;进一步地,第二被管对象设备还需要判断所删除的T3是否为第二事务资源队列中的最后一个事务资源,以此类推,直至判断所删除的事务资源为第二事务资源队列中的最后一个事务资源,结束删除流程即可。
t:若上述第二事务资源队列中的预留状态的事务资源为至少两个,则在第二被管对象设备删除第四事务资源之后,第二被管对象设备判断上述第二事务资源队列中处于半预留状态的事务资源是否满足预设的删除条件。
若第二被管对象设备删除第四事务资源之后,根据删除第四事务资源后的第二待操作资源的状态判断上述第二事务资源队列中处于半预留状态的事务资源满足预设的删除条件,即在第四事务资源删除后,基于删除第四事务资源后的第二待操作资源的状态(即在删除第四事务资源后,基于上述半预留状态之前的任一事务资源执行之后的第二待操作资源的状态),该第二事务资源队列中处于半预留状态的事务资源均不能执行成功,第二被管对象设备删除该半预留状态的事务资源,并向应用服务器发送第二删除响应,以通知应用服务器该事务资源已删除。
此处可以以一个简单的例子来说明:假设第二事务资源队列中包括T1、T2、T3、T4四个事务资源;其中,上述T1、T2、T4均为预留状态,T3为半预留状态,假设T2为第四事务资源。参见表2所示:
表2
第二被管对象设备在删除第四事务资源T2之后,判断T3是否能够切换为预留状态。由于T3能否执行成功,仅依赖于T2执行后的第二待操作资源的状态(T3之所以为半预留状态,是因为在创建T3时,已经判断过队列中处于T3之后的任一预留状态的事务资源,基于T3执行后的第二待操作资源的状态均能执行成功,并且也判断了T3之前存在T1和T2,并且基于T2执行后的第二待操作资源的状态,T3可以提交,但基于T1执行后的第二待操作资源的状态,T3不可以提交,故创建T3,并确定T3的状态为半预留状态)。因此,由于T3的执行成功仅依赖于T2执行后的第二待操作资源的状态,故,在删除T2之后T3也不能执行成功,从而第二被管对象设备也需要删除T3,并向应用服务器发送第二删除响应,以通知应用服务器该事务资源已删除。
若第二被管对象设备删除第四事务资源之后,根据删除第四事务资源后的第二待操作资源的状态判断上述第二事务资源队列中处于半预留状态的事务资源不满足预设的删除条件,即在第四事务资源删除后,基于删除第四事务资源后的第二待操作资源的状态(即在删除第四事务资源后,基于上述半预留状态之前的任一事务资源执行之后的第二待操作资源的状态),该半预留状态的事务资源均能够执行成功,则第二被管对象设备将该处于半预留状态的事务资源更新为预留状态。
此处同样以一个简单的例子来说明:假设第二事务资源队列中包括T1、T2、T3、T4四个事务资源;其中,上述T1、T2、T4均为预留状态,T3为半预留状态,假设T1为第四事务资源。参见表3所示:
表3
第二被管对象设备在删除第四事务资源T1之后,判断T3是否能够切换为预留状态。由于T3能否切换为预留状态,仅依赖于T2执行后的第二待操作资源的状态,因此,删除T1之后,T3的半预留状态不会受到影响,即T3基于T2执行后的第二待操作资源的状态,T3是可以执行成功的;因此,第二被管对象设备进一步根据T3之前的任一个事务资源执行后的第二待操作资源的状态,判断T3均能够执行成功(在该例子中,
T1删除之后只剩下T2,因此T3只需要参考T2执行后的第二待操作资源的状态即可),则第二被管对象设备在T2执行后将T3更新为预留状态。
需要说明的是,对于上述图3所示的实施例的第四种可能的实施方式和第五种可能的实施方式,如果第二被管对象设备执行删除请求或更新请求,会影响已经处于预留状态的事务资源的执行,即意味着如果执行删除请求或更新请求,会破坏事务资源原本的可执行状态,进而破坏事务的原子性,因此,第二被管对象设备在此种情况时会拒绝该删除请求或更新请求。
为了能够更好的说明本申请的技术方案,下述以智能灌溉的两个例子来进行具体说明,其中,第一个例子主要涉及的是第二事务资源队列中包括一个预留状态的事务资源的场景,第二个例子主要涉及的是第二事务资源队列中包括至少两个预留状态的事务资源的场景。具体为:
例一:本场景涉及的是并发事务处理的过程,且被管对象设备上的第二事务资源队列中包括一个预留状态的事务资源。应用服务器上共有6个事务,分别是事务1、事务2、事务3、事务4、事务5、事务6,其涉及三个被管对象设备,分别是第一被管对象设备A(阀门1)、第二被管对象设备(阀门2)和第一被管对象设备B(阀门3)。应用服务器针对事务1向阀门2发送第四事务资源创建请求T1,向阀门1和阀门3发送的第三事务资源创建请求R1;针对事务2向阀门2发送第四事务资源创建请求T2,向阀门1和阀门3发送的第三事务资源创建请求R2;针对事务3向阀门2发送第四事务资源创建请求T3,向阀门1和阀门3发送的第三事务资源创建请求R4;针对事务4向阀门2发送第四事务资源创建请求T4,向阀门1和阀门3发送的第三事务资源创建请求R4;针对事务5向阀门2发送第四事务资源创建请求T5,向阀门1和阀门3发送的第三事务资源创建请求R5;针对事务6向阀门2发送第四事务资源创建请求T6,向阀门1和阀门3发送的第三事务资源创建请求R6。下述仅对第二被管对象设备(即阀门2)上的操作进行具体描述,阀门1和阀门3可以参照阀门2的操作。
需要说明的是,应用服务器向阀门2发送T1请求、T2请求、T3请
求、T4请求、T5请求、T6请求均是按照事务的先后顺序依次发送的,假设应用服务器按顺序依次向阀门2发送T1请求、T2请求、T3请求、T4请求、T5请求、T6请求。
其中,T1请求所创建的第四事务资源为t1,T2请求所创建的第四事务资源为t2,T3请求所创建的第四事务资源为t3,T4请求所创建的第四事务资源为t4,T5请求所创建的第四事务资源为t5,T6请求所创建的第四事务资源为t6。下述仅对第二被管对象设备(即阀门2)上的操作进行具体描述,阀门1和阀门3可以参照阀门2的操作。
对于事务1,应用服务器发送T1请求到阀门2,其要求在12:00把阀门2调整为30%。阀门2收到T1请求以后,检查阀门2上此时不存在第二事务资源队列。阀门2进一步检查基于此时第二待操作资源的状态,确定第四事务资源t1可以创建成功,因此创建t1,且该t1为预留状态,阀门2向应用服务器返回第四事务资源创建成功的响应。此时的阀门2上针对第二待操作资源的第二事务资源队列如表4所示:t1创建成功后,即成为第二事务资源队列的事务资源。
表4
对于事务2,应用服务器发送T2请求到阀门2,要求在12:05把阀门2调整为40%。阀门2收到T2请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,且该第二事务资源队列包括t1。阀门2根据T2请求所要求的执行时间12:05,和第二事务资源队列中t1的执行时间12:00,确定T2请求所要创建的第四事务资源t2应该创建在该第二事务资源队列的末位。阀门2进一步确认基于t1执行以后的第二待操作资源的状态,确定t2可以切换为预留状态,因此阀门2创建t2成功,t2当前的状态是半预留状态,阀门2向应用服务器返回第四事务资源创建成功的响应。此时的阀门2上针对第二待操作资源的第二事务资源队列如表5所示,另外,t2创建成功后,即成为第二事务资源队列的事务资源。
表5
对于事务3,应用服务器发送T3请求到阀门2,要求在12:03把阀门2调整为20%。阀门2收到T3请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1和t2。阀门2根据T3请求所要求的执行时间12:03,和第二事务资源队列中t1的执行时间12:00、t2执行时间为12:05,确定T3请求所要创建的第四事务资源t3应该创建在t1和t2中间。阀门2进一步确认基于t1执行以后的第二待操作资源的状态(此时第二待操作资源的状态为阀门2的开启度为30%),确定t3可以切换为预留状态(即阀门2确定自身可以从30%调整为20%,调整幅度在预设阈值范围内,假设预设阈值为60%),并且基于t3执行后的第二待操作资源的状态(此时第二待操作资源的状态为阀门2的开启度为20%),确定t2也可以切换为预留状态(即阀门2确定自身可以从20%调整为40%,调整幅度在预设阈值范围内)。因此,阀门2创建t3成功,t3当前的状态是半预留状态,阀门2向应用服务器返回第四事务资源创建成功的响应。此时的阀门2上针对第二待操作资源的第二事务资源队列如表6所示,另外,t3创建成功后,即成为第二事务资源队列的事务资源。
表6
对于事务4,应用服务器发送T4请求到阀门2,要求在11:55把阀门2调整为20%。阀门2收到T4请求以后,确认阀门2存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1、t2和t3。阀门2根据T4请求所要求的执行时间11:55,和队列中t1的执行时间
12:00,确定T4请求所要创建的第四事务资源t4应该创建在t1前面,即第二事务资源队列的首位。因为t1已经是预留状态,如果创建其他事务资源在t1前面,可能导致已经预留的事务资源t1不能执行(M2M系统不允许这种可能性存在)。但是阀门2检查到如果t4的执行时间如果设置在12:05以后,即如果t4创建在t2之后,基于t2执行以后的第二待操作资源的状态(t2执行以后第二待操作资源的状态为40%),t4可以执行成功(即阀门2确定自身可以从40%调整为20%,调整幅度在预设阈值范围内)。因此,阀门2向应用服务器返回第二失败响应,但是在该响应中携带适合的执行时间12:10。此时的阀门2上针对第二待操作资源的第二事务资源队列依然如表6所示。
对于事务5,应用服务器发送T5请求到阀门2,要求在12:02把阀门2调整为80%。阀门2收到T5请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1、t2和t3。阀门2根据T5请求所要求的执行时间12:02,和队列中t1的执行时间12:00,t3的执行时间12:03,确定t5应该创建在事务资源队列的t1和t3之间。但是若t5执行成功以后,阀门开启度为80%(即此时阀门2上第二待操作资源的状态为80%),而t3要求此时要将阀门2的开启度调整为20%(即将阀门2从80%调整为20%),阀门2作为自身保护考虑,不允许前后两次调整增幅大于等于预设阈值(假设为60%),因为阀门2增幅等于60%,会对后面的软管和接口造成较大冲击,从而造成漏水或者脱节现象。因此,阀门2确定t5执行以后,会影响已经处于半预留状态的t3无法进入预留状态,因此阀门2向应用服务器返回第二失败响应。但是同样的,阀门2检查出如果t5创建在t2之后是可以创建成功的,因此在第一响应中携带适合的执行时间为12:10。此时的阀门2上针对第二待操作资源的第二事务资源队列依然如表6所示。
对于事务6,应用服务器发送T6请求到阀门2,要求在12:08把阀门2调整为100%。阀门2收到T6请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1、t2和t3。阀门2根据T6请求所要求的执行时间12:08,和队列中t2的执行时间12:05,确定t6应该创建在第二事务资源队列的t2之后,即第二事务资源
队列的末位。但是t2执行成功以后,阀门2的开启度为40%(即此时阀门2上第二待操作资源的状态为40%),而t6要求此时将阀门2的开启度调整为100%,阀门增幅等于预设阈值(假设为60%)。因此,阀门2确定t2执行以后,t6无法进入预留状态,同时阀门2检查到,t6的100%的调整量在当前的第二事务资源队列中,不论放在哪里都是不合适的,因此返回第一失败响应。
针对事务1中事务资源的删除(一个事务包括多个事务资源,这多个事务资源分别由不同的被管对象设备创建,上述表6中的t1、t2和t3属于不同事务的事务资源),在事务1中,应用服务器发送第四事务资源创建请求到阀门2,且阀门2上创建第四事务资源成功,该第四事务资源假设为上述t1。另,应用服务器收到来自阀门1的第三事务资源创建失败的响应,说明事务1在阀门2上的第三事务资源创建不能成功,因此应用服务器需要删除在阀门2上已经创建成功的t1。因此,应用服务器向阀门2发送携带t1标识的删除请求,使得阀门2在到达t1的执行时间之前,收到应用服务器发送的该删除请求,用于删除第二事务资源队列中的t1。阀门2根据当前的第二事务资源队列,确定t1删除会不会影响t3的半预留状态,因为t1删除以后,阀门2将会从完全关闭直接开启到20%,因此T3可以进入预留状态。阀门2在t1执行之后,将T2的状态从半预留状态更新为预留状态,并通知应用服务器t2已经进入预留状态。
针对事务2中事务资源的执行,阀门2确认没有收到应用服务器发送的删除事务2的t2的删除请求或者更新请求。到达12:05以后,阀门2执行t2中的待执行的操作,即调整阀门开启度为40%。然后将t2从第二事务资源队列中移除。此时如果第二事务资源队列中t2之后还有其他事务资源Tx,则切换Tx的状态从半预留状态为预留状态,并发送通知到应用服务器,告知Tx已经进入预留状态。
上述例一针对的是第二事务资源队列包括一个预留状态的事务资源的场景,其描述了应用服务器和第二被管对象设备对并发事务的处理过程,并在处理过程中维护第二被管对象设备的第二事务资源队列的技术方案。
例二:本场景涉及的并发事务处理的过程,且被管对象设备上的第二事务资源队列包括至少两个预留状态的事务资源。应用服务器上共有6个事务,分别是事务1、事务2、事务3、事务4、事务5、事务6,其涉及三个被管对象设备,分别是第一被管对象设备A(阀门1)、第二被管对象设备(阀门2)和第一被管对象设备B(阀门3)。应用服务器针对事务1向阀门2发送第四事务资源创建请求T1,向阀门1和阀门3发送的第三事务资源创建请求R1;针对事务2向阀门2发送第四事务资源创建请求T2,向阀门1和阀门3发送的第三事务资源创建请求R2;针对事务3向阀门2发送第四事务资源创建请求T3,向阀门1和阀门3发送的第三事务资源创建请求R4;针对事务4向阀门2发送第四事务资源创建请求T4,向阀门1和阀门3发送的第三事务资源创建请求R4;针对事务5向阀门2发送第四事务资源创建请求T5,向阀门1和阀门3发送的第三事务资源创建请求R5;针对事务6向阀门2发送第四事务资源创建请求T6,向阀门1和阀门3发送的第三事务资源创建请求R6。下述仅对第二被管对象设备(即阀门2)上的操作进行具体描述,阀门1和阀门3可以参照阀门1的操作。
需要说明的是,应用服务器向阀门2发送T1请求、T2请求、T3请求、T4请求、T5请求、T6请求均是按照事务的先后顺序依次发送的,假设应用服务器按顺序依次向阀门2发送T1请求、T2请求、T3请求、T4请求、T5请求、T6请求。
其中,T1请求所创建的第四事务资源为t1,T2请求所创建的第四事务资源为t2,T3请求所创建的第四事务资源为t3,T4请求所创建的第四事务资源为t4,T5请求所创建的第四事务资源为t5,T6请求所创建的第四事务资源为t6。下述仅对第二被管对象设备(即阀门2)上的操作进行具体描述,阀门1和阀门3可以参照阀门2的操作。需要说明的是,阀门2的初始状态为25%.
对于事务1,应用服务器发送T1请求到阀门2,其要求在12:00把阀门2调整为40%。阀门2收到T1请求以后,检查阀门2上此时不存在针对第二待操作资源的第二事务资源队列。阀门2进一步检查基于此时第二待操作资源的状态,确定第四事务资源t1可以创建成功,因此创建t1,
且该t1为预留状态,阀门2向应用服务器返回第四事务资源创建成功的响应。此时的阀门2上针对第二待操作资源的第二事务资源队列如表7所示:t1创建成功后,即成为第二事务资源队列的事务资源。
表7
对于事务2,应用服务器发送T2请求到阀门2,要求在12:05把阀门2调整为80%。阀门2收到T2请求以后,确认阀门2上此时存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1。阀门2根据T2请求所要求的执行时间12:05,和第二事务资源队列中T1的执行时间12:00,确定T2请求所要创建的t2应该创建在第二事务资源队列的末位。因此阀门2确认待创建的第四事务资源t2不会影响第二事务资源队列中待创建事务资源t2位置之后其他事务资源的预留状态。在上述表7所示的第二事务资源队列中,t2之前还有t1。阀门2确认不论基于t1执行以后第二待操作资源的状态,还是基于t1删除以后的第二待操作资源现在的状态(即阀门2的初始状态25%),t2可以都进入预留状态,因此阀门2创建t2成功,t2当前的状态是预留状态,阀门2向应用服务器返回第四事务资源创建成功的响应。此时的阀门2上针对第二待操作资源的第二事务资源队列如表8所示:t2创建成功后,即成为第二事务资源队列的事务资源。
表8
对于事务3,应用服务器发送T3请求到阀门2,要求在12:03把阀门2调整为10%。阀门2收到T3请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1和t2。阀
门2根据T3请求所要求的执行时间12:03,和队列中t1的执行时间12:00、t2执行时间为12:05,确定t3位于t1和t2之间。且t3创建成功会使得t2的关于阀门2的调节幅度从10%(从t3的10%)直接开启到80%(t2的80%),超过了阀门2对一次性调整不超过60%的限制,因此会影响t2的预留状态。故,t3创建失败,如果t3创建在t1之前,是可以创建成功的,因此返回第一失败响应,该响应中包含合适的执行时间11:59。此时的阀门2上针对第二待操作资源的第二事务资源队列依然如表8所示。
对于事务4,应用服务器发送T4请求到阀门2,要求在11:55把阀门2调整为30%。阀门2收到T4请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1和t2。根据T4请求所要求的执行时间11:55,和队列中t1的执行时间12:00,阀门2确定t4应该创建在第二事务资源队列的t1前面。因为t1和t2已经是预留状态,阀门2判断如果t4创建成功,基于30%的阀门开启(即t4执行后的第二待操作资源的状态为30%),并不会影响t1和t2的正常执行,且t4之前不存在第二事务资源队列的其他事务资源。因此,阀门2向应用服务器返回第四事务资源创建成功的响应,t4为预留状态。此时的阀门2上针对第二待操作资源的第二事务资源队列如表9所示:t4创建成功后,即成为第二事务资源队列的事务资源。
表9
对于事务5,应用服务器发送T5请求到阀门2,要求在12:02把阀门2调整为100%。阀门2收到T5请求以后,确认阀门2存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1、t2和t4。阀门2根据T5请求所要求的执行时间12:02,和队列中t1的执行时间12:00、t2的执行时间12:05,确定t5应该创建在第二事务资源队列的t1和t2之间。t5创建成功并不影响t2的预留状态。但是t5之前还有t4和t1,不论基于t4还是t1执行以后的待操作资源状态,都不能使t5创建成
功,因为100%的调整量不论对于t4的30%还是t1的40%,都超过了60%的限制,因此t5创建失败。但是阀门2检查到如果t5创建在t2之后,是可以创建成功的,因此返回第二失败响应,该响应中包含合适的执行时间12:10。此时的阀门2上针对第二待操作资源的第二事务资源队列依然如表9所示。
对于事务6,应用服务器发送T6请求到阀门2,要求在12:02把阀门2调整为90%。阀门2收到T6请求以后,确认阀门2上存在针对第二待操作资源的第二事务资源队列,该第二事务资源队列中包括t1、t2和t4。阀门2根据T6请求所要求的执行时间12:02,和队列中t1的执行时间12:00、t2的执行时间12:05,确定t6应该创建在第二事务资源队列的t1和t2之间。t6创建成功并不影响t2的预留状态。但是t6之前还有t4和t1。基于t1执行以后的结果,t6可以执行。但是基于t4执行以后的结果,t6不能创建成功,因为90%的调整量对于t4的30%,超过了60%的限制;因此t6虽然创建成功,但是处于半预留状态,阀门2向应用服务器返回第四事务资源创建成功的响应。此时的阀门2上针对第二待操作资源的第二事务资源队列如表10所示:t6创建成功后,即成为第二事务资源队列的事务资源,t6为半预留状态。
表10
对于事务资源t4的执行,当时间到达11:55时,阀门2执行t4中的待执行的操作,即将阀门2切换到30%开启,之后删除t4(即此时第二待操作资源的状态为30%)。则当前的第二事务资源为下述表11所示:
表11
对于事务资源t1的删除,在事务1中,应用服务器发送第四事务资源创建请求T1到阀门2,且阀门2在第二事务资源队列中创建t1成功,另,应用服务器接收到来自阀门1的第三事务资源创建失败的响应,说明事务1在阀门1上的第三事务资源创建不能成功,因此应用服务器需要删除在阀门2上已经创建成功的t1。因此,应用服务器向阀门2发送携带t1标识的删除请求,使得阀门2在到达t1的执行时间之前,收到应用服务器发送的该删除请求,用于删除第二事务资源队列中的t1。阀门2根据当前的第二事务资源队列(参见表11所示),t1之后只有t6是半预留状态。阀门2确定t1的删除是否会影响t6的半预留状态,因为t1删除以后,t6基于目前第二待操作资源的状态(开启30%),不可以进入预留状态。因此删除t6,并通知应用服务器t6已经被删除。
对于事务资源t4的删除,在上述表10所示的第二事务资源队列中,假设在t4执行以前,阀门2收到一个更新请求,以请求将阀门2直接开启到40%;阀门2在收到该更新请求后,将阀门2从初始的25%的状态更新为40%,其调整幅度没有超过预设阈值,即当前的第二待操作资源的状态为40%。
如果在11:55之前,由于与t4相关的其他阀门创建属于事务4的第三事务资源创建失败,导致阀门2上的t4也需要被删除。阀门2收到应用服务器发送的携带t4标识的删除请求,用于删除第二事务资源队列中的t4。阀门2删除t4之后,根据当前的第二事务资源队列,t4之后只有t6是半预留状态。阀门2确定t4删除是否会影响t6的半预留状态。因为t4删除以后,t6不论基于目前第二待操作资源的状态(开启40%)还是t1执行以后的状态(开启40%),t6都可以进入预留状态。因此,阀门2更新t6的状态为预留,并通知应用服务器t6已经为预留状态。
上述例二针对的是第二事务资源队列包括至少两个预留状态的事务资源的场景,其描述了应用服务器和第二被管对象设备对并发事务的处理过程,并在处理过程中维护第二被管对象设备的第二事务资源队列的技术方案。
图7为本发明提供的分布式事务资源执行的方法实施例三的流程示
意图。该方法应用于M2M系统,该M2M系统中包括至少两个被管对象设备和应用服务器,第一被管对象设备为所述至少两个被管对象设备中的任意一个;所述第二被管对象为所述至少两个被管对象设备中除第一被管设备对象之外的所有被管对象设备。如图7所示,该方法包括:
S601:应用服务器向第一被管对象设备发送针对第一事务的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行操作。
S602:应用服务器向第二被管对象设备发送针对所述第一事务的第二事务资源创建请求,所述第二事务资源创建请求包括所述第一待操作资源标识、第二执行时间和第二待执行操作;所述第一执行时间与所述第二执行时间相同。
具体的,应用服务器分别向第一被管对象设备和第二被管对象设备发送针对第一事务的第一事务资源创建请求和针对第一事务的第二事务资源创建请求,即第一事务资源和第二事务资源属于应用服务器的第一事务。第一事务资源创建请求中包括第一待操作资源标识、第一执行时间和第一待执行的操作,第二事务资源创建请求中包括第二待操作资源的标识、第二执行时间和第二待执行的操作。其中,第一执行时间和第二执行时间相同。可选的,第一待执行的操作和第二待执行的操作可以相同,也可以不同。并且,该第一待执行的操作或第二待执行的操作可以以原语的形式体现,也可以以其他的方式体现。
需要说明的是,第一被管设备和第二被管对象设备所执行的操作类似,因此,下述的技术方案均以第一被管对象设备为描述对象,第二被管对象设备所执行的操作可以参照第一被管对象设备来执行,即第二被管对象设备创建第二事务资源的过程可以参照第一被管对象设备创建第一事务资源的过程。
S603:应用服务器在预设时间内接收到第二被管对象设备发送的所述第一事务的第二事务资源创建成功的响应,以及,接收到所述第一被管对象设备发送的所述第一事务的第一事务资源创建成功的响应。
具体的,第一被管对象设备根据第一事务资源创建请求中携带的第一执行时间、第一待执行的操作等信息判断该第一事务资源能否创建成功。
第一待执行的操作中包含针对第一待操作资源的请求,该请求中可以包括请求的发起方、所请求的目标资源的标识、请求的具体内容等信息。
可选的,第一被管对象设备可以通过上述第一待执行的操作中所包含的信息确定第一事务资源创建请求是否满足创建事务资源的条件,具体可以包括下述(1)至(4)的内容:(1)第一被管对象设备根据第一待执行的操作中包含的“所请求的目标资源的标识”,检查第一待执行的操作所请求的目标资源是不是第一待操作资源;(2)第一被管对象设备根据第一待执行的操作中所包含的“请求的发起方”,检查发起方(即应用服务器)有没有足够的权限发起该第一事务资源创建请求;(3)第一被管对象设备根据第一待执行的操作中包含的“请求的内容”,检查是否能够对第一待操作资源执行所请求的内容;(4)第一被管对象设备根据第一执行时间与结合自己工作、休眠周期安排,检查能否保证在第一执行时间所规定的时间执行第一事务资源创建请求中携带的第一待执行的操作。
如果上述4项均检查成功,则说明第一事务资源创建请求满足创建事务资源的条件,第一被管对象设备可以根据该第一事务资源创建请求成功创建第一事务资源。基于RESTful架构的特点,所创建的第一事务资源中可以包括该第一事务资源的当前状态、第一执行时间和第一待执行的操作三个属性(相应的,第二事务资源中包括该第二事务资源的状态、第二执行时间和第二待执行的操作三个属性)。
进一步地,第一被管对象设备向应用服务器发送第一事务的第一事务资源创建成功的响应,以告知应用服务器第一事务资源创建成功。与上述第一被管对象设备类似的执行过程,第二被管对象设备也确定第二事务资源创建成功,并向应用服务器发送第一事务的第二事务资源创建成功的响应,以告知应用服务器第二事务资源创建成功。无论是第一事务资源创建成功的响应还是第二事务资源创建成功的响应,均可以携带各自所创建的事务资源的标识,还可以进一步携带各自所创建的事务资源的状态,该状态可以为预留状态或者半预留状态。
需要说明的是,应用服务器需要判断在预设时间内是否接收到第一被管对象设备和第二被管对象设备发送的事务资源创建响应,这里无论事务资源创建响应是成功响应还是失败响应,只要应用服务器在预设时间内没
有接收到事务资源创建响应,则应用服务器就会认为事务资源创建失败。
若应用服务器在预设时间内收到了第二被管对象设备发送的第二事务资源成功响应,但是没有收到第一被管对象设备发送的任何事务资源创建响应,则应用服务器确定第一事务资源创建失败,并向已成功创建第二事务资源的第二被管对象设备发送删除请求,以删除第二被管对象设备上与已创建成功的第二事务资源,确保事务的原子性;如果应用服务器在预设时间内均未收到第一被管对象设备和第二被管对象设备发送的任何事务资源创建响应,则结束创建流程。
进一步地,在本发明实施例中,由于第一被管对象设备和第二被管对象设备向应用服务器发送的均是第一事务的事务资源创建成功的响应,因此,应用服务器确定在预设时间内收到了上述第一事务资源创建成功响应和第二事务资源创建成功响应后,因此确定不向第一被管对象设备和第二被管对象设备发送处理请求,使得第一被管对象设备在第一执行时间到达之前(或者第二被管对象设备在第二执行时间到达之前),不会接收到应用服务器发送的处理请求,因此,第一被管对象设备和第二被管对象可以在第一执行时间(第二执行时间)到达时,同时执行各自所创建的事务资源中的待执行的操作。
本发明实施例提供的分布式事务资源执行的方法,通过应用服务器在发送给多个被管对象设备的事务资源创建请求中携带相同的执行时间,使得多个被管对象设备可以在确定创建事务资源成功,并且在执行时间到达时刻同时执行自身所创建的事务资源,确保了事务资源的同时执行。另外,本发明实施例中确保事务资源同时执行只需要应用服务器向被管对象设备发送一个事务资源创建请求,因此节省了应用服务器的信令开销。
进一步地,若上述第二被管对象设备创建第二事务资源成功后,向应用服务器发送的第二事务资源成功的响应中携带的第二事务资源的状态为半预留状态,则在上述S603之后,参见图8所示,该方法还包括:
S701:应用服务器订阅所述第二事务资源,以使所述第二被管对象设备在所述第二事务资源的状态发生变化时向所述应用服务器发送通知消息。
S702:应用服务器根据所述通知消息确定所述第二事务资源的状态。
本实施例使得应用服务器可以随时监控第二被管对象设备上的第二事务资源的状态,在第二事务资源状态发生变化时随时跟踪变化,保证了执行事务资源时状态的准确性。
图9为本发明提供的分布式事务资源执行的方法实施例五的流程示意图。在上述图7或图8所示实施例的基础上,本实施例涉及的方法是第一被管对象设备确定第三事务资源创建失败,向应用服务器发送第一事务资源创建失败响应的过程。如图9所示,该方法包括:
S801:应用服务器向所述第一被管对象设备发送针对第二事务的第三事务资源创建请求;所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行操作。
S802:应用服务器向第二被管对象设备发送针对所述第二事务的第四事务资源创建请求,所述第四事务资源创建请求包括所述第一待操作资源标识、第四执行时间和第四待执行操作;所述第三执行时间与所述第四执行时间相同。
具体的,应用服务器分别向第一被管对象设备和第二被管对象设备发送针对第二事务的第三事务资源创建请求和针对第二事务的第四事务资源创建请求,即第三事务资源和第四事务资源属于应用服务器的第二事务。第三事务资源创建请求中包括第一待操作资源标识、第三执行时间和第三待执行的操作,第四事务资源创建请求中包括第二待操作资源的标识、第四执行时间和第四待执行的操作。其中,第三执行时间和第四执行时间相同。可选的,第三待执行的操作和第四待执行的操作可以相同,也可以不同。并且,该第三待执行的操作或第四待执行的操作可以以原语的形式体现,也可以以其他的方式体现。
S803:应用服务器在预设时间内接收到所述第一被管对象设备发送的所述第二事务的第三事务资源创建失败的响应,以及在所述预设时间内接收到所述第二被管对象设备发送的所述第二事务的第四事务资源创建成功的响应;所述第四事务资源创建成功的响应中携带所述第四事务资源的标识。
具体的,第一被管对象设备根据第三事务资源创建请求中携带的第三执行时间、第三待执行的操作等信息判断该第三事务资源能否创建成功。
具体的判断过程可以参照上述图7所示实施例中的(1)至(4)的判断过程,在此不再赘述。
如果第一被管对象设备检查上述4项任意一项失败,则说明第三事务资源创建请求不满足创建事务资源的条件,第一被管对象设备确定创建第三事务资源失败,并向应用服务器发送第二事务的第三事务资源创建失败的响应。如果第二被管对象设备检查上述4项均成功,则说明第四事务资源创建请求满足创建事务资源的条件,第二被管对象设备可以根据该第四事务资源创建请求成功创建第四事务资源,并向应用服务器发送第二事务的第四事务资源创建成功的响应,以告知应用服务器第四事务资源创建成功。该第四事务资源创建成功的响应中可以携带第四事务资源的标识,还可以进一步携带所创建的第四事务资源的状态为预留状态或者半预留状态。
可选的,在第一被管对象设备确定第一被管对象设备上不存在第一待操作资源对应的第一事务资源队列时,若第一被管对象设备通过上述第三待执行的操作中所包含的信息确定第三事务资源创建请求不满足上述创建事务资源的条件中的(1)中的内容,则第一被管对象设备根据上述第三事务资源创建请求确定第三事务资源创建失败,并向应用服务器发送第一失败响应,以告知应用服务器第三事务资源无法创建成功。
可选的,在第一被管对象设备确定第一被管对象设备上不存在第一待操作资源对应的第一事务资源队列时,若第一被管对象设备通过上述第三待执行的操作中所包含的信息确定第三事务资源创建请求不满足上述创建事务资源的条件中的(2)至(4)中任一项的内容,则第一被管对象设备根据上述第三事务资源创建请求确定第三事务资源创建失败,并向应用服务器发送携带更新后的第三执行时间的第二失败响应,以告知应用服务器当前的第三执行时间不合适,但第一被管对象设备利用其在第二失败响应中所携带的更新后的第三执行时间,第三事务资源可以创建成功。
可选的,若第一被管对象设备根据第三执行时间确定第一被管对象设备上存在第一待操作资源对应的第三事务资源队列,则第一被管对象设备根据第三事务资源创建请求中的第三执行时间和第一待操作资源的状态确定第三事务资源创建失败。具体分为两种情况:
第一种:第一被管对象设备根据第三执行时间和所述第一待操作资源的状态确定将第三执行时间更新为所述第一事务资源队列中各事务资源的执行时间之后的任一时间时,均不满足预设的资源创建条件,则第一被管对象设备向应用服务器发送第一失败响应。
第二种:第一被管对象设备根据所述第三执行时间和所述第一待操作资源的状态确定将所述第三执行时间更新为所述第一事务资源队列中任一事务资源的执行时间之后的时间时满足所述预设的资源创建条件;所述第一被管对象设备向所述应用服务器发送携带更新后的第三执行时间的第二失败响应。其具体的判断过程可以参见上述图3所示的实施例的第一种可能的实施方式和第二种可能的实施方式中的技术方案,在此不再赘述。
应用服务器因此确定在预设时间内接收到了第一被管对象设备发送的第二事务的第三事务资源创建失败响应和第二被管对象设备发送的第二事务的第四事务资源创建成功的响应。
S804:应用服务器基于所述第二事务的第三事务资源创建失败的响应和所述第二事务的第四事务资源创建成功的响应,向发送所述第四事务资源创建成功的响应的第二被管对象设备发送针对所述第二事务的第四事务资源的处理请求,所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
具体的,应用服务器在预设时间内接收到第一被管对象设备发送的第三事务资源创建失败的响应(该第三事务资源创建失败的响应为第一失败响应或第二失败响应)和第二被管对象设备发送的第四事务资源创建成功的响应后,获知第一被管对象设备创建第三事务资源失败以及获知第二被管对象设备创建第四事务资源成功,因此,应用服务器会根据上述第三事务资源创建失败的响应向发送第四事务资源创建成功的响应的第二被管对象设备发送针对第二事务的第四事务资源的处理请求。具体可以为下述两种方式:
第一种:若应用服务器确定上述第三事务资源创建失败的响应为不携带更新后的第三执行时间的第一失败响应,则应用服务器向发送第四事务资源创建成功的响应的第二被管对象设备发送携带第四事务资源的标识
的删除请求。
具体的,第二被管对象设备接收到该删除请求后所执行的操作,可以参照上述图3所示实施例的第五种可能的实施方式中第二被管对象设备根据第四事务资源的标识删除第四事务资源的过程,在此不再赘述。
第二种:若应用服务器确定上述第三事务资源创建失败的响应为携带更新后的第三执行时间的第二失败响应,则应用服务器向发送第四事务资源创建成功的响应的第二被管对象设备发送携带该更新后的第三执行时间和第四事务资源的标识的更新请求;其中,该更新后的第三执行时间为第一被管对象设备成功创建新的第三事务资源的时间。
具体的,第二被管对象设备接收到该更新请求后所执行的操作,可以参照上述图3所示实施例的第四种可能的实施方式中第二被管对象设备根据第四事务资源标识和更新后的第三执行时间更新第四事务资源的过程,在此不再赘述。
需要说明的是,应用服务器在向第二被管对象设备发送更新请求时,还向第一被管对象设备发送携带上述更新后的第三执行时间的新的第三事务资源创建请求,使得第一被管对象设备根据该更新后的第三执行时间成功创建新的第三事务资源,假设发送第四事务资源创建成功的响应的第二被管对象设备也可以根据该更新后的第三执行时间成功更新之前所创建的第四事务资源,则应用服务器不会再向该第二被管对象设备发送针对第二事务的第四事务资源的处理请求,即发送第四事务资源创建成功的响应的第二被管对象设备在更新后的第三执行时间到达之前不会收到应用服务器发送的针对第二事务的第四事务资源的处理请求,故在更新后的第三执行时间到达时,第一被管对象设备和第二被管对象设备可以同时执行各自所创建的事务资源中的待执行的操作。
本发明实施例提供的分布式事务资源执行的方法,通过应用服务器向第一被管对象设备发送第三事务资源创建请求,并且该第三事务资源创建请求中携带的第三执行时间和应用服务器发送给第二被管对象设备的第四事务资源创建请求携带的第四执行时间相同,并且应用服务器确定在预设时间内接收到第一被管对象设备发送的第三事务资源创建失败的响应以及第二被管对象设备发送的第四事务资源创建成功的响应后,向第二被
管对象设备发送针对第二事务的第四事务资源的处理请求。本发明实施例提供的方法,使得第二被管对象设备可以根据应用服务器发送的处理请求(当处理请求为更新请求时)确保自身执行更新后的第四事务资源的时间与第一被管对象设备执行自身所创建的新的第三事务资源的时间相同,即确保第一被管对象设备和第二被管对象设备可以同时执行各自所创建的事务资源,保证了事务资源的同时执行。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图10为本发明提供的应用服务器实施例的结构示意图。如图10所示,该应用服务器应用于M2M系统,所述M2M系统包括至少两个被管对象设备和应用服务器,第一被管对象设备为所述至少两个被管对象设备中的任意一个;所述第二被管对象为所述至少两个被管对象设备中除第一被管设备对象之外的所有被管对象设备;所述应用服务器包括:发送模块10和接收模块11。
具体的,所述发送模块10,用于向第一被管对象设备发送针对第一事务的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行操作;还用于向第二被管对象设备发送针对所述第一事务的第二事务资源创建请求,所述第二事务资源创建请求包括所述第一待操作资源标识、第二执行时间和第二待执行操作;所述第一执行时间与所述第二执行时间相同。
所述接收模块11,用于在预设时间内接收到第二被管对象设备发送的所述第一事务的第二事务资源创建成功的响应,以及,接收到所述第一被管对象设备发送的所述第一事务的第一事务资源创建成功的响应。
本发明实施例提供的应用服务器,可以参见上述应用服务器方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
进一步地,上述发送模块10,还用于向所述第一被管对象设备发送针对第二事务的第三事务资源创建请求;所述第三事务资源创建请求包括
所述第一待操作资源标识、第三执行时间和第三待执行操作;还用于向所述第二被管对象设备发送针对所述第二事务的第四事务资源创建请求,所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行操作;所述第三执行时间与所述第四执行时间相同。
上述接收模块11,还用于在预设时间内接收到所述第一被管对象设备发送的所述第二事务的第三事务资源创建失败的响应,以及在所述预设时间内接收到所述第二被管对象设备发送的所述第二事务的第四事务资源创建成功的响应;所述第四事务资源创建成功的响应中携带所述第四事务资源的标识;则上述发送模块10,还用于基于所述第二事务的第三事务资源创建失败的响应和所述第二事务的第四事务资源创建成功的响应,向发送所述第四事务资源创建成功的响应的第二被管对象设备发送针对所述第二事务的第四事务资源的处理请求,所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
进一步地,上述发送模块10,具体用于确定所述第二事务的第三事务资源创建失败的响应为不携带更新后的第三执行时间的第一失败响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送携带所述第四事务资源标识的删除请求;或,确定所述第二事务的第三事务资源创建失败的响应为携带所述更新后的第三执行时间的第二失败响应,向所述发送所述第四事务资源创建成功的响应的第二被管对象设备发送携带所述更新后的第三执行时间和所述第四事务资源标识的更新请求;还用于向所述第一被管设备发送携带更新后的第三执行时间的第三事务资源的创建请求。
本发明实施例提供的应用服务器,可以参见上述应用服务器方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
图11为本发明提供的被管对象设备实施例一的结构示意图。该被管对象设备应用于机器与机器通信M2M系统,所述M2M系统包括至少两个被管对象设备和应用服务器,所述被管对象设备为所述至少两个被管对象设备中的任意一个;第二被管对象设备为所述至少两个被管对象设备中除所述被管对象设备之外的所有被管对象设备。如图11所示,该被管对
象设备包括:接收模块20、创建模块21、确定模块22和处理模块23。
其中,接收模块20,用于接收所述应用服务器针对第一事务发送的第一事务资源创建请求,所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行的操作;所述第一执行时间与所述M2M系统中除所述被管对象设备之外的所述第二被管对象设备接收到针对第一事务的第二事务资源创建请求中的第二执行时间相同;创建模块21,用于根据所述第一事务资源创建请求成功创建第一事务资源;所述第一事务资源包括所述第一执行时间和第一待执行的操作;确定模块22,用于在到达所述第一执行时间之时,确定没有接收到所述应用服务器发送的针对所述第一事务的第一事务资源的处理请求,所述针对所述第一事务的第一事务资源的处理请求为所述应用服务器接收到所述第二被管对象设备发送第一事务的第二事务资源创建失败的响应后发送的;处理模块23,用于执行所述第一待执行的操作。
本发明实施例提供的被管对象设备,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
图12为本发明提供的被管对象设备实施例二的结构示意图。本实施例涉及的是上述被管对象设备创建第三事务资源失败的具体过程。在上述图10所示实施例的基础上,所述被管对象设备还包括发送模块24。
上述接收模块20,还用于接收所述应用服务器发送的针对第二事务的第三事务资源创建请求,所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;所述第三执行时间与所述第二被管对象设备接收到的针对所述第二事务的第四事务资源创建请求中的第四执行时间相同;所述创建模块21,还用于根据所述第三事务资源创建请求确定第三事务资源创建失败;所述发送模块24,用于向所述应用服务器发送所述第二事务的第三事务资源创建失败的响应。
进一步地,所述创建模块21,具体用于确定所述被管对象设备存在第一事务资源队列,并根据所述第三执行时间和所述被管对象设备的第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件,并根据所述预设的资源创建条件确定将所述第三执行时间更新为所述第一
事务资源队列中一个事务资源的执行时间之后的时间;其中,所述第一事务资源队列包括至少一个事务资源;所述发送模块22,具体用于向所述应用服务器发送携带更新后的第三执行时间的第二失败响应。
本发明实施例提供的被管对象设备,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
继续参照图12,本实施例涉及的是上述被管对象设备创建第三事务资源成功,但第二杯被管对象设备创建第四事务资源成功,该被管对象设备根据应用服务器发送的针对第二事务的第三事务资源的处理请求处理已创建的第三事务资源的具体过程。具体为:
所述接收模块20,还用于接收所述应用服务器发送的第二事务的第三事务资源创建请求,所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;所述第三执行时间与所述第二被管对象设备接收到的针对所述第二事务的第四事务资源的创建请求中的第四执行时间相同;所述创建模块21,还用于根据所述第三事务资源创建请求成功创建所述第三事务资源;所述发送模块24,还用于向所述应用服务器发送针对所述第二事务的第三事务资源创建成功的响应;所述第三事务资源创建成功的响应中携带所述第三事务资源的标识;所述确定模块22,还用于在到达所述第三执行时间之前,确定接收到所述应用服务器发送的针对所述第二事务的第三事务资源的处理请求;所述针对所述第二事务的第三事务资源的处理请求中携带所述第三事务资源的标识;所述处理模块23,还用于根据所述第三事务资源的标识处理创建的所述第三事务资源。
进一步地,所述创建模块21,具体用于确定所述被管对象设备存在第一事务资源队列;并根据所述第三执行时间和所述被管对象设备的第一待操作资源的状态确定所述第三事务资源满足预设的资源创建条件,并创建所述第三事务资源;其中,所述第一事务资源队列包括至少一个事务资源。
可选的,所述针对所述第二事务的第三事务资源的处理请求为携带所述第三事务资源标识和更新后的第四执行时间的更新请求,所述处理模块23,具体用于根据所述更新后的第四执行时间成功更新所述第三事务资
源,并在更新成功后向所述应用服务器返回更新成功的响应消息;或根据所述更新后的第四执行时间更新所述第三事务资源失败,并向所述应用服务器返回更新失败的响应消息。进一步地,所述处理模块23,具体用于根据所述第三事务资源的标识删除所述被管对象设备上的所述第三事务资源,并将所述更新后的第四执行时间作为新的第三事务资源的执行时间;以及,根据所述新的第三事务资源的执行时间以及所述被管对象设备的第一待操作资源的状态确定所述新的第三事务资源满足所述预设的资源创建条件,并根据所述更新后的第四执行时间创建所述新的第三事务资源。
需要说明的是,上述被管对象设备更新第三事务资源的过程可以参见方法实施例中第二被管对象设备更新第四事务资源的过程,在此不再赘述。
可选的,所述针对所述第二事务的第三事务资源的处理请求为携带所述第三事务资源标识的删除请求,所述处理模块23,具体用于根据所述第三事务资源标识删除所述被管对象设备上的所述第三事务资源。
可选的,所述第一事务资源队列中预留状态的事务资源为一个,所述处理模块23,还用于根据所述第一事务资源队列中第一位置上的事务资源执行后的第一待操作资源的状态,判断所述第二位置上的事务资源能否执行成功;若所述第二位置上的事务资源执行成功,则向所述应用服务器发送第一删除响应,并在所述第一位置上的事务资源执行后,更新所述第二位置上的事务资源的状态为预留状态;若所述第二位置上的事务资源执行失败,则删除所述第二位置上的事务资源;其中,所述第一位置为与所述第三事务资源在所述第一事务资源队列中的前一个位置,所述第二位置为与所述第三事务资源在所述第一事务资源队列中的后一个位置。
可选的,所述第一事务资源队列中预留状态的事务资源为至少二个,所述处理模块23,还用于判断所述第一事务资源队列中处于半预留状态的事务资源是否满足预设的删除条件;若是,则删除所述处于半预留状态的事务资源,并向所述应用服务器发送第二删除响应;若否,则根据所述处于半预留状态的事务资源之前的任一个事务资源执行后的第一待操作资源的状态,判断所述处于半预留状态的事务资源均能够执行成功,则将
所述处于半预留状态的事务资源更新为预留状态。
需要说明的是,上述被管对象设备删除第三事务资源的过程可以参见方法实施例中第二被管对象设备删除第四事务资源的过程,在此不再赘述。
本发明实施例提供的被管对象设备,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
图13为本发明提供的分布式事务资源执行系统实施例的结构示意图。该系统应用于M2M系统,该M2M系统包括至少两个被管对象设备和应用服务器,第一被管对象设备31为所述至少两个被管对象设备中的任意一个;第二被管对象设备32为所述至少两个被管对象设备中除第一被管对象设备之外的所有被管对象设备。如图13所示,该分布式事务资源执行系统包括:所述第一被管对象设备31和所述第二被管对象设备32。具体的:
所述第一被管对象设备31,用于接收所述应用服务器针对第一事务发送的第一事务资源创建请求,并根据所述第一事务资源创建请求成功创建所述第一事务的第一事务资源,并向所述应用服务器发送所述第一事务的第一事务资源创建成功的响应;所述第一事务资源创建请求包括第一待操作资源标识、第一执行时间和第一待执行的操作;所述第二被管对象设备32,用于接收所述应用服务器针对所述第一事务发送的第二事务资源创建请求,并根据所述第二事务资源创建请求成功创建所述第一事务的第二事务资源,并向所述应用服务器发送所述第一事务的第二事务资源创建成功的响应;所述第二事务资源创建请求包括第二待操作资源标识、第二执行时间和第二待执行的操作;所述第一执行时间与所述第二执行时间相同;所述第一事务资源包括所述第一执行时间和所述第一待执行的操作,以及所述第二事务资源包括所述第二执行时间和所述第二待执行的操作;在到达所述第一执行时间之时,所述第一被管对象设备31和所述第二被管设备32均用于执行各自的待执行的操作。
本发明实施例提供的分布式事务资源执行系统,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
进一步地,上述第一被管对象设备31,还用于接收所述应用服务器针对第二事务发送的第三事务资源创建请求,并根据所述第三事务资源创建请求确定所述第二事务的第三事务资源创建失败,并向所述应用服务器发送所述第二事务的第三事务资源创建失败的响应;所述第三事务资源创建请求包括所述第一待操作资源标识、第三执行时间和第三待执行的操作;所述第二被管对象设备32,还用于接收所述应用服务器针对所述第二事务发送的第四事务资源创建请求,并根据所述第四事务资源创建请求成功创建所述第二事务的第四事务资源,并向所述应用服务器发送所述第二事务的第四事务资源创建成功的响应;所述第四事务资源创建请求包括所述第二待操作资源标识、第四执行时间和第四待执行的操作;所述第三执行时间与所述第四执行时间相同;所述第四事务资源创建成功的响应中携带所述第四事务资源的标识;向所述应用服务器发送所述第四事务资源创建成功的响应的所述第二被管对象设备32,还用于接收所述应用服务器发送的针对所述第二事务的第四事务资源的处理请求,并根据所述第四事务资源的标识处理创建的第四事务资源;所述针对所述第二事务的第四事务资源的处理请求中携带所述第四事务资源的标识。
更进一步地,所述第一被管对象设备31,具体用于确定所述第一被管对象设备31存在第一事务资源队列,并根据所述第三执行时间以及所述第一被管对象设备31的第一待操作资源的状态确定所述第三事务资源不满足预设的资源创建条件,并根据所述预设的资源创建条件确定将所述第三执行时间更新为所述第一事务资源队列中一个事务资源的执行时间之后的时间以及向所述应用服务器发送携带更新后的第三执行时间的第二失败响应;其中,所述第一事务资源队列包括至少一个事务资源。
更进一步地,所述第二被管对象设备32,具体用于确定所述第二被管对象设备32存在第二事务资源队列,并根据所述第四执行时间以及所述第二被管对象设备32的第二待操作资源的状态确定所述第四事务资源满足预设的资源创建条件,并创建所述第四事务资源;其中,所述第二事务资源队列包括至少一个事务资源。
本发明实施例提供的分布式事务资源执行系统,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
可选的,所述针对所述第二事务的第四事务资源的处理请求为携带所述第四事务资源的标识和更新后的第三执行时间的更新请求;则所述第二被管对象设备32,还用于根据所述更新后的第三执行时间成功更新所述第四事务资源,并在更新成功后向所述应用服务器返回更新成功的响应消息;或根据所述更新后的第三执行时间更新所述第四事务资源失败,并向所述应用服务器返回更新失败的响应消息。
进一步地,所述第二被管对象设备32,还用于根据所述第四事务资源的标识删除所述第二被管对象设备32上的所述第四事务资源,并将所述更新后的第三执行时间作为新的第四事务资源的执行时间,并根据所述新的第四事务资源的执行时间以及所述第二被管对象设备32的第二待操作资源的状态确定所述新的第四事务资源满足预设的资源创建条件,以及根据所述更新后的第三执行时间创建所述新的第四事务资源。
本发明实施例提供的分布式事务资源执行系统,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
可选的,所述针对所述第二事务的第四事务资源的处理请求为携带所述第四事务资源的标识的删除请求,所述第二被管对象设备32,还用于根据所述第四事务资源的标识删除所述第二被管对象设备上的所述第四事务资源。
可选的,所述第二事务资源队列中预留状态的事务资源为一个,所述第二被管对象设备32,还用于在根据所述第二事务资源队列中第一位置上的事务资源执行后的第二待操作资源的状态,判断所述第二位置上的事务资源能否执行成功;所述第一位置为与所述第四事务资源在所述第二事务资源队列中前一个位置,所述第二位置为与所述第四事务资源在所述第二事务资源队列中后一个位置;若所述第二位置上的事务资源执行成功,则所述第二被管对象设备32,还用于向所述应用服务器发送第一删除响应,并在所述第一位置上的事务资源执行后,更新所述第二位置上的事务资源的状态为预留状态;若所述第二位置上的事务资源执行失败,则所述第二被管对象设备32,还用于删除所述第二位置上的事务资源。
可选的,所述第二事务资源队列中预留状态的事务资源为至少二个,所述第二被管对象设备32,还用于判断所述第二事务资源队列中处于半
预留状态的事务资源是否满足预设的删除条件;若所述第二事务资源队列中处于半预留状态的事务资源满足预设的删除条件,则所述第二被管对象设备32,还用于删除所述处于半预留状态的事务资源,并向所述应用服务器发送第二删除响应;若所述第二事务资源队列中处于半预留状态的事务资源不满足预设的删除条件,则所述第二被管对象设备32,还用于根据所述处于半预留状态的事务资源之前的任一个事务资源执行后的第二待操作资源的状态,判断所述处于半预留状态的事务资源均能够执行成功后,将所述处于半预留状态的事务资源更新为预留状态。
本发明实施例提供的分布式事务资源执行系统,可以参见上述方法实施例的执行过程,其实现原理和技术效果类似,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。