本技術涉及計算機,特別涉及一種異步業務的超時檢測方法、裝置、計算機設備及存儲介質。
背景技術:
1、隨著計算機技術的發展,用戶在終端上能夠隨時打開游戲客戶端進行游戲。在游戲中涉及一類異步業務,異步業務通常涉及到多個服務器之間的通信交互,在經過多個流程環節以后完成異步業務的整個流程。
2、為避免異步業務阻塞,對異步業務配置超時邏輯,如果在某一流程環節中等待超時,則運行超時邏輯(如超時重試或者超時錯誤)。在高并發場景下,游戲后臺的同一時間段中,可能會存在大量的異步業務都處于等待中,如何對大量并發的異步業務進行超時檢測,是一個急需解決的問題。
技術實現思路
1、本技術實施例提供了一種異步業務的超時檢測方法、裝置、計算機設備及存儲介質,能夠避免大量對尚未超時的異步業務的無效檢測,節約了計算開銷,提升了計算效率,有效避免卡頓。該技術方案如下:
2、一方面,提供了一種異步業務的超時檢測方法,所述方法包括:
3、在符合超時檢測條件的情況下,查詢時間輪上待檢測鏈表的索引,其中,所述時間輪包含多個時間刻度,每個時間刻度關聯于一個業務鏈表,所述業務鏈表用于存放超時時間戳位于所述時間刻度內的異步業務;
4、基于所述索引,確定所述待檢測鏈表所關聯的時間刻度的刻度超時時間戳,所述刻度超時時間戳表征所述時間刻度的最晚超時時間戳;
5、在當前時間戳大于或等于所述刻度超時時間戳的情況下,對所述待檢測鏈表中的異步業務進行超時檢測,得到所述異步業務的超時檢測結果;
6、對所述超時檢測結果指示等待超時的異步業務,執行所述異步業務的超時邏輯。
7、一方面,提供了一種異步業務的超時檢測裝置,所述裝置包括:
8、查詢模塊,用于在符合超時檢測條件的情況下,查詢時間輪上待檢測鏈表的索引,其中,所述時間輪包含多個時間刻度,每個時間刻度關聯于一個業務鏈表,所述業務鏈表用于存放超時時間戳位于所述時間刻度內的異步業務;
9、確定模塊,用于基于所述索引,確定所述待檢測鏈表所關聯的時間刻度的刻度超時時間戳,所述刻度超時時間戳表征所述時間刻度的最晚超時時間戳;
10、檢測模塊,用于在當前時間戳大于或等于所述刻度超時時間戳的情況下,對所述待檢測鏈表中的異步業務進行超時檢測,得到所述異步業務的超時檢測結果;
11、執行模塊,用于對所述超時檢測結果指示等待超時的異步業務,執行所述異步業務的超時邏輯。
12、在一些實施例中,所述檢測模塊包括:
13、初始化單元,用于初始化所述超時檢測的計數變量,所述計數變量用于統計本次超時檢測的異步業務的數量;
14、遍歷單元,用于遍歷所述待檢測鏈表中存放的每個異步業務,對所述異步業務進行超時檢測,得到所述異步業務的超時檢測結果;
15、增加單元,用于增大所述計數變量的取值;
16、停止單元,用于在所述計數變量大于或等于檢測數量閾值的情況下,停止所述超時檢測。
17、在一些實施例中,所述遍歷單元用于:
18、查詢所述時間輪的頭節點列表,得到所述待檢測鏈表的目標頭節點,其中,所述頭節點列表記錄所述時間輪上每個時間刻度所關聯業務鏈表中的頭節點,所述頭節點指向所述業務鏈表中存放的首個異步業務;
19、從所述目標頭節點所指向的首個異步業務開始,依次遍歷所述待檢測鏈表中存放的每個異步業務。
20、在一些實施例中,所述待檢測鏈表包含依次鏈接的多個節點,所述多個節點中的首個節點為所述目標頭節點,所述待檢測鏈表中的每個節點表征一個異步業務,且所述異步業務的屬性數據中記錄所述節點鏈接的上一節點的指針和所述節點鏈接的下一節點的指針。
21、在一些實施例中,所述裝置還包括:
22、賦值模塊,用于在對所述待檢測鏈表中存放的異步業務遍歷完畢的情況下,若所述計數變量仍小于所述檢測數量閾值,在所述時間輪上確定所述待檢測鏈表的下一業務鏈表,將所述下一業務鏈表的索引賦值給所述時間輪上待檢測鏈表的索引。
23、在一些實施例中,所述確定模塊用于:
24、獲取所述時間輪的起始時間戳和所述待檢測鏈表所關聯的時間刻度的刻度時長;
25、基于所述索引、所述起始時間戳和所述刻度時長,確定所述刻度超時時間戳。
26、在一些實施例中,所述裝置還包括:
27、重置模塊,用于在所述時間輪上待檢測鏈表的索引超過索引閾值的情況下,將所述時間輪的起始時間戳重置為當前時間戳,將所述時間輪上待檢測鏈表的索引重置為首個時間刻度所關聯的業務鏈表的索引。
28、在一些實施例中,所述裝置還包括:
29、更新模塊,用于基于所述時間輪重置完畢的起始時間戳,更新所述時間輪的時間刻度;
30、訪問模塊,用于訪問所述時間輪的輪外業務鏈表,所述輪外業務鏈表用于存放超時時間戳位于所述時間輪上全部時間刻度以外的輪外異步業務;
31、分發模塊,用于將所述輪外業務鏈表中的輪外異步業務,分發到在所述時間輪中落入的更新完畢的時間刻度所關聯的業務鏈表中。
32、在一些實施例中,所述分發模塊用于:
33、對所述輪外業務鏈表中的任一輪外異步業務,若所述輪外異步業務的超時時間戳落入所述時間輪上任一更新完畢的時間刻度,將所述輪外異步業務從所述輪外業務鏈表中移除,將所述輪外異步業務添加到所述更新完畢的時間刻度所關聯的業務鏈表中。
34、在一些實施例中,所述裝置還包括:
35、配置模塊,用于對任一新建異步業務,配置所述新建異步業務的超時時間戳;
36、差值確定模塊,用于確定所述新建異步業務的超時時間戳與所述時間輪的起始時間戳之間的時間戳差值;
37、添加模塊,用于在所述時間戳差值小于或等于所述時間輪的時間輪時長的情況下,將所述新建異步業務添加到所述時間輪上符合匹配條件的業務鏈表中;
38、所述添加模塊,還用于在所述時間戳差值大于所述時間輪時長的情況下,將所述新建異步業務添加到輪外業務鏈表中,所述輪外業務鏈表用于存放超時時間戳位于所述時間輪上全部時間刻度以外的輪外異步業務。
39、在一些實施例中,所述添加模塊還用于:
40、基于所述時間戳差值和所述時間刻度的刻度時長,確定符合所述匹配條件的業務鏈表的目標索引,將所述新建異步業務添加到所述目標索引所指示的業務鏈表中。
41、一方面,提供了一種計算機設備,該計算機設備包括一個或多個處理器和一個或多個存儲器,該一個或多個存儲器中存儲有至少一條計算機程序,該至少一條計算機程序由該一個或多個處理器加載并執行以實現如上述異步業務的超時檢測方法。
42、一方面,提供了一種計算機可讀存儲介質,該計算機可讀存儲介質中存儲有至少一條計算機程序,該至少一條計算機程序由處理器加載并執行以實現如上述異步業務的超時檢測方法。
43、一方面,提供一種計算機程序產品,所述計算機程序產品包括一條或多條計算機程序,所述一條或多條計算機程序存儲在計算機可讀存儲介質中。計算機設備的一個或多個處理器能夠從計算機可讀存儲介質中讀取所述一條或多條計算機程序,所述一個或多個處理器執行所述一條或多條計算機程序,使得計算機設備能夠執行上述異步業務的超時檢測方法。
44、本技術實施例提供的技術方案帶來的有益效果至少包括:
45、通過基于異步業務的超時時間戳所落入的時間刻度,來將預計在不同時間段內等待超時的異步業務劃分到不同時間刻度的業務鏈表中,這樣在符合超時檢測條件時,通過對待檢測鏈表計算其時間刻度的刻度超時時間戳,即可通過比較當前時間戳與刻度超時時間戳的大小,判斷該待檢測鏈表中的全部異步業務是否批量超時,如果批量超時那么對該待檢測鏈表中等待超時的異步業務逐個運行超時邏輯,保證了異步業務能夠及時被檢測出來等待超時,并且可以避免大量對尚未超時的異步業務的無效檢測,節約了計算開銷,提升了計算效率,有效避免卡頓。