本發明涉及一種非阻塞請求處理方法及裝置。
背景技術:
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從所述接收方接收所述非阻塞請求的執行結果。
根據本發明實施例的非阻塞請求處理設備和非阻塞請求處理裝置,通過在接收到非阻塞請求后估計該非阻塞請求的執行完成預估時間并將所估計的執行完成預估時間發送給所述請求方,使得所述請求方能夠大致了解該非阻塞請求的預計執行完成時間,避免了所述請求方不斷發送執行結果獲取請求嘗試獲取執行結果的情況。具體地,請求方可以在發送非阻塞請求之后,先等待所述執行完成預估時間,然后再向接收方發送所述執行結果獲取請求, 從而避免了所述請求方不斷發送執行結果獲取請求嘗試獲取執行結果的情況,并且降低了由于頻繁的執行結果獲取請求所引起的請求方和接收方的工作負荷和設備功耗。
此外,根據本發明實施例,還提供一種計算機可讀存儲介質,其上記錄了計算機程序代碼,在所述計算機程序代碼被計算機或處理器運行時,實現如上所述的根據本發明實施例的非阻塞請求處理裝置并執行如上所述的根據本發明實施例的非阻塞請求處理方法。
在上面詳細描述了本發明的各個實施例。然而,本領域技術人員應該理解,在不脫離本發明的原理和精神的情況下,可對這些實施例進行各種修改,組合或子組合,并且這樣的修改應落入本發明的范圍內。