本发明涉及一种非阻塞请求处理方法及装置。
背景技术:
onem2m标准组织致力于指定面向多个物联网领域的统一的服务层标准。onem2mts-0001功能架构定义了协议的总体框架并定义了三类功能实体:应用实体ae、公共服务实体cse、以及网络服务实体nse。在应用实体ae和公共服务实体cse之间、在公共服务实体cse和公共服务实体cse之间、以及在公共服务实体cse和网络服务实体nse之间均通过请求原语(requestprimitive)和响应原语(responseprimitive)进行交互。
根据请求原语和响应原语交互方式的不同,onem2m定义了三种交互模式:阻塞请求、非阻塞请求同步、非阻塞请求异步。在图1a、图1b和图1c中分别示出了这三种交互模式,并示出了三种交互模式之间的区别。
如图1a所示,阻塞请求是指请求方发送请求后,一直保持会话连接,直至接收到接收方发送的执行结果响应。如图1b所示,非阻塞请求同步是指请求方发送请求后,接收方立即发送响应以向请求方通知已经成功接收请求,然后请求方在接收到接收方发送的响应消息后,间隔一段时间后主动向接收方发送请求以获取执行结果。如图1c所示,非阻塞请求异步是指请求方发送请求后,接收方立即发送响应以向请求方通知已经成功接收请求,然后接收方执行完毕后向接收方发送携带执行结果的执行完成通知。非阻塞请求同步和非阻塞请求异步适用于不同的场景,非阻塞请求同步适用于请求方不能接收通知消息的场景,非阻塞请求异步适用于请求方可接收通知消息的场景。
图2中示出了非阻塞请求同步的一般交互流程。首先,在步骤s1,请求方发送资源请求;在步骤s2,接收方创建请求资源,并在请求资源中记录资源请求的详细信息,同时创建资源索引req-ref;在步骤s3,接收方将资源索引req-ref返回给接收方;在步骤s4,接收方执行请求资源;在步骤s5,请求方向资源索引req-ref发送执行结果获取请求;在步骤s6,由于接收方 尚未执行完成所述非阻塞请求,接收方向请求方发送请求未执行完成响应;在步骤s7,请求方间隔一段时间后,重新向资源索引req-ref发送执行结果获取请求;在步骤s8,由于接收方尚未执行完成所述非阻塞请求,接收方向请求方发送请求未执行完成响应;在步骤s9,接收方执行完成所述非阻塞请求,并记录执行结果;在步骤s10,请求方重新向资源索引req-ref发送执行结果获取请求;在步骤s11,接收方向请求方发送执行结果响应。
在图2所示的非阻塞请求同步的交互流程中,在请求方收到资源索引req-ref后,请求方无法预知接收方执行完成时间,需要多次向资源索引req-ref发送请求尝试获取执行结果,相应地接收方要多次向接收方发送未执行完成响应,由此增加了请求方和接收方的工作负荷,增加了请求方和接收方的设备功耗。
因此,需要能够降低非阻塞请求同步交互流程中由于频繁的执行结果获取请求所引起的请求方和接收方的工作负荷和设备功耗。
技术实现要素:
为了解决上述技术问题,本发明提出了一种非阻塞请求处理方法和装置,其通过在接收方接收到非阻塞请求后确定所述非阻塞请求的执行完成预估时间并将所述执行完成预估时间提供给接收方,可以避免接收方由于无法预知请求执行完成时间而多次尝试获取执行结果的情况,从而可以减轻由于频繁的执行结果获取请求所引起的请求方和接收方的工作负荷和设备功耗。
根据本发明一方面,提供了一种非阻塞请求处理方法,应用于接收方,包括:从请求方接收非阻塞请求;确定所述非阻塞请求的执行完成预估时间;以及将所述执行完成预估时间发送给所述请求方。
根据本发明实施例,所述确定所述非阻塞请求的执行完成预估时间包括:根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间。
根据本发明实施例,根据以下至少一项来确定所述执行完成预估时间的确定策略:所述请求方的指示;所述接收方的当前状态;以及所述非阻塞请求的执行参数。
根据本发明实施例,根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间包括:根据预定的执行完成预估时间计算策略计算 所述非阻塞请求的执行完成预估时间,其中,所述预定的执行完成预估时间计算策略根据所述非阻塞请求的请求理想执行时间、所述非阻塞请求的任务优先级、以及接收方负荷量中的至少一项计算所述执行完成预估时间;所述接收方负荷量包括以下至少一项:处理器占有率、内存占有率、网络占有率。
根据本发明实施例,根据该非阻塞请求的理想执行时间、该非阻塞请求所对应的任务优先级的延迟时间、以及所述接收方负荷量所对应的延迟时间来计算该非阻塞请求的执行完成预估时间。
根据本发明实施例,根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间,包括:根据所记录的各类历史请求的执行完成时间来确定所述非阻塞请求的执行完成预估时间。
根据本发明实施例,根据所记录的各类历史请求的执行完成时间来确定所述非阻塞请求的执行完成预估时间包括:选择与所述非阻塞请求匹配的至少一个历史请求;获取所述至少一个历史请求的历史执行完成时间;以及根据所述至少一个历史请求的历史执行完成时间,确定所述非阻塞请求的执行完成预估时间。优选地,根据所述非阻塞请求的请求种类以及请求操作对象,或者根据所述非阻塞请求的请求种类,来选择与所述非阻塞请求匹配的所述至少一个历史请求。优选地,将所述至少一个历史请求的历史执行完成时间的最大值确定为所述非阻塞请求的执行完成预估时间。
根据本发明实施例,根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间,包括:根据预设的各类非阻塞请求的执行完成预估时间,来确定所接收到的非阻塞请求的执行完成估计时间。优选地,按照请求类型、或者按照请求种类和请求操作对象对所接收到的非阻塞请求进行分类以确定所接收到的非阻塞请求的请求分类,并且将与该请求分类对应的预设执行完成预估时间作为所接收到的非阻塞请求的执行完成预估时间。
根据本发明实施例,在响应原语中包括所述执行完成预估时间,并且通过所述响应原语将所述执行完成预估时间发送给所述请求方。
根据本发明实施例,所述非阻塞请求处理方法还包括:在从请求方接收到所述非阻塞请求之后,创建请求资源以及资源索引;以及将所述资源索引发送给所述请求方。
根据本发明实施例,在响应原语中包括所述资源索引和所述执行完成预估时间,并且通过所述响应原语将所述资源索引和所述执行完成预估时间一 起发送给所述请求方。
根据本发明实施例,所述非阻塞请求处理方法还包括:在所述执行完成预估时间之后,并且在接收到请求方的对所述非阻塞请求的执行结果获取请求之后,将对所述非阻塞请求的执行结果发送给所述请求方。
根据本发明另一方面,提供了一种非阻塞请求处理方法,应用于请求方,包括:向接收方发送非阻塞请求;以及从接收方接收所述非阻塞请求的执行完成预估时间。
根据本发明实施例,通过响应原语从所述接收方接收所述执行完成预估时间。优选地,通过响应原语从所述接收方接收所述执行完成预估时间以及所述接收方为所述非阻塞请求创建的请求资源的资源索引。
根据本发明另一方面,提供了一种非阻塞请求处理装置,包括:请求接收模块,被配置为从请求方接收非阻塞请求;时间预估模块,被配置为确定所述非阻塞请求的执行完成预估时间;以及响应模块,被配置为将所述执行完成预估时间发送给所述请求方。
根据本发明实施例,所述时间预估模块根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间。
根据本发明实施例,所述时间预估模块根据以下至少一项来确定所述执行完成预估时间的确定策略:所述请求方的指示;所述接收方的当前状态;以及所述非阻塞请求的执行参数。
根据本发明实施例,所述时间预估模块根据预定的执行完成预估时间计算策略计算所述非阻塞请求的执行完成预估时间,其中,所述预先指定的执行完成预估时间计算策略根据所述非阻塞请求的请求理想执行时间、所述非阻塞请求的任务优先级、以及接收方负荷量中的至少一项计算所述执行完成预估时间;所述接收方负荷量包括以下至少一项:处理器占有率、内存占有率、网络占有率。
根据本发明实施例,所述时间预估模块根据该非阻塞请求的理想执行时间、该非阻塞请求所对应的任务优先级的延迟时间、以及所述接收方负荷量所对应的延迟时间来计算该非阻塞请求的执行完成预估时间。
根据本发明实施例,所述时间预估模块选择与所述非阻塞请求匹配的至少一个历史请求;获取所述至少一个历史请求的历史执行完成时间;以及根据所述至少一个历史请求的历史执行完成时间,确定所述非阻塞请求的执行 完成预估时间。优选地,所述时间预估模块根据所述非阻塞请求的请求种类以及请求操作对象、或者根据所述非阻塞请求的请求种类,来选择与所述非阻塞请求匹配的所述至少一个历史请求。优选地,所述时间预估模块将所述至少一个历史请求的历史执行完成时间的最大值确定为所述非阻塞请求的执行完成预估时间。
根据本发明实施例,所述时间预估模块根据预设的各类非阻塞请求的执行完成预估时间,来确定所接收到的非阻塞请求的执行完成估计时间。优选地,所述时间预估模块按照请求种类、或者按照请求种类和请求操作对象对所接收到的非阻塞请求进行分类以确定所接收到的非阻塞请求的请求分类,并且将与该请求分类对应的预设执行完成预估时间作为所接收到的非阻塞请求的执行完成预估时间。
根据本发明实施例,所述响应模块将所述执行完成预估时间包括在响应原语中,并且通过所述响应原语将所述执行完成预估时间发送给所述请求方。
根据本发明实施例,所述非阻塞请求处理装置还包括:资源创建模块,被配置为创建请求资源以及资源索引;其中,所述响应模块被配置为将所述资源索引发送给所述请求方。
根据本发明实施例,所述响应模块将所述资源索引和所述执行完成预估时间包括在响应原语中,并且通过所述响应原语将所述资源索引和所述执行完成预估时间一起发送给所述请求方
根据本发明实施例,所述非阻塞请求处理装置还包括:请求执行模块,被配置为执行所述非阻塞请求;其中,所述请求接收模块还被配置为从所述请求方接收执行结果获取请求,所述执行结果获取请求用于获取对所述非阻塞请求的执行结果;以及所述响应模块还被配置为将对所述非阻塞请求的执行结果发送给所述请求方。
采用根据本发明实施例的非阻塞请求处理方法和装置,通过在接收到非阻塞请求后估计该非阻塞请求的执行完成预估时间并将所估计的执行完成预估时间发送给所述请求方,使得所述请求方能够大致了解该非阻塞请求的预计执行完成时间,在所述执行完成预估时间后再向接收方发送所述执行结果获取请求,从而避免了所述请求方不断发送执行结果获取请求尝试获取执行结果的情况,并且降低了由于频繁的执行结果获取请求所引起的请求方和接收方的工作负荷和设备功耗。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1a、图1b和图1c分别示出了onem2m定义的三种交互模式的示意性交互过程;
图2示出了非阻塞请求同步的一般交互流程;
图3a和图3b示出了根据本发明实施例的非阻塞请求处理方法的示意性流程图;
图4示出了根据本发明实施例的请求方和接收方之间的示意性交互过程;
图5示出了根据本发明实施例的请求方向接收方发送的响应参数的示例;
图6示出了根据本发明第一实施例的请求方和接收方之间的示意性交互过程;
图7示出了根据本发明第一实施例的计算执行完成预估时间的示意性表格;
图8示出了根据本发明第二实施例的请求方和接收方之间的示意性交互流程图;
图9示出了根据本发明第二实施例的根据所记录的各类历史请求的执行完成时间来确定所述非阻塞请求的执行完成预估时间的方法;
图10示出了根据本发明第二实施例的计算执行完成预估时间的示意性表格;
图11示出了根据本发明第三实施例的请求方和接收方之间的示意性交互流程图;
图12示出了根据本发明第三实施例的计算执行完成预估时间的示意性表格;
图13示出了根据本发明实施例的在接收方实现的非阻塞请求处理设备的示意性框图;
图14示出了根据本发明实施例的在接收方实现的非阻塞请求处理装置的示意性框图;
图15示出了根据本发明实施例的在请求方实现的非阻塞请求处理设备的示意性框图;
图16示出了根据本发明实施例的在请求方实现的非阻塞请求处理装置的示意性框图。
具体实施方式
为了使得本发明实施例的目的、技术方案和优点更为明显,下面将参照附图详细描述本发明的示例实施例。显然,所描述的示例实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
这里,需要注意的是,在附图中,将相同的附图标记赋予基本上具有相同或类似结构和功能的组成部分,并且将省略关于它们的重复描述。
以下将分别从接收方和请求方说明本发明实施例的非阻塞请求处理方法。
首先,参考图3a,从接收方来描述根据本发明实施例的非阻塞请求处理方法。
在步骤s31,接收方从请求方接收非阻塞请求。
在步骤s32,接收方确定所述非阻塞请求的执行完成预估时间。
在步骤s33,接收方将所述执行完成预估时间发送给所述请求方。
所述执行完成预估时间可以是所述接收方执行完成所述非阻塞请求的预估时间点,也可以是从所述接收方接收到所述非阻塞请求的时间点到所述接收方执行完成所述非阻塞请求的预估时间点的时间段。
接下来,参考图3b,从请求方来描述根据本发明实施例的非阻塞请求处理方法。
在步骤s36,请求方向接收方发送非阻塞请求。
在步骤s37,请求方从接收方接收所述非阻塞请求的执行完成预估时间。
根据本发明实施例的非阻塞请求处理方法,通过在接收到非阻塞请求后估计该非阻塞请求的执行完成预估时间并将所估计的执行完成预估时间发送给所述请求方,使得所述请求方能够大致了解该非阻塞请求的预计执行完成时间,避免了所述请求方不断发送执行结果获取请求尝试获取执行结果的情况。
下面,将以onem2m协议为例来描述根据本发明实施例的请求方和接收方之间的交互过程。
根据本发明实施例,所述请求方可以为应用实体ae,所述接收方可以为公共服务实体cse;或者所述请求方可以为公共服务实体cse,所述接收方可以为公共服务实体cse;或者所述请求方可以为公共服务实体cse,所述接收方可以为网络服务实体nse。
在本说明书中,将以请求方为应用实体ae并且接收方为公共服务实体cse为例来描述根据本发明实施例的非阻塞请求处理方法。
如图4所示,示出了根据本发明实施例的请求方和接收方之间的交互过程。
在步骤s41,请求方向接收方发送非阻塞请求,并且接收方接收该非阻塞请求。
在步骤s42,接收方确定所述非阻塞请求的执行完成预估时间。可选地,接收方还创建请求资源,并且创建资源索引req-ref。此外,可选地,还可以在请求资源中记录资源请求的详细信息。例如,在onem2m协议下,所述请求资源(<request>)可以记录所述非阻塞请求的相关信息,包括:请求方、接收方、请求id、请求内容、请求状态、请求执行结果等等。
在步骤s43,接收方将所述非阻塞请求的执行完成预估时间发送给所述请求方。可选地,接收方将所创建的资源索引req-ref与所述非阻塞请求的执行完成预估时间同时发送给所述请求方,并且接收方接收所述资源索引req-ref和所述执行完成预估时间。
然后,在步骤s441,所述请求方等待所述执行完成预估时间。同时,在步骤s442,所述接收方执行所述接收到的非阻塞请求并记录执行结果。
在步骤s45,所述请求方向所述接收方发送执行结果获取请求,所述接 收方接收所述执行结果获取请求,所述执行结果获取请求用于获取对所述非阻塞请求的执行结果。可选地,所述请求方向所述接收方发送针对所述资源索引req-ref的执行结果获取请求。
在步骤s46,所述接收方将对所述非阻塞请求的执行结果发送给所述请求方,并且所述请求方接收所述执行结果。
根据本发明实施例的非阻塞请求处理方法,通过将请求的执行完成预估时间发送给请求方,请求方可以在等待所述执行完成预估时间后再向接收方发送所述执行结果获取请求,从而避免了所述请求方不断发送执行结果获取请求尝试获取执行结果的情况,并且降低了由于频繁的执行结果获取请求所引起的请求方和接收方的工作负荷和设备功耗。
应了解,onem2m协议基于资源,接收方创建请求资源并创建资源索引,然后在请求方和接收方之间通过资源索引进行信息交互。然而,应用非阻塞请求的其他协议可以不基于资源,在此情况下,接收方无需创建请求资源并创建资源索引,也就是说:步骤s42、s43和s45中与请求资源创建和资源索引交互的内容不是必需的。
如图5所示,示出了根据本发明实施例的接收方向请求方提供请求的执行完成预估时间的响应原语。根据本发明实施例,在接收方向请求方提供的响应原语中增加响应参数:结果预估时间(resultestimatedtimestamp)。所述结果预估时间响应参数用于指示所述接收方执行完成所述非阻塞请求并且所述请求方可以获得所述非阻塞请求的执行结果的时间。
作为示例,响应原语还包括以下响应参数中的至少一部分:响应状态码(responsestatuscode)、请求标识符(requestidentifier)、内容(包含req-ref)、发送至(to)、源自(from)、发起时间(originatingtimestamp)、结果到期时间(resultexpirationtimestamp)、事件类型(eventcategory)。
下面,将参考图6来描述根据本发明第一实施例的非阻塞请求处理方法。
根据本发明第一实施例,根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间,包括:根据预先指定的执行完成预估时间计算策略计算所述非阻塞请求的执行完成预估时间。
根据本发明第一实施例,在接收方预先指定执行完成预估时间计算策略,并且根据该预先指定的执行完成预估时间计算策略计算所述非阻塞请求的执行完成预估时间。
在步骤s61,请求方向接收方发送非阻塞请求,并且接收方接收该非阻塞请求。
在步骤s62,接收方根据该预先指定的执行完成预估时间计算策略计算所述非阻塞请求的执行完成预估时间。可选地,接收方创建请求资源,创建资源索引req-ref,并且还可以在请求资源中记录资源请求的详细信息。
在步骤s63,接收方将所述非阻塞请求的执行完成预估时间发送给所述请求方。可选地,接收方将所创建的资源索引req-ref与所述非阻塞请求的执行完成预估时间一起发送给所述请求方,并且接收方接收所述资源索引req-ref和所述执行完成预估时间。
然后,在步骤s641,所述请求方等待所述执行完成预估时间。同时,在步骤s642,所述接收方执行所述非阻塞请求并记录执行结果。
在步骤s65,所述请求方向所述接收方发送执行结果获取请求,所述接收方接收所述执行结果获取请求,所述执行结果获取请求用于获取对所述非阻塞请求的执行结果。可选地,所述请求方向所述接收方发送针对所述资源索引req-ref的执行结果获取请求。
在步骤s66,所述接收方将对所述非阻塞请求的执行结果发送给所述请求方,并且所述请求方接收所述执行结果。
根据本发明第一实施例,所述预先指定的执行完成预估时间计算策略可以考虑以下至少一项:请求理想执行时间、任务优先级、以及接收方负荷量,即所述预先指定的执行完成预估时间计算策略根据请求理想执行时间、任务优先级、以及接收方负荷量中的至少一项计算所述执行完成预估时间。此外,根据本发明第一实施例,所述接收方负荷量可以包括以下至少一项:处理器占有率、内存占有率、网络占有率。
例如,对于接收方接收到的每个非阻塞请求,可以按照其需要的资源,将非阻塞请求划分为以下请求类型:处理器消耗型、存储消耗型、网络消耗型、处理器和存储消耗型、处理器和网络消耗型、存储和网络消耗型、处理器和存储和网络消耗型。
对于接收方接收到的所述非阻塞请求,可以根据该非阻塞请求的指令数以及单位指令执行时间,来计算该非阻塞请求的理想执行时间。
优选地,对于每个非阻塞请求,可以根据该非阻塞请求的理想执行时间、该非阻塞请求所对应的任务优先级的延迟时间、以及所述接收方负荷量所对 应的延迟时间来计算该非阻塞请求的执行完成预估时间。
根据本发明第一实施例,对于不同请求类型的非阻塞请求,所述接收方负荷量的具体体现方式也不同。
具体的,对于处理器消耗型的非阻塞请求,所述接收方负荷量包括处理器占有率;对于存储消耗型的非阻塞请求,所述接收方负荷量包括存储占有率;对于网络消耗型的非阻塞请求,所述接收方负荷量包括网络占有率;对于处理器和存储消耗型的非阻塞请求,所述接收方负荷量包括处理器占有率和存储占有率;对于处理器和网络消耗型的非阻塞请求,所述接收方负荷量包括处理器占有率和网络占有率;对于存储和网络消耗型的非阻塞请求,所述接收方负荷量包括存储占有率和网络占有率;对于处理器和存储和网络消耗型的非阻塞请求,所述接收方负荷量包括处理器占有率、存储占有率和网络占有率。
如图7所示,示出了根据本发明第一实施例的计算执行完成预估时间的示意性表格。
例如,对于处理器消耗型的非阻塞请求,执行完成预估时间可以为:单位指令执行时间(a1微秒/指令)×该非阻塞请求的指令数(a2指令)+该非阻塞请求的任务优先级所对应的延迟时间(t1x)+当前处理器占有率所对应的延迟时间(t2x)。
例如,对于存储消耗型的非阻塞请求,执行完成预估时间可以为:单位指令执行时间(b1微秒/指令)×该非阻塞请求的指令数(b2指令)+该非阻塞请求的任务优先级所对应的延迟时间(t1x)+当前存储占有率所对应的延迟时间(t3x)。
例如,对于网络消耗型的非阻塞请求,执行完成预估时间可以为:单位指令执行时间(c1微秒/指令)×该非阻塞请求的指令数(c2指令)+该非阻塞请求的任务优先级所对应的延迟时间(t1x)+当前网络占有率所对应的延迟时间(t4x)。“×”为乘法运算符号,“+”为加法运算符号。
下面,参考图8来描述根据本发明第二实施例的非阻塞请求处理方法。
根据本发明第二实施例,根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间,具体包括:根据所记录的各类历史请求的执行完成时间来确定当前接收到的所述非阻塞请求的执行完成预估时间。
根据本发明第二实施例,在接收方预先记录各类历史请求的执行完成时 间,并且在从请求方接收到非阻塞请求之后,根据所记录的各类历史请求的执行完成时间来确定当前接收到的所述非阻塞请求的执行完成预估时间。
在步骤s81,请求方向接收方发送非阻塞请求,并且接收方接收该非阻塞请求。
在步骤s82,接收方接收到非阻塞请求后根据所记录的各类历史请求的执行完成时间来确定所述非阻塞请求的执行完成预估时间。可选地,接收方创建请求资源,创建资源索引req-ref,并且还可以在请求资源中记录资源请求的详细信息。
在步骤s83,接收方将所述非阻塞请求的执行完成预估时间发送给所述请求方。可选地,接收方将所创建的资源索引req-ref与所述非阻塞请求的执行完成预估时间一起发送给所述请求方,并且接收方接收所述资源索引req-ref和所述执行完成预估时间。
然后,在步骤s841,所述请求方等待所述执行完成预估时间。同时,在步骤s842,所述接收方执行所述非阻塞请求并记录执行结果。
在步骤s85,所述请求方向所述接收方发送执行结果获取请求,所述接收方接收所述执行结果获取请求,所述执行结果获取请求用于获取对所述非阻塞请求的执行结果。可选地,所述请求方向所述接收方发送针对所述资源索引req-ref的执行结果获取请求。
在步骤s86,所述接收方将对所述非阻塞请求的执行结果发送给所述请求方,并且所述请求方接收所述执行结果。
下面,参考图9来描述根据本发明第二实施例的根据所记录的各类历史请求的执行完成时间来确定所述非阻塞请求的执行完成预估时间的方法。
在步骤s91,选择与所述非阻塞请求匹配的至少一个历史请求。
可选地,可以根据所述非阻塞请求的请求种类,来选择与所述非阻塞请求匹配的所述至少一个历史请求。
可选地,可以根据所述非阻塞请求的请求种类以及请求操作对象,来选择与所述非阻塞请求完全匹配的至少一个历史请求,或者选择与所述非阻塞请求匹配度较高的至少一个历史请求。
如图10所示,示出了根据本发明第二实施例的各类历史请求的请求种类、请求操作对象以及历史执行完成时间。
例如,根据onem2m协议,非阻塞请求的请求种类可以包括:创建 (create)、取得(retrieve)、更新(update)、删除(delete)、以及通知(notify)。
例如,根据onem2m协议,非阻塞请求的请求操作对象可以包括:cse资源(csebase)、ae资源(ae)、远程ae资源(remoteae)、容器资源(container)等。
在步骤s92,获取所述至少一个历史请求的历史执行完成时间。
在步骤s93,根据所述至少一个历史请求的历史执行完成时间,确定所述非阻塞请求的执行完成预估时间。
如图10所示,根据所述非阻塞请求的请求种类以及请求操作对象选择了一个与所述非阻塞请求接近的历史请求,将该历史请求的历史执行完成时间作为所述非阻塞请求的执行完成预估时间。
此外,例如,在根据所述非阻塞请求的请求种类以及请求操作对象选择了多个与所述非阻塞请求接近的历史请求时,可以选择所述多个历史请求的历史执行完成时间的最大值作为所述非阻塞请求的执行完成预估时间;或者可以选择所述多个历史请求的历史执行完成时间的平均值作为所述非阻塞请求的执行完成预估时间。
再例如,在根据所述非阻塞请求的请求种类选择了多个与所述非阻塞请求接近的历史请求时,可以选择所述多个历史请求的历史执行完成时间的最大值作为所述非阻塞请求的执行完成预估时间。
下面,将参考图11来描述根据本发明第三实施例的非阻塞请求处理方法。
根据本发明第三实施例,根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间,包括:根据预设的各类非阻塞请求的执行完成预估时间,来确定所接收到的非阻塞请求的执行完成估计时间。
根据本发明第三实施例,在接收方预设各类非阻塞请求的执行完成预估时间,并且在从请求方接收到非阻塞请求之后,将与所接收到的非阻塞请求最接近的一类非阻塞请求的预设执行完成预估时间作为所接收到的非阻塞请求的执行完成估计时间。
在步骤s111,请求方向接收方发送非阻塞请求,并且接收方接收该非阻塞请求。
在步骤s112,接收方根据各类非阻塞请求的预设执行完成预估时间来确定所接收到的非阻塞请求的执行完成估计时间。可选地,接收方创建请求资 源,创建资源索引req-ref,并且还可以在请求资源中记录资源请求的详细信息。
例如,所述接收方可以按照请求种类、或者按照请求种类和请求操作对象对所接收到的非阻塞请求进行分类以确定当前接收到的非阻塞请求的请求分类,并且将与该请求分类对应的预设执行完成预估时间作为当前接收到的非阻塞请求的执行完成预估时间。
在步骤s113,接收方将所述非阻塞请求的执行完成预估时间发送给所述请求方。可选地,接收方将所创建的资源索引req-ref与所述非阻塞请求的执行完成预估时间一起发送给所述请求方,并且接收方接收所述资源索引req-ref和所述执行完成预估时间。
然后,在步骤s1141,所述请求方等待所述执行完成预估时间。同时,在步骤s1142,所述接收方执行所述非阻塞请求并记录执行结果。可选地,在步骤s1142,所述接收方根据所述非阻塞请求的实际执行完成时间来更新与所述非阻塞请求对应的类别的执行完成预估时间。
在步骤s115,所述请求方向所述接收方发送执行结果获取请求,所述接收方接收所述执行结果获取请求,所述执行结果获取请求用于获取对所述非阻塞请求的执行结果。可选地,所述请求方向所述接收方发送针对所述资源索引req-ref的执行结果获取请求。
在步骤s116,所述接收方将对所述非阻塞请求的执行结果发送给所述请求方,并且所述请求方接收所述执行结果。
根据本发明第三实施例,根据各类非阻塞请求的执行完成预估时间,来确定所接收到的非阻塞请求的执行完成估计时间,包括:所述接收方可以按照请求种类、或者按照请求种类和请求操作对象对所接收到的非阻塞请求进行分类。从请求分类和执行完成预估时间的对应关系中确定出与所述非阻塞请求的请求分类相匹配的执行完成预估时间作为所接收到的非阻塞请求的执行完成预估时间。
如前所述,按照请求种类,可以将非阻塞请求划分为:创建(create)、取得(retrieve)、更新(update)、删除(delete)、以及通知(notify)。对于每个请求种类,可以预设该请求种类的执行完成预估时间。例如,对于每个请求种类,可以根据该请求种类的各历史请求的历史执行完成时间的最大值来预设该请求种类的执行完成预估时间。
如图12所示,示出了根据本发明第三实施例的为每个请求种类预设该请求种类的执行完成预估时间的示例。
可替换地,如前所述,可以进一步按照请求操作对象,将每个请求种类进一步划分为多个请求子类:csebase、ae、remotecse、container等。对于每个请求子类,可以根据该请求子类的各历史请求的历史执行完成时间的最大值来预设该请求子类的执行完成预估时间。参考图10所示,t11、t12、…t54等可以分别表示各个请求子类对应的最大历史执行完成时间。
具体地,在每次执行完成非阻塞请求之后,在该非阻塞请求的实际执行完成时间大于该非阻塞请求所对应的请求分类(即,请求种类或请求子类)的预设执行完成预估时间的情况下,都将该非阻塞请求所对应的请求分类(即,请求种类或请求子类)的预设执行完成预估时间更新为该非阻塞请求的实际执行完成时间;反之,在该非阻塞请求的实际执行完成时间不大于该非阻塞请求所对应的请求分类(即,请求种类或请求子类)的预设执行完成预估时间的情况下,保持该非阻塞请求所对应的请求分类(即,请求种类或请求子类)的预设执行完成预估时间不变。
应了解,onem2m协议是基于资源请求的协议,接收方创建请求资源并创建资源索引,然后在请求方和接收方之间通过资源索引进行信息交互。然而,应用非阻塞请求的其他协议可以不基于资源请求,在此情况下,接收方无需创建资源并创建资源索引,也就是说:在本发明第一至第三实施例中,步骤s62、s63、s65、s82、s83、s85、s112、s113、s115中与资源创建和资源索引交互的内容不是必需的。
下面,将参考图13来描述根据本发明实施例的非阻塞请求处理设备,该非阻塞请求处理设备在非阻塞请求的接收方实现。
根据本发明实施例的非阻塞请求处理设备包括通信模块131、处理器132和存储器133。
通信模块131被配置为与外部进行数据通信,以便从外部接收各种请求,例如从请求方接收任务执行请求以及执行结果获取请求,并且将各种响应消息发送至外部,例如向请求方发送请求接收响应以及执行结果响应。
存储器133被配置为存储程序指令。
处理器132被配置为执行在存储器中存储的程序指令以执行如上所述的根据本发明实施例的非阻塞请求处理方法,并且可以实现根据本发明实施例 的非阻塞请求处理装置。
下面,将参考图14来描述根据本发明实施例的非阻塞请求处理装置,该非阻塞请求处理装置在非阻塞请求的接收方实现。
所述非阻塞请求处理装置可以包括请求接收模块141、资源创建模块142、时间预估模块143、请求执行模块144、以及响应模块145。
所述请求接收模块141被配置为接收非阻塞请求,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s31、s41、s61、s81和s111。此外,所述请求接收模块141还被配置为接收执行结果获取请求,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s45、s65、s85和s115。
所述资源创建模块142被配置为所述请求接收模块141接收的非阻塞请求创建请求资源以及资源索引req-ref,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s42、s62、s82和s112的一部分。
所述时间预估模块143被配置为确定所述非阻塞请求的执行完成预估时间,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s42、s62、s82和s112的一部分。
根据本发明实施例,所述时间预估模块143可以被配置为根据执行完成预估时间的确定策略确定所述非阻塞请求的执行完成预估时间。可选地,所述时间预估模块143可以被配置为根据以下至少一项来确定所述执行完成预估时间的确定策略:所述请求方的指示;所述接收方的当前状态;以及所述非阻塞请求的执行参数。
根据本发明实施例,所述时间预估模块143可以被配置为根据预先指定的执行完成预估时间计算策略计算所述非阻塞请求的执行完成预估时间(如根据本发明第一实施例的非阻塞请求处理方法的步骤s62)。如在本发明第一实施例中所描述的,所述预先指定的执行完成预估时间计算策略可以考虑以下至少一项:请求理想执行时间、任务优先级、以及接收方负荷量;所述接收方负荷量可以包括以下至少一项:处理器占有率、内存占有率、网络占有率。
根据本发明实施例,所述时间预估模块143可以被配置为根据所记录的各类历史请求的执行完成时间来确定所述非阻塞请求的执行完成预估时间(如根据本发明第二实施例的非阻塞请求处理方法的步骤s82)。如在本发明 第二实施例中所描述的,所述时间预估模块143可以根据所述非阻塞请求的请求种类、或者根据所述非阻塞请求的请求种类以及请求操作对象来选择与所述非阻塞请求接近的所述至少一个历史请求,然后可以根据所述至少一个历史请求的历史执行完成时间来确定所述非阻塞请求的执行完成预估时间。例如,在仅选择了一个与所述非阻塞请求接近的历史请求,将该历史请求的历史执行完成时间作为所述非阻塞请求的执行完成预估时间。再例如,在选择了多个与所述非阻塞请求接近的历史请求时,可以选择所述多个历史请求的历史执行完成时间的最大值作为所述非阻塞请求的执行完成预估时间;或者可以选择所述多个历史请求的历史执行完成时间的平均值作为所述非阻塞请求的执行完成预估时间。
根据本发明实施例,所述时间预估模块143可以被配置为根据预设的各类非阻塞请求的执行完成预估时间来确定所接收到的非阻塞请求的执行完成估计时间(如根据本发明第三实施例的非阻塞请求处理方法的步骤s112)。如在本发明第三实施例中所描述的,所述时间预估模块143可以按照请求种类、或者按照请求种类和请求操作对象对所接收到的非阻塞请求进行分类以确定当前接收到的非阻塞请求的请求分类,并且将与该请求分类对应的预设执行完成预估时间作为当前接收到的非阻塞请求的执行完成预估时间。
所述请求执行模块144被配置为执行所述非阻塞请求,可选地记录执行结果,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s442、s642、s842和s1142。
所述响应模块145被配置为在所述请求接收模块141接收到所述非阻塞请求并且所述时间预估模块143确定了所述执行完成预估时间之后,将所述执行完成预估时间发送给所述请求方,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s33、s43、s63、s83和s113。优选地,所述响应模块145被配置为在所述请求接收模块141接收到所述非阻塞请求、所述资源创建模块142创建了请求资源并创建了资源索引req-ref、并且所述时间预估模块143确定了所述执行完成预估时间之后,将所创建的资源索引req-ref与所述执行完成预估时间一起发送给所述请求方,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s43、s63、s83和s113。
此外,所述响应模块145还被配置为在所述请求接收模块141接收到执行结果获取请求并且所述请求执行模块144执行完成所述非阻塞请求之后, 将对所述非阻塞请求的执行结果发送给所述请求方,并且相应地执行根据本发明实施例的非阻塞请求处理方法的步骤s46、s66、s86和s116。
下面,将参考图15来描述根据本发明实施例的非阻塞请求处理设备,该非阻塞请求处理设备在非阻塞请求的请求方实现。
根据本发明实施例的非阻塞请求处理设备包括通信模块151、处理器152和存储器153。
通信模块151被配置为与外部进行数据通信,以便向接收方发送各种请求并从接收方接收各种响应,例如向接收方发送非阻塞请求,从接收方接收请求接收响应,向接收方发送执行结果获取请求,并从接收方接收执行结果响应。
存储器133被配置为存储程序指令。
处理器132被配置为执行在存储器中存储的程序指令以执行如上所述的根据本发明实施例的非阻塞请求处理方法,并且可以实现根据本发明实施例的非阻塞请求处理装置。
下面,将参考图16来描述根据本发明实施例的非阻塞请求处理装置,该非阻塞请求处理装置在非阻塞请求的请求方实现。
所述非阻塞请求处理装置可以包括请求发送模块161、定时器162、以及响应接收模块163。
所述请求发送模块161被配置为向接收方发送非阻塞请求。
所述响应接收模块163被配置为从接收方接收所述非阻塞请求的执行完成预估时间。
所述定时器162被配置为对所述执行完成预估时间进行计时。
在所述定时器162对所述执行完成预估时间计时完毕时,所述请求发送模块161向接收方发送执行结果获取请求。然后,所述响应接收模块163从所述接收方接收所述非阻塞请求的执行结果。
根据本发明实施例的非阻塞请求处理设备和非阻塞请求处理装置,通过在接收到非阻塞请求后估计该非阻塞请求的执行完成预估时间并将所估计的执行完成预估时间发送给所述请求方,使得所述请求方能够大致了解该非阻塞请求的预计执行完成时间,避免了所述请求方不断发送执行结果获取请求尝试获取执行结果的情况。具体地,请求方可以在发送非阻塞请求之后,先等待所述执行完成预估时间,然后再向接收方发送所述执行结果获取请求, 从而避免了所述请求方不断发送执行结果获取请求尝试获取执行结果的情况,并且降低了由于频繁的执行结果获取请求所引起的请求方和接收方的工作负荷和设备功耗。
此外,根据本发明实施例,还提供一种计算机可读存储介质,其上记录了计算机程序代码,在所述计算机程序代码被计算机或处理器运行时,实现如上所述的根据本发明实施例的非阻塞请求处理装置并执行如上所述的根据本发明实施例的非阻塞请求处理方法。
在上面详细描述了本发明的各个实施例。然而,本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可对这些实施例进行各种修改,组合或子组合,并且这样的修改应落入本发明的范围内。