事務(wù)處理方法及裝置的制造方法
【專利摘要】本申請(qǐng)公開了一種事務(wù)處理方法,包括:獲取待處理事務(wù)的第一請(qǐng)求,第一請(qǐng)求為預(yù)處理請(qǐng)求;判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,第二請(qǐng)求為回滾請(qǐng)求;若是,結(jié)束所述第一請(qǐng)求;若否,執(zhí)行所述第一請(qǐng)求。本申請(qǐng)還公開了一種應(yīng)用該事務(wù)處理方法的事務(wù)處理裝置。與現(xiàn)有技術(shù)相比,本申請(qǐng)所提供的事務(wù)處理方法和裝置,根據(jù)第二請(qǐng)求是否符合預(yù)設(shè)條件來決定是否結(jié)束剛獲取到的第一請(qǐng)求,無論第一請(qǐng)求是預(yù)處理請(qǐng)求還是回滾請(qǐng)求,均能實(shí)現(xiàn)回滾請(qǐng)求被執(zhí)行后預(yù)處理請(qǐng)求不會(huì)被執(zhí)行,預(yù)處理請(qǐng)求被執(zhí)行后回滾請(qǐng)求才會(huì)執(zhí)行;避免預(yù)處理請(qǐng)求在回滾請(qǐng)求后完成來破壞事務(wù)的一致性,保證了數(shù)據(jù)庫(kù)內(nèi)關(guān)于該事務(wù)的數(shù)據(jù)的正確性。
【專利說明】
事務(wù)處理方法及裝置
技術(shù)領(lǐng)域
[0001]本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種事務(wù)處理方法及裝置?!颈尘凹夹g(shù)】
[0002]事務(wù)是計(jì)算機(jī)技術(shù)領(lǐng)域中一個(gè)廣泛使用的概念,是恢復(fù)和并發(fā)控制的基本單位, 由計(jì)算機(jī)所處理的多個(gè)任務(wù)組成,隨著計(jì)算機(jī)性能的快速發(fā)展,事務(wù)處理需求也越來越多; 事務(wù)具有一致性,一致性要求如果事務(wù)中某個(gè)任務(wù)發(fā)生處理異常,數(shù)據(jù)庫(kù)中關(guān)于該事務(wù)的所有數(shù)據(jù)均需返回至事務(wù)處理前的狀態(tài),以保證數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)與事務(wù)的處理進(jìn)程保持一致。
[0003]現(xiàn)有技術(shù)中,通過使用兩階段提交協(xié)議來進(jìn)行事務(wù)的處理,該協(xié)議具體包括:1) 預(yù)處理階段,事務(wù)協(xié)調(diào)器發(fā)送預(yù)處理請(qǐng)求給事務(wù)處理中涉及的參與者,通知它們準(zhǔn)備提交數(shù)據(jù);2)回滾階段,如果事務(wù)協(xié)調(diào)器一直未收到某一參與者的響應(yīng)或有任一參與者做出否定響應(yīng),即表示該參與者準(zhǔn)備失敗,則將一個(gè)回滾請(qǐng)求發(fā)送給所有參與者,使得數(shù)據(jù)庫(kù)中關(guān)于該事務(wù)的所有數(shù)據(jù)恢復(fù)至事務(wù)處理前狀態(tài)。
[0004]然而,該現(xiàn)有技術(shù)中,若有參與者由于事務(wù)處理能力較差或網(wǎng)絡(luò)抖動(dòng)等原因,一直未能完成預(yù)處理請(qǐng)求,而在完成回滾請(qǐng)求并發(fā)出回滾請(qǐng)求完成響應(yīng)后,才完成預(yù)處理請(qǐng)求, 則會(huì)導(dǎo)致后續(xù)該參與者一直處于準(zhǔn)備狀態(tài),而事務(wù)協(xié)調(diào)器則因收到了參與者的回滾完成響應(yīng)后,誤認(rèn)為參與者均回滾完成,使得事務(wù)的一致性被破壞,導(dǎo)致數(shù)據(jù)庫(kù)內(nèi)關(guān)于該事務(wù)的數(shù)據(jù)將會(huì)一片混亂而不可預(yù)測(cè),造成數(shù)據(jù)庫(kù)無法正常使用。
[0005]綜上,現(xiàn)有技術(shù)中的事務(wù)處理存在著事務(wù)一致性難以保證的問題。
[0006]申請(qǐng)內(nèi)容
[0007]本申請(qǐng)實(shí)施例提供一種事務(wù)處理方法及裝置,解決了現(xiàn)有技術(shù)中事務(wù)處理過程中一致性難以保證的技術(shù)問題。
[0008]本申請(qǐng)實(shí)施例還提供一種事務(wù)處理方法,其包括:
[0009]獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求為預(yù)處理請(qǐng)求;
[0010]判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求為回滾請(qǐng)求;
[0011]若是,結(jié)束所述第一請(qǐng)求;若否,執(zhí)行所述第一請(qǐng)求。
[0012]本申請(qǐng)實(shí)施例還提供一種事務(wù)處理方法,其包括:
[0013]獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求為回滾請(qǐng)求;
[0014]判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求為預(yù)處理請(qǐng)求;
[0015]若是,結(jié)束所述第一請(qǐng)求;若否,執(zhí)行所述第一請(qǐng)求。
[0016]本申請(qǐng)實(shí)施例還提供一種事務(wù)處理裝置,其包括:
[0017]獲取模塊,用于獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求為預(yù)處理請(qǐng)求;
[0018]判斷模塊,用于判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求為回滾請(qǐng)求;
[0019]執(zhí)行模塊,若所述第二請(qǐng)求符合預(yù)設(shè)條件,用于結(jié)束所述第一請(qǐng)求,若所述第二請(qǐng)求不符合預(yù)設(shè)條件,用于執(zhí)行所述第一請(qǐng)求。
[0020]本申請(qǐng)實(shí)施例還提供一種事務(wù)處理裝置,其包括:
[0021]獲取模塊,用于獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求為回滾請(qǐng)求;
[0022]判斷模塊,用于判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求為預(yù)處理請(qǐng)求;
[0023]執(zhí)行模塊,若所述第二請(qǐng)求符合預(yù)設(shè)條件,用于結(jié)束所述第一請(qǐng)求,若所述第二請(qǐng)求不符合預(yù)設(shè)條件,用于執(zhí)行所述第一請(qǐng)求。
[0024]本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
[0025]本申請(qǐng)實(shí)施例中,根據(jù)第二請(qǐng)求是否符合預(yù)設(shè)條件來決定是否結(jié)束剛獲取到的第一請(qǐng)求,無論第一請(qǐng)求是預(yù)處理請(qǐng)求還是回滾請(qǐng)求,均能實(shí)現(xiàn)回滾請(qǐng)求被執(zhí)行后預(yù)處理請(qǐng)求不會(huì)被執(zhí)行,預(yù)處理請(qǐng)求被執(zhí)行后回滾請(qǐng)求才會(huì)執(zhí)行;避免預(yù)處理請(qǐng)求在回滾請(qǐng)求后完成來破壞事務(wù)的一致性,保證了數(shù)據(jù)庫(kù)內(nèi)關(guān)于該事務(wù)的數(shù)據(jù)的正確性?!靖綀D說明】
[0026]此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
[0027]圖1為本申請(qǐng)實(shí)施例提供的事務(wù)處理方法的過程。
[0028]圖2為本申請(qǐng)實(shí)施例提供的事務(wù)處理方法中判斷待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件的具體過程,此時(shí),第一請(qǐng)求為預(yù)處理請(qǐng)求,第二請(qǐng)求為回滾請(qǐng)求。
[0029]圖3為本申請(qǐng)另一實(shí)施例提供的事務(wù)處理方法中判斷待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件的具體過程,此時(shí),第一請(qǐng)求為回滾請(qǐng)求,第二請(qǐng)求為預(yù)處理請(qǐng)求。
[0030]圖4為本申請(qǐng)實(shí)施例提供的事務(wù)處理裝置的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0031]為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0032]在事務(wù)在處理過程中,可能存在預(yù)處理請(qǐng)求在回滾請(qǐng)求完成后才結(jié)束導(dǎo)致事務(wù)一致性被破壞的情形,為保證事務(wù)的一致性,本申請(qǐng)實(shí)施例提供一種事務(wù)處理方法,以下結(jié)合附圖詳細(xì)介紹本方法。
[0033]圖1為本申請(qǐng)實(shí)施例提供的事務(wù)處理方法的過程,包括如下步驟:
[0034]S10、獲取待處理事務(wù)的第一請(qǐng)求。
[0035]本申請(qǐng)的實(shí)施例中,第一請(qǐng)求是指事務(wù)的預(yù)處理請(qǐng)求,用于通知參與者準(zhǔn)備提交數(shù)據(jù)。
[0036]通常提交數(shù)據(jù)的動(dòng)作均伴隨著事務(wù)相關(guān)數(shù)據(jù)的轉(zhuǎn)移,例如,通過網(wǎng)上銀行內(nèi)余額賬戶來進(jìn)行網(wǎng)購(gòu)貨款支付,該支付過程即為一事務(wù)。首先,買家的網(wǎng)上銀行余額賬戶獲取預(yù)處理請(qǐng)求后,將貨款轉(zhuǎn)至托管賬戶,在貨款成功存入托管賬戶后,視為余額賬戶完成了預(yù)處理請(qǐng)求;后續(xù),貨款再?gòu)耐泄苜~戶提交至賣家賬戶,從而完成整個(gè)貨款支付。
[0037]S20、判斷該待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,若是,執(zhí)行步驟S30;若否,執(zhí)行步驟S40。
[0038]其中,第二請(qǐng)求為回滾請(qǐng)求,該預(yù)設(shè)條件為:第二請(qǐng)求(回滾請(qǐng)求)在處理中或已經(jīng)處理完。
[0039]S30、結(jié)束該第一請(qǐng)求,并對(duì)管理事務(wù)處理的事務(wù)協(xié)調(diào)器發(fā)送預(yù)處理請(qǐng)求失敗響應(yīng)。
[0040]S40、執(zhí)行該第一請(qǐng)求。
[0041]同樣以網(wǎng)上銀行內(nèi)余額賬戶來進(jìn)行網(wǎng)購(gòu)貨款支付為例,余額賬戶獲取預(yù)處理請(qǐng)求后,若余額賬戶事務(wù)處理能力和網(wǎng)絡(luò)傳輸能力均正常時(shí),余額賬戶執(zhí)行預(yù)處理請(qǐng)求時(shí),回滾請(qǐng)求并未生成,自然回滾請(qǐng)求也不符合其預(yù)設(shè)條件,此時(shí),繼續(xù)執(zhí)行第一請(qǐng)求,以推動(dòng)整個(gè)事務(wù)處理進(jìn)程。
[0042]然而,在余額賬戶處理能力較差或網(wǎng)絡(luò)抖動(dòng)較大時(shí),余額賬戶在后續(xù)收到回滾請(qǐng)求后,開始執(zhí)行回滾請(qǐng)求甚至完成回滾請(qǐng)求時(shí),才獲取到預(yù)處理請(qǐng)求;此時(shí),因回滾請(qǐng)求符合預(yù)設(shè)條件,直接結(jié)束預(yù)處理請(qǐng)求,避免繼續(xù)執(zhí)行預(yù)處理請(qǐng)求導(dǎo)致的事務(wù)一致性問題,保證了數(shù)據(jù)庫(kù)內(nèi)關(guān)于該事務(wù)的數(shù)據(jù)的正確性。
[0043]圖2為本申請(qǐng)實(shí)施例提供事務(wù)處理方法中判斷待處理事務(wù)的回滾請(qǐng)求是否符合預(yù)設(shè)條件的具體過程圖,該步驟S20包括:
[0044]S21a、生成待處理事務(wù)的事務(wù)信息,事務(wù)信息包括事務(wù)標(biāo)識(shí)和事務(wù)狀態(tài)。
[0045]本申請(qǐng)的實(shí)施例中,每次獲取事務(wù)處理請(qǐng)求,無論該事務(wù)處理請(qǐng)求是預(yù)處理請(qǐng)求還是回滾請(qǐng)求,均會(huì)生成待處理事務(wù)的事務(wù)信息。
[0046]事務(wù)信息中事務(wù)標(biāo)識(shí)可通過事務(wù)內(nèi)容、事務(wù)參與者以及事務(wù)發(fā)起時(shí)間等多個(gè)因素來定義,與事務(wù)請(qǐng)求的類型無關(guān),使得每個(gè)事務(wù)處理的過程中,該事務(wù)的事務(wù)信息具有唯一的事務(wù)標(biāo)識(shí)。
[0047]事務(wù)信息中事務(wù)狀態(tài)為正常或回滾,在獲取預(yù)處理請(qǐng)求時(shí),事務(wù)狀態(tài)則標(biāo)為正常; 獲取回滾請(qǐng)求時(shí),事務(wù)狀態(tài)則標(biāo)為回滾。
[0048]S22a、判斷已記載事務(wù)信息的事務(wù)信息總表內(nèi)是否存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)彳目息,若否,執(zhí)行S23a,若是,執(zhí)行S24a。
[0049]本申請(qǐng)的實(shí)施例中,提供一事務(wù)彳目息總表,每次生成事務(wù)彳目息后,均將該事務(wù)的事務(wù)信息存入事務(wù)信息總表內(nèi)。事務(wù)信息總表對(duì)事務(wù)標(biāo)識(shí)做數(shù)據(jù)完整性約束,使得每次事務(wù)處理均只會(huì)有唯一的事務(wù)信息。
[0050]在獲取待處理事務(wù)的事務(wù)處理請(qǐng)求后,將待處理事務(wù)的事務(wù)信息插入事務(wù)信息總表,根據(jù)能夠成功插入來判定是否存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息。
[0051]若出現(xiàn)插入失敗,則判定事務(wù)信息總表內(nèi)存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息,反之,則判定事務(wù)信息總表內(nèi)不存在事務(wù)標(biāo)識(shí)相同的事務(wù)信息,同時(shí)待處理事務(wù)的事務(wù)信息被插入事務(wù)信息總表內(nèi),完成對(duì)事務(wù)信息總表的更新。
[0052]當(dāng)然,本申請(qǐng)的其他實(shí)施例中,還可通過提取待處理事務(wù)的事務(wù)標(biāo)識(shí),查詢事務(wù)信息總表,判斷該事務(wù)標(biāo)識(shí)是否存在于其中,以實(shí)現(xiàn)事務(wù)信息總表內(nèi)是否存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息,在此不做贅述。
[0053]S23a、判定存在相同的事務(wù)信息,即回滾請(qǐng)求不符合預(yù)設(shè)條件。
[0054]在事務(wù)信息總表內(nèi)不存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息時(shí),表明本次待處理事務(wù)的預(yù)處理請(qǐng)求為首次請(qǐng)求,可繼續(xù)執(zhí)行該預(yù)處理請(qǐng)求。
[0055]S24a、判斷存于事務(wù)信息總表內(nèi)的事務(wù)信息的事務(wù)狀態(tài)是否為回滾,若否,執(zhí)行 S25a,若是,執(zhí)行S26a。
[0056]若事務(wù)信息總表內(nèi)存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息,表明本次事務(wù)處理請(qǐng)求并非該事務(wù)的首次處理請(qǐng)求,通過判斷記載于事務(wù)信息總表內(nèi)事務(wù)信息的事務(wù)狀態(tài)是否為回滾,來明確該事務(wù)的當(dāng)前處理進(jìn)度。
[0057]在事務(wù)信息總表內(nèi)事務(wù)信息的事務(wù)狀態(tài)為回滾時(shí),表明該事務(wù)處理已經(jīng)到了回滾階段,此時(shí),判定該事務(wù)的回滾請(qǐng)求正在處理或已處理完;反之,若在事務(wù)信息總表內(nèi)事務(wù)信息的事務(wù)狀態(tài)為正常,表明該事務(wù)處理還處于預(yù)處理階段,通常為單個(gè)事務(wù)請(qǐng)求參與者做多次預(yù)處理請(qǐng)求,可繼續(xù)執(zhí)行當(dāng)前的預(yù)處理請(qǐng)求。
[0058]S25a、判定回滾請(qǐng)求不符合預(yù)設(shè)條件。
[0059]S26a、判定回滾請(qǐng)求在處理中或已經(jīng)處理完,即回滾請(qǐng)求符合預(yù)設(shè)條件。
[0060]本申請(qǐng)的實(shí)施例中,事務(wù)處理方法還包括:在待處理事務(wù)提交成功時(shí),刪除該待處理事務(wù)的事務(wù)信息,降低事務(wù)信息總表占用空間,同時(shí)也提高事務(wù)標(biāo)識(shí)查詢效率。
[0061]本申請(qǐng)另一實(shí)施例提供的事務(wù)處理方法的過程,與前述實(shí)施例中事務(wù)處理方法的過程相比,區(qū)別在于:第一請(qǐng)求為回滾請(qǐng)求,第二請(qǐng)求為預(yù)處理請(qǐng)求,預(yù)設(shè)條件為:預(yù)處理請(qǐng)求在處理中。
[0062]圖3為本申請(qǐng)另一實(shí)施例提供事務(wù)處理方法中判斷待處理事務(wù)的回滾請(qǐng)求是否符合預(yù)設(shè)條件的具體過程圖,步驟S20包括:
[0063]S2 lb、生成待處理事務(wù)的事務(wù)信息,事務(wù)信息包括事務(wù)標(biāo)識(shí)和事務(wù)狀態(tài)。
[0064]S22b、判斷已記載事務(wù)信息的事務(wù)信息總表內(nèi)是否存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息,若是,執(zhí)行S23b,若否,執(zhí)行S24b。
[0065]S23b、判定存在相同的事務(wù)信息,即預(yù)處理請(qǐng)求不符合預(yù)設(shè)條件。
[0066]S24b、判斷是否能夠?qū)⒋幚硎聞?wù)的事務(wù)彳目息插入至事務(wù)彳目息總表,若是,執(zhí)行 S25b,若否,執(zhí)彳丁 S26b。
[0067]在事務(wù)彳目息總表內(nèi)并不存在與待處理事務(wù)相同事務(wù)標(biāo)識(shí)的事務(wù)彳目息存在,且待處理事務(wù)的事務(wù)信息也無法插入事務(wù)信息總表時(shí),表明之前事務(wù)參與者將獲取預(yù)處理請(qǐng)求時(shí)所生成的事務(wù)信息插入事務(wù)信息總表的動(dòng)作仍然在進(jìn)行中。
[0068]此時(shí),使得事務(wù)彳目息總表內(nèi)不存在相同該事物標(biāo)識(shí)的事務(wù)彳目息,事務(wù)參與者無法將獲取回滾請(qǐng)求時(shí)所生成的事務(wù)信息也插入事務(wù)信息總表內(nèi),進(jìn)而獲得預(yù)處理請(qǐng)求在處理中的結(jié)論。
[0069]S25b、判定事務(wù)信息插入失敗,即預(yù)處理請(qǐng)求不符合預(yù)設(shè)條件。
[0070]S26b、判定預(yù)處理請(qǐng)求在處理中,即預(yù)設(shè)處理請(qǐng)求符合預(yù)設(shè)條件。
[0071]通過設(shè)定預(yù)處理請(qǐng)求當(dāng)預(yù)處理請(qǐng)求在處理中時(shí),結(jié)束回滾請(qǐng)求,并對(duì)管理事務(wù)處理的事務(wù)協(xié)調(diào)器發(fā)送回滾請(qǐng)求失敗響應(yīng)。事務(wù)協(xié)調(diào)器等待預(yù)設(shè)延時(shí)后,再向事務(wù)參與者發(fā)送回滾請(qǐng)求,事務(wù)參與者重復(fù)前述執(zhí)行步驟S21b_S26b,直至得到預(yù)處理請(qǐng)求已處理完或處理出錯(cuò)為止。
[0072]由于在完成預(yù)處理請(qǐng)求后,才能執(zhí)行回滾請(qǐng)求;避免了預(yù)處理請(qǐng)求在回滾請(qǐng)求結(jié)束后才完成,保證了數(shù)據(jù)庫(kù)內(nèi)關(guān)于該事務(wù)的數(shù)據(jù)的正確性。
[0073]本申請(qǐng)的實(shí)施例中,事務(wù)處理方法還包括:在待處理事務(wù)回滾成功時(shí),將待處理事務(wù)的事務(wù)狀態(tài)更新為回滾。
[0074]若在回滾請(qǐng)求執(zhí)行前,已經(jīng)執(zhí)行了該事務(wù)的預(yù)處理請(qǐng)求或執(zhí)行預(yù)處理請(qǐng)求異常, 在事務(wù)信息總表內(nèi)已經(jīng)存有該待處理事務(wù)的事務(wù)信息,且存于事務(wù)信息總表內(nèi)的待處理事務(wù)的事務(wù)信息的事務(wù)狀態(tài)為正常,則在回滾完成后,將該事務(wù)狀態(tài)由正常改為回滾。
[0075]若在回滾請(qǐng)求執(zhí)行前,該事務(wù)的預(yù)處理請(qǐng)求未執(zhí)行,則將回滾請(qǐng)求時(shí)所生成的事務(wù)信息的事務(wù)狀態(tài)直接更新為回滾。
[0076]圖4為本申請(qǐng)實(shí)施例提供的事務(wù)處理裝置的機(jī)構(gòu)示意圖,本申請(qǐng)實(shí)施例所提供的事務(wù)處理裝置基于以上事務(wù)處理方法,故該裝置的具體細(xì)節(jié)可參照以上處理方法,本文不再予以贅述。該事務(wù)處理裝置包括:
[0077]獲取模塊10,用于獲取待處理事務(wù)的第一請(qǐng)求。
[0078]判斷模塊20,用于判斷待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件。
[0079]執(zhí)行模塊30,若第二請(qǐng)求符合預(yù)設(shè)條件,用于結(jié)束第一請(qǐng)求,若第二請(qǐng)求不符合預(yù)設(shè)條件,用于執(zhí)行第一請(qǐng)求。
[0080]本申請(qǐng)實(shí)施例中,第一請(qǐng)求是預(yù)處理請(qǐng)求,第二請(qǐng)求是回滾請(qǐng)求;預(yù)設(shè)條件為:回滾請(qǐng)求在處理中或已經(jīng)處理完。[0081 ] 本申請(qǐng)實(shí)施例中,判斷模塊20具體包括:
[0082]信息生成單元,生成待處理事務(wù)的事務(wù)信息,事務(wù)信息包括事務(wù)標(biāo)識(shí)和事務(wù)狀態(tài)。
[0083]標(biāo)識(shí)判斷單元,用于判斷事務(wù)信息總表內(nèi)是否存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息。
[0084]狀態(tài)判斷單元,若存在事務(wù)標(biāo)識(shí)相同的事務(wù)信息,用于判斷存于事務(wù)信息總表內(nèi)的事務(wù)信息的事務(wù)狀態(tài)是否為回滾,若事務(wù)狀態(tài)是回滾,判定第二請(qǐng)求在處理中或已經(jīng)處理完。
[0085]本申請(qǐng)實(shí)施例中,標(biāo)識(shí)判斷單元具體用于:
[0086]將待處理事務(wù)的事務(wù)信息插入事務(wù)信息總表。
[0087]判斷是否有事務(wù)標(biāo)識(shí)重復(fù)異常,若否,判定存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息。
[0088]本申請(qǐng)實(shí)施例中,事務(wù)處理裝置還包括:
[0089]信息刪除模塊,用于在待處理事務(wù)提交成功時(shí),刪除該待處理事務(wù)的事務(wù)信息。
[0090]本申請(qǐng)實(shí)施例中,第一請(qǐng)求是回滾請(qǐng)求,第二請(qǐng)求是預(yù)處理請(qǐng)求;預(yù)設(shè)條件為:第二請(qǐng)求在處理中。[0091 ] 本申請(qǐng)實(shí)施例中,判斷模塊20具體包括:
[0092]信息生成單元,用于生成待處理事務(wù)的事務(wù)信息,事務(wù)信息包括事務(wù)標(biāo)識(shí)和事務(wù)狀態(tài)。
[0093]標(biāo)識(shí)判斷單元,用于判斷事務(wù)信息總表內(nèi)是否存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息。
[0094]插入判斷單元,若不存在事務(wù)標(biāo)識(shí)相同的事務(wù)信息,用于判斷是否能夠?qū)⒋幚硎聞?wù)的事務(wù)信息插入至事務(wù)信息總表,若事務(wù)信息插入失敗,判定第二請(qǐng)求在處理中。
[0095]本申請(qǐng)實(shí)施例中,插入判斷單元具體用于:
[0096]將待處理事務(wù)的事務(wù)信息插入事務(wù)信息總表。
[0097]判斷是否有事務(wù)標(biāo)識(shí)重復(fù)異常,若否,判定存在與待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù)信息。
[0098]本申請(qǐng)實(shí)施例中,事務(wù)處理裝置還包括:
[0099]回滾更新模塊,用于在待處理事務(wù)回滾成功時(shí),將待處理事務(wù)的事務(wù)狀態(tài)更新為回滾。
[0100]本申請(qǐng)實(shí)施例中,事務(wù)處理裝置還包括響應(yīng)發(fā)送模塊,用于發(fā)送第一請(qǐng)求失敗響應(yīng)。
[0101]本申請(qǐng)實(shí)施例所提供的事務(wù)處理裝置,根據(jù)第二請(qǐng)求是否符合預(yù)設(shè)條件來決定是否結(jié)束剛獲取到的第一請(qǐng)求,無論第一請(qǐng)求是預(yù)處理請(qǐng)求還是回滾請(qǐng)求,均能實(shí)現(xiàn)回滾請(qǐng)求被執(zhí)行后預(yù)處理請(qǐng)求不會(huì)被執(zhí)行,預(yù)處理請(qǐng)求被執(zhí)行后回滾請(qǐng)求才會(huì)執(zhí)行;避免預(yù)處理請(qǐng)求在回滾請(qǐng)求后完成來破壞事務(wù)的一致性,保證了數(shù)據(jù)庫(kù)內(nèi)關(guān)于該事務(wù)的數(shù)據(jù)的正確性。
[0102]需要說明的是,本申請(qǐng)的實(shí)施例所提供事務(wù)處理方法的各步驟的執(zhí)行主體均可以是同一設(shè)備,或者,該方法也由不同設(shè)備作為執(zhí)行主體。比如,步驟21和步驟22的執(zhí)行主體可以為設(shè)備1,步驟23的執(zhí)行主體可以為設(shè)備2 ;又比如,步驟21的執(zhí)行主體可以為設(shè)備 1,步驟22和步驟23的執(zhí)行主體可以為設(shè)備2。
[0103]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0104]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(裝置)、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程事務(wù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程事務(wù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0105]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程事務(wù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0106]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程事務(wù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0107]在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、 網(wǎng)絡(luò)接口和內(nèi)存。
[0108]內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/ 或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
[0109]計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、事務(wù)結(jié)構(gòu)、程序的模塊或其他事務(wù)。 計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、 動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPR0M)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器 (CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的事務(wù)信號(hào)和載波。
[0110]還需要說明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
[0111]本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、裝置或計(jì)算機(jī)程序產(chǎn)品。 因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0112]以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種事務(wù)處理方法,其特征在于,包括:獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求是預(yù)處理請(qǐng)求;判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求是回滾請(qǐng)求;若是,結(jié)束所述第一請(qǐng)求;若否,執(zhí)行所述第一請(qǐng)求。2.如權(quán)利要求1所述的事務(wù)處理方法,其特征在于,所述預(yù)設(shè)條件為:所述第二請(qǐng)求在 處理中或已經(jīng)處理完。3.如權(quán)利要求2所述的事務(wù)處理方法,其特征在于,判斷所述待處理事務(wù)的第二請(qǐng)求 是否符合預(yù)設(shè)條件,具體包括:生成待處理事務(wù)的事務(wù)彳目息,所述事務(wù)彳目息包括事務(wù)標(biāo)識(shí)和事務(wù)狀態(tài);判斷已記載事務(wù)信息的事務(wù)信息總表內(nèi)是否存在與所述待處理事務(wù)的事務(wù)標(biāo)識(shí)相同 的事務(wù)信息;若存在事務(wù)標(biāo)識(shí)相同的事務(wù)信息,判斷存于所述事務(wù)信息總表內(nèi)的所述事務(wù)信息的事 務(wù)狀態(tài)是否為回滾;若所述事務(wù)狀態(tài)是回滾,判定所述第二請(qǐng)求在處理中或已經(jīng)處理完。4.如權(quán)利要求3所述的事務(wù)處理方法,其特征在于,判斷是否存在與所述待處理事務(wù) 的事務(wù)標(biāo)識(shí)相同的事務(wù)彳目息,具體包括:將所述待處理事務(wù)的事務(wù)信息插入所述事務(wù)信息總表;判斷是否有事務(wù)標(biāo)識(shí)重復(fù),若是,判定存在與所述待處理事務(wù)的事務(wù)標(biāo)識(shí)相同的事務(wù) fg息。5.如權(quán)利要求3所述的事務(wù)處理方法,其特征在于,事務(wù)處理方法還包括:在待處理事務(wù)提交成功時(shí),刪除該待處理事務(wù)的事務(wù)彳目息。6.如權(quán)利要求1所述的事務(wù)處理方法,其特征在于,在結(jié)束所述第一請(qǐng)求之后還包括 如下步驟:發(fā)送第一請(qǐng)求的失敗響應(yīng)。7.—種事務(wù)處理方法,其特征在于,包括:獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求是回滾請(qǐng)求;判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求是預(yù)處理請(qǐng)求;若是,結(jié)束所述第一請(qǐng)求;若否,執(zhí)行所述第一請(qǐng)求。8.如權(quán)利要求7所述的事務(wù)處理方法,其特征在于,所述預(yù)設(shè)條件為:所述第二請(qǐng)求在 處理中。9.如權(quán)利要求8所述的事務(wù)處理方法,其特征在于,判斷所述待處理事務(wù)的第二請(qǐng)求 是否符合預(yù)設(shè)條件,具體包括:生成待處理事務(wù)的事務(wù)彳目息,所述事務(wù)彳目息包括事務(wù)標(biāo)識(shí)和事務(wù)狀態(tài);判斷已記載事務(wù)信息的事務(wù)信息總表內(nèi)是否存在與所述待處理事務(wù)的事務(wù)標(biāo)識(shí)相同 的事務(wù)信息;若不存在事務(wù)標(biāo)識(shí)相同的事務(wù)信息,判斷是否能夠?qū)⒋幚硎聞?wù)的事務(wù)信息插入至事 務(wù)信息總表;若所述事務(wù)信息插入失敗,判定所述第二請(qǐng)求在處理中。10.如權(quán)利要求9所述的事務(wù)處理方法,其特征在于,判斷是否能夠?qū)⒋幚硎聞?wù)的事務(wù)信息插入至事務(wù)信息總表,具體包括:將所述待處理事務(wù)的事務(wù)信息插入所述事務(wù)信息總表;判斷是否有事務(wù)標(biāo)識(shí)重復(fù),若是,判定所述事務(wù)彳目息插入失敗。11.如權(quán)利要求9所述的事務(wù)處理方法,其特征在于,事務(wù)處理方法還包括:在待處理事務(wù)回滾成功時(shí),將待處理事務(wù)的事務(wù)狀態(tài)更新為回滾。12.如權(quán)利要求7所述的事務(wù)處理方法,其特征在于,在結(jié)束所述第一請(qǐng)求之后還包括 如下步驟:發(fā)送第一請(qǐng)求的失敗響應(yīng)。13.—種事務(wù)處理裝置,其特征在于,包括:獲取模塊,用于獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求是預(yù)處理請(qǐng)求;判斷模塊,用于判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求是 回滾請(qǐng)求;執(zhí)行模塊,若所述第二請(qǐng)求符合預(yù)設(shè)條件,用于結(jié)束所述第一請(qǐng)求,若所述第二請(qǐng)求不 符合預(yù)設(shè)條件,用于執(zhí)行所述第一請(qǐng)求。14.如權(quán)利要求13所述的事務(wù)處理裝置,其特征在于所述預(yù)設(shè)條件為:所述回滾請(qǐng)求 在處理中或已處理完。15.—種事務(wù)處理裝置,其特征在于,包括:獲取模塊,用于獲取待處理事務(wù)的第一請(qǐng)求,所述第一請(qǐng)求是回滾請(qǐng)求;判斷模塊,用于判斷所述待處理事務(wù)的第二請(qǐng)求是否符合預(yù)設(shè)條件,所述第二請(qǐng)求是 預(yù)處理請(qǐng)求;執(zhí)行模塊,若所述第二請(qǐng)求符合預(yù)設(shè)條件,用于結(jié)束所述第一請(qǐng)求,若所述第二請(qǐng)求不 符合預(yù)設(shè)條件,用于執(zhí)行所述第一請(qǐng)求。16.如權(quán)利要求15所述的事務(wù)處理裝置,其特征在于,所述預(yù)設(shè)條件為:第二請(qǐng)求在處理中。
【文檔編號(hào)】G06F17/30GK105989133SQ201510087926
【公開日】2016年10月5日
【申請(qǐng)日】2015年2月25日
【發(fā)明人】胡紅梅
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司