国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種懸掛事務(wù)自動處理的方法和裝置與流程

      文檔序號:11250693閱讀:419來源:國知局
      一種懸掛事務(wù)自動處理的方法和裝置與流程

      本發(fā)明涉及計(jì)算機(jī)通信技術(shù)領(lǐng)域,具體涉及一種懸掛事務(wù)自動處理的方法和裝置。



      背景技術(shù):

      分布式事務(wù)是指事務(wù)的參與者、支持事務(wù)的服務(wù)器、資源服務(wù)器以及事務(wù)管理器分別位于不同的分布式系統(tǒng)的不同節(jié)點(diǎn)之上。分布式事務(wù)的成員包括發(fā)起者、協(xié)調(diào)者和參與者。其中,發(fā)起者是分布式事務(wù)的發(fā)起方,一次分布式事務(wù)請求只有一個(gè)發(fā)起者。協(xié)調(diào)者是分布式事務(wù)的總控,負(fù)責(zé)分布式事務(wù)生命周期管理和所有分支的管理,一次分布式事務(wù)請求只有一個(gè)協(xié)調(diào)者。參與者是分布式事務(wù)當(dāng)中的分支事務(wù)的控制者,一次分布式事務(wù)請求可以用多個(gè)分支事務(wù)實(shí)現(xiàn),因此可以有多個(gè)參與者。

      分布式事務(wù)處理過程中,往往會有多個(gè)參與者發(fā)起的多個(gè)分支事務(wù),且這些分支事務(wù)處于不同的網(wǎng)絡(luò)環(huán)境和服務(wù)器集群,由于分布式事務(wù)的環(huán)境復(fù)雜性,常常導(dǎo)致產(chǎn)生懸掛事務(wù)?,F(xiàn)有技術(shù)在懸掛事務(wù)產(chǎn)生后,只有在收到業(yè)務(wù)沒有成功的反饋,或進(jìn)行日切(就是更換系統(tǒng)記賬的時(shí)間,也稱為日志切換)操作時(shí),才會發(fā)現(xiàn)產(chǎn)生了懸掛事務(wù),對懸掛事務(wù)進(jìn)行人工處理。

      現(xiàn)有技術(shù)無法及時(shí)發(fā)現(xiàn)并處理懸掛事務(wù),導(dǎo)致后續(xù)業(yè)務(wù)請求的重試失敗或者資金損失,同時(shí)對于某些業(yè)務(wù)系統(tǒng)(如賬務(wù)),會影響該系統(tǒng)日終結(jié)算等。



      技術(shù)實(shí)現(xiàn)要素:

      為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種懸掛事務(wù)自動處理的方法和裝置,可以及時(shí)發(fā)現(xiàn)并處理懸掛事務(wù),可以避免后續(xù)業(yè)務(wù)請求的重試失敗 和資金損失,同時(shí)對于某些業(yè)務(wù)系統(tǒng)(如賬務(wù)),避免影響該系統(tǒng)日終結(jié)算等。

      為了解決上述問題,本發(fā)明公開了一種懸掛事務(wù)自動處理的方法,所述方法包括:

      當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表;其中,所述參與者事務(wù)記錄表中記載有參與者執(zhí)行的事務(wù)的id、所述事務(wù)的狀態(tài)、所述事務(wù)的創(chuàng)建時(shí)間;

      根據(jù)所述參與者事務(wù)記錄表中記載的所述事務(wù)的狀態(tài)、所述事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定所述事務(wù)是否屬于懸掛事務(wù);

      當(dāng)確定所述事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)所述事務(wù)的id,查詢所述事務(wù)的業(yè)務(wù)處理日志;

      根據(jù)所述事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對所述事務(wù)進(jìn)行懸掛處理。

      進(jìn)一步地,根據(jù)所述參與者事務(wù)記錄表中記載的所述事務(wù)的狀態(tài)、所述事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定所述事務(wù)是否屬于懸掛事務(wù),包括:

      判斷所述參與者事務(wù)記錄表中記載的所述事務(wù)的狀態(tài)是否為正在執(zhí)行;

      如果所述事務(wù)的狀態(tài)為正在執(zhí)行,則計(jì)算所述當(dāng)前時(shí)間與所述事務(wù)的創(chuàng)建時(shí)間的間隔;

      判斷所述當(dāng)前時(shí)間與所述事務(wù)的創(chuàng)建時(shí)間的間隔是否大于預(yù)設(shè)懸掛時(shí)間間隔閾值;

      如果所述當(dāng)前時(shí)間與所述事務(wù)的創(chuàng)建時(shí)間的間隔大于所述預(yù)設(shè)懸掛時(shí)間間隔閾值,則確定所述事務(wù)屬于懸掛事務(wù)。

      進(jìn)一步地,當(dāng)確定所述事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)所述事務(wù)的id,查詢所述事務(wù)的業(yè)務(wù)處理日志,包括:

      當(dāng)確定所述事務(wù)屬于懸掛事務(wù)時(shí),在所述參與者事務(wù)記錄表中標(biāo)記所述事務(wù)的屬性為懸掛事務(wù);

      當(dāng)預(yù)設(shè)懸掛定時(shí)處理時(shí)間到達(dá)時(shí),獲取所述參與者事務(wù)記錄表中屬性為 懸掛事務(wù)的所述事務(wù)的id;

      根據(jù)屬性為懸掛事務(wù)的所述事務(wù)的id,查詢所述事務(wù)的業(yè)務(wù)處理日志。

      進(jìn)一步地,根據(jù)所述事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對所述事務(wù)進(jìn)行懸掛處理,包括:

      判斷所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的多少個(gè)階段的日志;

      如果所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則對所述事務(wù)進(jìn)行回滾;

      如果所述事務(wù)的業(yè)務(wù)處理日志中只包含所述事務(wù)的第一處理階段一個(gè)階段的日志,則根據(jù)所述事務(wù)的id,查詢所述事務(wù)的調(diào)用日志,從所述事務(wù)的調(diào)用日志中獲取所述參與者的上游系統(tǒng)信息,通過所述上游系統(tǒng)信息對應(yīng)的上游系統(tǒng)對所述事務(wù)進(jìn)行懸掛處理。

      進(jìn)一步地,通過所述上游系統(tǒng)信息對應(yīng)的上游系統(tǒng)對所述事務(wù)進(jìn)行懸掛處理,包括:

      根據(jù)所述事務(wù)的id,獲取所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志;

      判斷所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的多少個(gè)階段的日志;

      如果所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則請求所述上游系統(tǒng)對所述事務(wù)進(jìn)行回滾;

      如果所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的第一處理階段一個(gè)階段的日志,則判定無法確定所述事務(wù)的懸掛原因。

      為了解決上述問題,本發(fā)明還公開了一種懸掛事務(wù)自動處理的裝置,所述裝置包括:

      第一查詢模塊,用于當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表;其中,所述參與者事務(wù)記錄表中記載有參與者執(zhí)行的事務(wù)的id、所述事務(wù)的狀態(tài)、所述事務(wù)的創(chuàng)建時(shí)間;

      確定模塊,用于根據(jù)所述參與者事務(wù)記錄表中記載的所述事務(wù)的狀態(tài)、 所述事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定所述事務(wù)是否屬于懸掛事務(wù);

      第二查詢模塊,用于當(dāng)確定所述事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)所述事務(wù)的id,查詢所述事務(wù)的業(yè)務(wù)處理日志;

      處理模塊,用于根據(jù)所述事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對所述事務(wù)進(jìn)行懸掛處理。

      進(jìn)一步地,所述確定模塊包括:

      第一判斷單元,用于判斷所述參與者事務(wù)記錄表中記載的所述事務(wù)的狀態(tài)是否為正在執(zhí)行;

      計(jì)算單元,用于如果所述事務(wù)的狀態(tài)為正在執(zhí)行,則計(jì)算所述當(dāng)前時(shí)間與所述事務(wù)的創(chuàng)建時(shí)間的間隔;

      第二判斷單元,用于判斷所述當(dāng)前時(shí)間與所述事務(wù)的創(chuàng)建時(shí)間的間隔是否大于預(yù)設(shè)懸掛時(shí)間間隔閾值;

      確定單元,用于如果所述當(dāng)前時(shí)間與所述事務(wù)的創(chuàng)建時(shí)間的間隔大于所述預(yù)設(shè)懸掛時(shí)間間隔閾值,則確定所述事務(wù)屬于懸掛事務(wù)。

      進(jìn)一步地,所述第二查詢模塊包括:

      標(biāo)記單元,用于當(dāng)確定所述事務(wù)屬于懸掛事務(wù)時(shí),在所述參與者事務(wù)記錄表中標(biāo)記所述事務(wù)的屬性為懸掛事務(wù);

      獲取單元,用于當(dāng)預(yù)設(shè)懸掛定時(shí)處理時(shí)間到達(dá)時(shí),獲取所述參與者事務(wù)記錄表中屬性為懸掛事務(wù)的所述事務(wù)的id;

      查詢單元,用于根據(jù)屬性為懸掛事務(wù)的所述事務(wù)的id,查詢所述事務(wù)的業(yè)務(wù)處理日志。

      進(jìn)一步地,所述處理模塊包括:

      第三判斷單元,用于判斷所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的多少個(gè)階段的日志;

      回滾單元,用于如果所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則對所述事務(wù)進(jìn)行回滾;

      處理單元,用于如果所述事務(wù)的業(yè)務(wù)處理日志中只包含所述事務(wù)的第一 處理階段一個(gè)階段的日志,則根據(jù)所述事務(wù)的id,查詢所述事務(wù)的調(diào)用日志,從所述事務(wù)的調(diào)用日志中獲取所述參與者的上游系統(tǒng)信息,通過所述上游系統(tǒng)信息對應(yīng)的上游系統(tǒng)對所述事務(wù)進(jìn)行懸掛處理。

      進(jìn)一步地,所述處理單元包括:

      獲取子單元,用于根據(jù)所述事務(wù)的id,獲取所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志;

      判斷子單元,用于判斷所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的多少個(gè)階段的日志;

      回滾子單元,用于如果所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則請求所述上游系統(tǒng)對所述事務(wù)進(jìn)行回滾;

      判定子單元,用于如果所述上游系統(tǒng)中所述事務(wù)的業(yè)務(wù)處理日志中包含所述事務(wù)的第一處理階段一個(gè)階段的日志,則判定無法確定所述事務(wù)的懸掛原因。

      與現(xiàn)有技術(shù)相比,本發(fā)明可以獲得包括以下技術(shù)效果:

      1)當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表,根據(jù)參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定事務(wù)是否屬于懸掛事務(wù),當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志,根據(jù)事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對事務(wù)進(jìn)行懸掛處理,可以及時(shí)發(fā)現(xiàn)并處理懸掛事務(wù),可以避免后續(xù)業(yè)務(wù)請求的重試失敗和資金損失,同時(shí)對于某些業(yè)務(wù)系統(tǒng)(如賬務(wù)),避免影響該系統(tǒng)日終結(jié)算等。

      2)通過配置懸掛定時(shí)查詢時(shí)間、懸掛定時(shí)處理時(shí)間方式,可以自動發(fā)現(xiàn)懸掛事務(wù)并自動解決,可以盡快消除業(yè)務(wù)重試失敗風(fēng)險(xiǎn)和資金風(fēng)險(xiǎn)。

      當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有技術(shù)效果。

      附圖說明

      此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

      圖1是本發(fā)明實(shí)施例的第一種懸掛事務(wù)自動處理的方法流程圖;

      圖2是本發(fā)明實(shí)施例的一種分布式事務(wù)的處理示意圖;

      圖3是本發(fā)明實(shí)施例的第二種懸掛事務(wù)自動處理的方法流程圖;

      圖4是本發(fā)明實(shí)施例的第三種懸掛事務(wù)自動處理的方法流程圖;

      圖5是本發(fā)明實(shí)施例的第四種懸掛事務(wù)自動處理的方法流程圖;

      圖6是本發(fā)明實(shí)施例的一種懸掛事務(wù)自動處理的裝置結(jié)構(gòu)示意圖。

      具體實(shí)施方式

      以下將配合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,藉此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。

      在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

      內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

      計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲器(sram)、動態(tài)隨機(jī)存取存儲器(dram)、其他類型的隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電 腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。

      如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個(gè)組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”。“大致”是指在可接收的誤差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實(shí)施本發(fā)明的較佳實(shí)施方式,然所述描述乃以說明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。

      還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。

      實(shí)施例描述

      下面以一實(shí)施例對本發(fā)明方法的實(shí)現(xiàn)作進(jìn)一步說明。如圖1所示,為本發(fā)明實(shí)施例的一種懸掛事務(wù)自動處理的方法流程圖,該方法包括:

      s101:當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表。

      其中,參與者事務(wù)記錄表中記載有參與者執(zhí)行的事務(wù)的id(身份標(biāo)識)、事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間等。事務(wù)的狀態(tài)包括正在執(zhí)行、第一處理階段完結(jié)、第二處理階段完結(jié)等。

      需要說明的是,分布式事務(wù)處理過程中一般包括二個(gè)階段,第一處理階段和第二處理階段,第一處理階段進(jìn)行事務(wù)的發(fā)起,第二處理階段進(jìn)行事務(wù) 的提交或回滾等。

      例如:分布式事務(wù)的參與者a的參與者事務(wù)記錄表中記載有:事務(wù)的id:123、事務(wù)的狀態(tài):正在執(zhí)行、事務(wù)的創(chuàng)建時(shí)間:2016-2-20-13:12、事務(wù)的內(nèi)容:租場地。

      具體地,可以配置懸掛事務(wù)定時(shí)查詢?nèi)蝿?wù),當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),進(jìn)行懸掛事務(wù)查詢,確定是否產(chǎn)生了懸掛事務(wù)。預(yù)設(shè)懸掛定時(shí)查詢時(shí)間可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,如可以設(shè)置為30分鐘、1小時(shí)等。每隔一預(yù)設(shè)懸掛定時(shí)查詢時(shí)間,查詢一下是否產(chǎn)生了懸掛事務(wù)。

      s102:根據(jù)參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定事務(wù)是否屬于懸掛事務(wù)。

      具體地,確定事務(wù)是否屬于懸掛事務(wù),即確定事務(wù)是否發(fā)生了懸掛,產(chǎn)生了懸掛事務(wù)。

      具體地,參見圖2,為常見分布式事務(wù)的處理流程(其中,參與者可以包括多個(gè)),在流程的第3步如果網(wǎng)絡(luò)超時(shí),此時(shí)發(fā)起者會收到協(xié)調(diào)者添加分支事務(wù)失敗的結(jié)果,從而發(fā)起回滾,此時(shí)在第二處理階段協(xié)調(diào)者收到的回滾請求,因?yàn)榈?步超時(shí),分支事務(wù)記錄沒有成功落地,所以空回滾,而此時(shí)待第3步請求真正處理完成時(shí),整個(gè)事務(wù)已經(jīng)回滾成功,本次分布式事務(wù)請求結(jié)束,第4步實(shí)際落地的分支事務(wù)記錄,將一直留在協(xié)調(diào)者中,而不會被現(xiàn)有分布式事務(wù)處理,產(chǎn)生懸掛事務(wù)。在流程的第5步如果網(wǎng)絡(luò)超時(shí),此時(shí)發(fā)起者會收到參與者添加分支事務(wù)失敗的結(jié)果,從而發(fā)起回滾,此時(shí)在第二處理階段參與者收到的回滾請求,因?yàn)榈?步超時(shí),預(yù)處理記錄沒入成功落地,所以空回滾,而此時(shí)待第5步請求真正處理完成時(shí),整個(gè)事務(wù)已經(jīng)回滾成功,第6步實(shí)際落地的預(yù)處理記錄,將一直留在參與者中,而不會被現(xiàn)有分布式事務(wù)處理,產(chǎn)生懸掛事務(wù)。

      從上面描述可以看出懸掛事務(wù)產(chǎn)生的一種情況為:由于網(wǎng)絡(luò)超時(shí),可能導(dǎo)致第二處理階段的請求會在預(yù)處理落地之前就到達(dá),而第二處理階段請求處理時(shí)由于第一處理階段的數(shù)據(jù)還沒落地,所以兩階段回滾會空回滾,在分布式事務(wù)結(jié)束后,結(jié)束的分布式事務(wù)將不在發(fā)起第二階段請求,從而產(chǎn)生懸掛事務(wù)。

      懸掛事務(wù)產(chǎn)生的另一種情況為:在第一處理階段完成后,發(fā)起者由于代碼bug(漏洞)導(dǎo)致沒有發(fā)起第二處理階段,從而產(chǎn)生懸掛事務(wù)。

      s103:當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志。

      具體地,業(yè)務(wù)處理日志按照對應(yīng)的事務(wù)的id存儲在參與者服務(wù)器的預(yù)設(shè)存儲空間。在事務(wù)處理過程,產(chǎn)生業(yè)務(wù)處理日志時(shí),參與者服務(wù)器會進(jìn)行雙寫,以保證業(yè)務(wù)處理日志的持久性。

      s104:根據(jù)事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對事務(wù)進(jìn)行懸掛處理。

      具體地,根據(jù)s102中懸掛事務(wù)產(chǎn)生的情況,預(yù)先設(shè)置相應(yīng)的懸掛事務(wù)處理規(guī)則,當(dāng)確定事務(wù)屬于懸掛事務(wù)后,根據(jù)事務(wù)的業(yè)務(wù)處理日志確定懸掛事務(wù)屬于哪一種情況,然后根據(jù)該種情況的懸掛事務(wù)的處理規(guī)則,對事務(wù)進(jìn)行懸掛處理。

      具體地,在本發(fā)明實(shí)施例的一優(yōu)選實(shí)施例中,參見圖3,s102根據(jù)參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定事務(wù)是否屬于懸掛事務(wù),包括:

      s102a:判斷參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)是否為正在執(zhí)行,如果事務(wù)的狀態(tài)為正在執(zhí)行,則執(zhí)行s102b;否則,執(zhí)行s102e。

      s102b:計(jì)算當(dāng)前時(shí)間與事務(wù)的創(chuàng)建時(shí)間的間隔。

      s102c:判斷當(dāng)前時(shí)間與事務(wù)的創(chuàng)建時(shí)間的間隔是否大于預(yù)設(shè)懸掛時(shí)間間隔閾值,如果當(dāng)前時(shí)間與事務(wù)的創(chuàng)建時(shí)間的間隔大于預(yù)設(shè)懸掛時(shí)間間隔閾值,則執(zhí)行s102d;否則,執(zhí)行s102e。

      其中,預(yù)設(shè)懸掛時(shí)間間隔閾值可以根據(jù)實(shí)際應(yīng)用狀況進(jìn)行設(shè)置,如對于一個(gè)業(yè)務(wù)系統(tǒng)來說通常會有超時(shí)時(shí)間,一般超時(shí)時(shí)間為30s,可以考慮設(shè)置預(yù)設(shè)懸掛時(shí)間間隔閾值大于超時(shí)時(shí)間,如可以設(shè)置為2分鐘等,如果事務(wù)處于正在執(zhí)行狀態(tài),同時(shí)處理時(shí)間已經(jīng)遠(yuǎn)超過了超時(shí)時(shí)間,此類情況下正常都會超時(shí)回滾掉,對于此情況的事務(wù)可確定屬于懸掛事務(wù)。

      s102d:確定事務(wù)屬于懸掛事務(wù),然后結(jié)束。

      s102e:確定事務(wù)不屬于懸掛事務(wù),然后結(jié)束。

      具體地,在本發(fā)明實(shí)施例的一優(yōu)選實(shí)施例中,參見圖4,s103當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志,包括:

      s103a:當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),在參與者事務(wù)記錄表中標(biāo)記事務(wù)的屬性為懸掛事務(wù)。

      具體地,在參與者事務(wù)記錄表中標(biāo)記事務(wù)的屬性為懸掛事務(wù),通過標(biāo)記使得后續(xù)可以方便地查詢得到事務(wù)是否屬于懸掛事務(wù)。標(biāo)記事務(wù)的屬性為懸掛事務(wù)時(shí),可以通過標(biāo)識等方法實(shí)現(xiàn),如可以通過標(biāo)識11表示事務(wù)是懸掛事務(wù),通過標(biāo)識00表示事務(wù)不是懸掛事務(wù)等。

      s103b:當(dāng)預(yù)設(shè)懸掛定時(shí)處理時(shí)間到達(dá)時(shí),獲取參與者事務(wù)記錄表中屬性為懸掛事務(wù)的事務(wù)的id。

      具體地,可以配置懸掛事務(wù)定時(shí)處理任務(wù),可以考慮跟懸掛事務(wù)定時(shí)查詢?nèi)蝿?wù)的頻率相同,可以在懸掛事務(wù)定時(shí)查詢?nèi)蝿?wù)完結(jié)后的預(yù)設(shè)時(shí)間(如5秒后,2分鐘后)啟動。

      s103c:根據(jù)屬性為懸掛事務(wù)的事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志。

      具體地,在本發(fā)明實(shí)施例的一優(yōu)選實(shí)施例中,參見圖5,s104根據(jù)事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對事務(wù)進(jìn)行懸掛處理,包括:

      s104a:判斷事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的多少個(gè)階段的日志,如果事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則執(zhí)行s104b;如果事務(wù)的業(yè)務(wù)處理日志中只包含事務(wù)的第一處理階段一個(gè)階段的日志,則執(zhí)行s103c。

      s104b:對事務(wù)進(jìn)行回滾,然后結(jié)束。

      具體地,對事務(wù)進(jìn)行回滾,處理完成后,更新事務(wù)的屬性為非懸掛事務(wù)。

      s104c:根據(jù)事務(wù)的id,查詢事務(wù)的調(diào)用日志,從事務(wù)的調(diào)用日志中獲取參與者的上游系統(tǒng)信息,通過上游系統(tǒng)信息對應(yīng)的上游系統(tǒng)對事務(wù)進(jìn)行懸掛處理,然后結(jié)束。

      其中,上游系統(tǒng)可能是參與者的上游參與者、協(xié)調(diào)者、或發(fā)起者。

      具體地,在本發(fā)明實(shí)施例的一優(yōu)選實(shí)施例中,參見圖6,s104c中的通過上游系統(tǒng)信息對應(yīng)的上游系統(tǒng)對事務(wù)進(jìn)行懸掛處理,包括:

      s104c1:根據(jù)事務(wù)的id,獲取上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志。

      s104c2:判斷上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的多少個(gè)階段的日志,如果上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則執(zhí)行s104c3;如果上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的第一處理階段一個(gè)階段的日志,則執(zhí)行s104c4。

      s104c3:請求上游系統(tǒng)對事務(wù)進(jìn)行回滾,然后結(jié)束。

      具體地,請求上游系統(tǒng)對事務(wù)進(jìn)行回滾,上游系統(tǒng)對事務(wù)進(jìn)行回滾,處理完成后,更新事務(wù)的屬性為非懸掛事務(wù)。

      s104c4:判定無法確定事務(wù)的懸掛原因,然后結(jié)束。

      具體地,對事務(wù)進(jìn)行回滾,處理完成后,或在判定無法確定事務(wù)的懸掛原因后,可以通過發(fā)送短信、郵件等形式將處理結(jié)果通知指定用戶(如檢測系統(tǒng)&調(diào)用系統(tǒng)技術(shù)人員等),便于后續(xù)處理。

      本實(shí)施例所述的懸掛事務(wù)自動處理的方法,當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表,根據(jù)參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定事務(wù)是否屬于懸掛事務(wù),當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志,根據(jù)事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對事務(wù)進(jìn)行懸掛處理,可以及時(shí)發(fā)現(xiàn)并處理懸掛事務(wù),可以避免后續(xù)業(yè)務(wù)請求的重試失敗和資金損失,同時(shí)對于某些業(yè)務(wù)系統(tǒng)(如賬務(wù)),避免影響該系統(tǒng)日終結(jié)算等。通過配置懸掛定時(shí)查詢時(shí)間、懸掛定時(shí)處理時(shí)間方式,可以自動發(fā)現(xiàn)懸掛事務(wù)并自動解決,可以盡快消除業(yè)務(wù)重試失敗風(fēng)險(xiǎn)和資金風(fēng)險(xiǎn)。

      如圖6所示,是本發(fā)明實(shí)施例的一種懸掛事務(wù)自動處理的裝置結(jié)構(gòu)圖,該裝置包括:

      第一查詢模塊201,用于當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表;其中,參與者事務(wù)記錄表中記載有參與者執(zhí)行的事務(wù)的id、事 務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間;

      確定模塊202,用于根據(jù)參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定事務(wù)是否屬于懸掛事務(wù);

      第二查詢模塊203,用于當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志;

      處理模塊204,用于根據(jù)事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對事務(wù)進(jìn)行懸掛處理。

      進(jìn)一步地,確定模塊202包括:

      第一判斷單元,用于判斷參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)是否為正在執(zhí)行;

      計(jì)算單元,用于如果事務(wù)的狀態(tài)為正在執(zhí)行,則計(jì)算當(dāng)前時(shí)間與事務(wù)的創(chuàng)建時(shí)間的間隔;

      第二判斷單元,用于判斷當(dāng)前時(shí)間與事務(wù)的創(chuàng)建時(shí)間的間隔是否大于預(yù)設(shè)懸掛時(shí)間間隔閾值;

      確定單元,用于如果當(dāng)前時(shí)間與事務(wù)的創(chuàng)建時(shí)間的間隔大于預(yù)設(shè)懸掛時(shí)間間隔閾值,則確定事務(wù)屬于懸掛事務(wù)。

      進(jìn)一步地,第二查詢模塊203包括:

      標(biāo)記單元,用于當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),在參與者事務(wù)記錄表中標(biāo)記事務(wù)的屬性為懸掛事務(wù);

      獲取單元,用于當(dāng)預(yù)設(shè)懸掛定時(shí)處理時(shí)間到達(dá)時(shí),獲取參與者事務(wù)記錄表中屬性為懸掛事務(wù)的事務(wù)的id;

      查詢單元,用于根據(jù)屬性為懸掛事務(wù)的事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志。

      進(jìn)一步地,處理模塊204包括:

      第三判斷單元,用于判斷事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的多少個(gè)階段的日志;

      回滾單元,用于如果事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的第一處理階段和 第二處理階段二個(gè)階段的日志,則對事務(wù)進(jìn)行回滾;

      處理單元,用于如果事務(wù)的業(yè)務(wù)處理日志中只包含事務(wù)的第一處理階段一個(gè)階段的日志,則根據(jù)事務(wù)的id,查詢事務(wù)的調(diào)用日志,從事務(wù)的調(diào)用日志中獲取參與者的上游系統(tǒng)信息,通過上游系統(tǒng)信息對應(yīng)的上游系統(tǒng)對事務(wù)進(jìn)行懸掛處理。

      進(jìn)一步地,處理單元包括:

      獲取子單元,用于根據(jù)事務(wù)的id,獲取上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志;

      判斷子單元,用于判斷上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的多少個(gè)階段的日志;

      回滾子單元,用于如果上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的第一處理階段和第二處理階段二個(gè)階段的日志,則請求上游系統(tǒng)對事務(wù)進(jìn)行回滾;

      判定子單元,用于如果上游系統(tǒng)中事務(wù)的業(yè)務(wù)處理日志中包含事務(wù)的第一處理階段一個(gè)階段的日志,則判定無法確定事務(wù)的懸掛原因。

      本實(shí)施例所述的懸掛事務(wù)自動處理的裝置,當(dāng)預(yù)設(shè)懸掛定時(shí)查詢時(shí)間到達(dá)時(shí),查詢參與者事務(wù)記錄表,根據(jù)參與者事務(wù)記錄表中記載的事務(wù)的狀態(tài)、事務(wù)的創(chuàng)建時(shí)間,以及當(dāng)前時(shí)間,確定事務(wù)是否屬于懸掛事務(wù),當(dāng)確定事務(wù)屬于懸掛事務(wù)時(shí),根據(jù)事務(wù)的id,查詢事務(wù)的業(yè)務(wù)處理日志,根據(jù)事務(wù)的業(yè)務(wù)處理日志,按照預(yù)設(shè)懸掛事務(wù)處理規(guī)則,對事務(wù)進(jìn)行懸掛處理,可以及時(shí)發(fā)現(xiàn)并處理懸掛事務(wù),可以避免后續(xù)業(yè)務(wù)請求的重試失敗和資金損失,同時(shí)對于某些業(yè)務(wù)系統(tǒng)(如賬務(wù)),避免影響該系統(tǒng)日終結(jié)算等。通過配置懸掛定時(shí)查詢時(shí)間、懸掛定時(shí)處理時(shí)間方式,可以自動發(fā)現(xiàn)懸掛事務(wù)并自動解決,可以盡快消除業(yè)務(wù)重試失敗風(fēng)險(xiǎn)和資金風(fēng)險(xiǎn)。

      所述裝置與前述的方法流程描述對應(yīng),不足之處參考上述方法流程的敘述,不再一一贅述。

      上述說明示出并描述了本發(fā)明的若干優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi), 通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進(jìn)行改動。而本領(lǐng)域人員所進(jìn)行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1