一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法及裝置制造方法
【專利摘要】本發(fā)明實(shí)施例公開了一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法及裝置,一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法,包括以下步驟:依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn);監(jiān)聽所確定的前置事務(wù)是否啟動;在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息;根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。應(yīng)用本發(fā)明實(shí)施例所提供的技術(shù)方案,保證了不能納入同一個(gè)事務(wù)但需有序進(jìn)行處理的數(shù)據(jù)操作的數(shù)據(jù)的一致性。
【專利說明】
一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法及裝置。
【背景技術(shù)】
[0002]在計(jì)算機(jī)系統(tǒng)中,為保證各應(yīng)用環(huán)節(jié)所使用的數(shù)據(jù)的一致性,通用的方法是,將多個(gè)數(shù)據(jù)操作進(jìn)行捆綁,納入同一個(gè)事務(wù)并執(zhí)行。一個(gè)事務(wù)就是一個(gè)不可分割的工作單位,事務(wù)中所包含的數(shù)據(jù)操作要么都做要么都不做,這樣可以保證事務(wù)外的數(shù)據(jù)使用方不會獲得該事務(wù)在數(shù)據(jù)處理變化過程中產(chǎn)生的錯(cuò)誤數(shù)據(jù)。
[0003]但在實(shí)際應(yīng)用中,有的場景并不適合將所有的數(shù)據(jù)操作都納入同一個(gè)事務(wù)進(jìn)行處理。比如,在某場景中,前置數(shù)據(jù)操作和后序數(shù)據(jù)操作需要有序進(jìn)行,即后序數(shù)據(jù)操作需能夠得到前置數(shù)據(jù)操作的處理結(jié)果,但不依賴于前置數(shù)據(jù)操作的成功。如果將后序數(shù)據(jù)操作和前置數(shù)據(jù)操作納入同一個(gè)事務(wù),由于事務(wù)的捆綁特性,會導(dǎo)致前置數(shù)據(jù)操作和后序數(shù)據(jù)操作要么都成功執(zhí)行,要么都執(zhí)行失敗,與預(yù)期不符,所以不能將二者納入同一個(gè)事務(wù)進(jìn)行處理。另外,當(dāng)前置數(shù)據(jù)操作和后序數(shù)據(jù)操作存在跨地域、跨系統(tǒng)等分布式場景時(shí),大部分情況下也不能將二者納入同一個(gè)事務(wù)進(jìn)行處理。
[0004]目前對于跨事務(wù)的數(shù)據(jù)操作,尤其是對于不能納入同一個(gè)事務(wù)但需有序進(jìn)行處理的數(shù)據(jù)操作,在保證數(shù)據(jù)一致性方面還沒有比較有效的方法。
【發(fā)明內(nèi)容】
[0005]為解決上述問題,本發(fā)明實(shí)施例公開了一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法及裝置。技術(shù)方案如下:
[0006]一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法,包括:
[0007]依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息;
[0008]監(jiān)聽所確定的前置事務(wù)是否啟動;
[0009]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0010]在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息;
[0011]根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0012]在本發(fā)明的一種【具體實(shí)施方式】中,所述監(jiān)聽所確定的前置事務(wù)是否啟動,包括:
[0013]監(jiān)測所確定的前置事務(wù)是否啟動;
[0014]或者,
[0015]監(jiān)聽是否接收到所確定的前置事務(wù)的啟動的通知消息,如果監(jiān)聽到,則表明所確定的前置事務(wù)已啟動。
[0016]在本發(fā)明的一種【具體實(shí)施方式】中,所述在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn),包括:
[0017]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0018]或者,
[0019]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已達(dá)到相應(yīng)的切入點(diǎn)。
[0020]在本發(fā)明的一種【具體實(shí)施方式】中,所述根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動,包括:
[0021]根據(jù)所確定的事件的標(biāo)識,獲得執(zhí)行該事件所需的參數(shù)定義;
[0022]根據(jù)獲得的執(zhí)行該事件所需的參數(shù)定義,為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值,以執(zhí)行該事件,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0023]在本發(fā)明的一種【具體實(shí)施方式】中,所述前置事務(wù)的切入點(diǎn)至少包括所述前置事務(wù)提交開始時(shí)或者所述前置事務(wù)提交完成時(shí)。
[0024]一種基于事件機(jī)制的數(shù)據(jù)一致性控制裝置,包括:
[0025]第一確定單元,用于依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息;
[0026]第一監(jiān)聽單元,用于監(jiān)聽所述第一確定單元所確定的前置事務(wù)是否啟動;
[0027]第二監(jiān)聽單元,用于在所述第一監(jiān)聽單元監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0028]第二確定單元,用于在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息;
[0029]事件執(zhí)行單元,用于根據(jù)所述第二確定單元確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0030]在本發(fā)明的一種【具體實(shí)施方式】中,所述第一監(jiān)聽單元具體用于:
[0031]監(jiān)測所確定的前置事務(wù)是否啟動;
[0032]或者,
[0033]監(jiān)聽是否接收到所確定的前置事務(wù)的啟動的通知消息,如果監(jiān)聽到,則表明所確定的前置事務(wù)已啟動。
[0034]在本發(fā)明的一種【具體實(shí)施方式】中,所述第二監(jiān)聽單元具體用于:
[0035]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0036]或者,
[0037]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已達(dá)到相應(yīng)的切入點(diǎn)。
[0038]在本發(fā)明的一種【具體實(shí)施方式】中,所述事件執(zhí)行單元,包括:
[0039]參數(shù)定義獲得子單元,用于根據(jù)所述第二確定單元所確定的事件的標(biāo)識,獲得執(zhí)行該事件所需的參數(shù)定義;
[0040]參數(shù)信息賦值子單元,用于根據(jù)參數(shù)定義獲得子單元獲得的執(zhí)行該事件所需的參數(shù)定義,為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值,以執(zhí)行該事件,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0041]在本發(fā)明的一種【具體實(shí)施方式】中,所述前置事務(wù)的切入點(diǎn)至少包括所述前置事務(wù)提交開始時(shí)或者所述前置事務(wù)提交完成時(shí)。
[0042]本發(fā)明實(shí)施例所提供的技術(shù)方案,依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),當(dāng)監(jiān)聽到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)時(shí),執(zhí)行在該切入點(diǎn)注冊的事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。應(yīng)用本發(fā)明實(shí)施例所提供的技術(shù)方案,在進(jìn)行事件注冊時(shí),根據(jù)實(shí)際需求,將事件注冊在前置事務(wù)的不同切入點(diǎn),在相應(yīng)的切入點(diǎn)執(zhí)行各事件以觸發(fā)各事件對應(yīng)的后序事務(wù)的啟動,從而保證了不能納入同一個(gè)事務(wù)但需有序進(jìn)行處理的數(shù)據(jù)操作的數(shù)據(jù)的一致性。
【專利附圖】
【附圖說明】
[0043]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0044]圖1為本發(fā)明實(shí)施例中基于事件機(jī)制的數(shù)據(jù)一致性控制方法的一種實(shí)施流程圖;
[0045]圖2為本發(fā)明實(shí)施例中基于事件機(jī)制的數(shù)據(jù)一致性控制方法的另一種實(shí)施流程圖;
[0046]圖3為本發(fā)明實(shí)施例中基于事件機(jī)制的數(shù)據(jù)一致性控制裝置的一種結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0047]首先對本發(fā)明實(shí)施例所提供的一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法進(jìn)行說明,該方法可以包括以下步驟:
[0048]依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息;
[0049]監(jiān)聽所確定的前置事務(wù)是否啟動;
[0050]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0051]在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息;
[0052]根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0053]前置事務(wù)和后序事務(wù)是相對而言,在某一事務(wù)中進(jìn)行事件注冊,可以將該事務(wù)稱之為前置事務(wù),將該事件對應(yīng)的待啟動的事務(wù)稱之為后序事務(wù)??梢岳斫獾氖?,前置事務(wù)和后序事務(wù)可以是各自模塊內(nèi)的數(shù)據(jù)庫事務(wù),還可以是一個(gè)模塊內(nèi)的不同的數(shù)據(jù)庫事務(wù)。這里所說的模塊可以是線程、進(jìn)程、網(wǎng)絡(luò)socket、或者業(yè)務(wù)模塊等。
[0054]如下例中,后序事務(wù)的啟動通過在前置事務(wù)中注冊的事件實(shí)現(xiàn):
[0055]〈前置事務(wù)啟動〉
[0056]數(shù)據(jù)操作I
[0057]數(shù)據(jù)操作2
[0058]......
[0059]事件注冊
[0060]......
[0061]數(shù)據(jù)操作η
[0062]<前置事務(wù)提交>
[0063]本發(fā)明實(shí)施例所提供的技術(shù)方案,依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),當(dāng)監(jiān)聽到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)時(shí),執(zhí)行在該切入點(diǎn)注冊的事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。應(yīng)用本發(fā)明實(shí)施例所提供的技術(shù)方案,在進(jìn)行事件注冊時(shí),根據(jù)實(shí)際需求,將事件注冊在前置事務(wù)的不同切入點(diǎn),在相應(yīng)的切入點(diǎn)執(zhí)行各事件以觸發(fā)各事件對應(yīng)的后序事務(wù)的啟動,從而保證了不能納入同一個(gè)事務(wù)但需有序進(jìn)行處理的數(shù)據(jù)操作的數(shù)據(jù)的一致性。
[0064]為了使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0065]如圖1所示,為本發(fā)明實(shí)施例提供的一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法的實(shí)施流程圖,該方法可以包括以下步驟:
[0066]S110,依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn);
[0067]在實(shí)際應(yīng)用中,需預(yù)先在前置事務(wù)中進(jìn)行事件注冊,每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息。
[0068]為便于理解,將每個(gè)事件的注冊信息中所包含的內(nèi)容做進(jìn)一步詳細(xì)說明。
[0069]該事件的標(biāo)識:即該事件的注冊標(biāo)識,可以保證該事件的唯一性,也是觸發(fā)該事件執(zhí)行的依據(jù);
[0070]該事件所屬的前置事務(wù)的標(biāo)識:即將該事件注冊在了哪一個(gè)前置事務(wù)中;
[0071]執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn):即在前置事務(wù)的哪一個(gè)切入點(diǎn)執(zhí)行該事件;
[0072]執(zhí)行該事件所需的參數(shù)信息:即執(zhí)行該事件需要對其所需的參數(shù)賦予何值。
[0073]事件的觸發(fā)執(zhí)行取決于具體數(shù)據(jù)存儲的底層框架支持,任何支持事務(wù)的數(shù)據(jù)存儲方式至少存在兩個(gè)觸發(fā)切入點(diǎn),分別是:事務(wù)提交開始時(shí)和事務(wù)提交完成時(shí)。事務(wù)提交開始時(shí)是指所有數(shù)據(jù)操作正常,開始通過數(shù)據(jù)存儲支持進(jìn)行數(shù)據(jù)持久化;事務(wù)提交完成時(shí)是指所有數(shù)據(jù)變動完成持久化,其他使用方已經(jīng)可以對其進(jìn)行數(shù)據(jù)操作。為滿足各種情況下的控制需求,事件的觸發(fā)執(zhí)行可以支持以下方式:
[0074]第一種方式:立即同步執(zhí)行事件;
[0075]第二種方式:立即異步執(zhí)行事件;
[0076]第三種方式:事件所在事務(wù)提交開始時(shí)同步執(zhí)行該事件;
[0077]第四種方式:事件所在事務(wù)提交開始時(shí)異步執(zhí)行該事件;
[0078]第五種方式:事件所在事務(wù)提交結(jié)束時(shí)同步執(zhí)行該事件;
[0079]第六種方式:事件所在事務(wù)提交結(jié)束時(shí)異步執(zhí)行該事件。
[0080]在前置事務(wù)中,預(yù)先進(jìn)行事件注冊時(shí),對所注冊的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)進(jìn)行定義,這些事件的注冊信息和事件定義由事件管理器進(jìn)行管理和支持。事件管理器依據(jù)注冊信息中的該事件所屬的前置事務(wù)的標(biāo)識和執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn),可以確定哪些前置事務(wù)和其切入點(diǎn)為待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn)。
[0081]如例1,對于某一已注冊的事件,以A、B、C、D分別表示該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)、執(zhí)行該事件所需的參數(shù)信息,那么對于已注冊的事件X、事件Y、事件Z的注冊信息可以分別為:
[0082]事件X的注冊信息[Ax,Bx, Cx, Dx];
[0083]事件Y的注冊信息[AY,Bx, CY, Dy];
[0084]事件Z的注冊信息[Az,Bz, Cz, Dz]。
[0085]從上述注冊信息可以得知,事件X和事件Y都是注冊在前置事務(wù)Bx中的事件,切入點(diǎn)Cx和Cy分別為執(zhí)行事件X和事件Y對應(yīng)的前置事務(wù)Bx的切入點(diǎn),事件Z是注冊在前置事務(wù)Bz中的事件,切入點(diǎn)Cz為執(zhí)行事件Z對應(yīng)的前置事務(wù)Bz的切入點(diǎn)。依據(jù)上述注冊信息,可以將前置事務(wù)Bx和前置事務(wù)Bz確定為待監(jiān)聽的前置事務(wù),相應(yīng)的,前置事務(wù)Bx的切入點(diǎn)為Cx和CY,前置事務(wù)Bz的切入點(diǎn)為Cz。
[0086]S120,監(jiān)聽所確定的前置事務(wù)是否啟動;
[0087]步驟SllO確定待監(jiān)聽的前置事務(wù)后,對所確定的前置事務(wù)進(jìn)行監(jiān)聽,監(jiān)聽其是否啟動。
[0088]在本發(fā)明的一種【具體實(shí)施方式】中,監(jiān)聽所確定的前置事務(wù)是否啟動的方法可以是,監(jiān)測所確定的前置事務(wù)是否啟動,即由事件管理器采取主動監(jiān)測的方式,監(jiān)測所確定的前置事務(wù)是否啟動。
[0089]在本發(fā)明的另一種【具體實(shí)施方式】中,監(jiān)聽所確定的前置事務(wù)是否啟動的方法還可以是,監(jiān)聽是否接收到所確定的前置事務(wù)啟動的通知消息,如果監(jiān)聽到,則表明所確定的前置事務(wù)已啟動。
[0090]在這種實(shí)施方式中,可以對前置事務(wù)進(jìn)行設(shè)定,當(dāng)前置事務(wù)啟動時(shí),向事件管理器發(fā)送通知消息,由事件管理器監(jiān)聽所接收到的通知消息,判斷其是否是所確定的前置事務(wù)啟動的通知消息,如果是,則表明所確定的前置事務(wù)已經(jīng)啟動。
[0091]S130,在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0092]在實(shí)際應(yīng)用中,可以將多個(gè)事件注冊在同一個(gè)前置事務(wù)中,執(zhí)行每個(gè)事件對應(yīng)相同或不同的該前置事務(wù)的切入點(diǎn)。在步驟S120監(jiān)聽到所確定的前置事務(wù)啟動后,繼續(xù)監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn)。如例I中,事件X和事件Y都注冊在前置事務(wù)Bx中,其對應(yīng)的前置事務(wù)BX的切入點(diǎn)分別為Cx和CY。當(dāng)監(jiān)聽到前置事務(wù)Bx啟動后,繼續(xù)監(jiān)聽當(dāng)前啟動的前置事務(wù)Bx是否達(dá)到切入點(diǎn)Cx或CY。
[0093]在本發(fā)明的一種【具體實(shí)施方式】中,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn)的方法可以是,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn),即由事件管理器采取主動監(jiān)測的方式,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn)。
[0094]在本發(fā)明的另一種【具體實(shí)施方式】中,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn)的方法還可以是,監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已達(dá)到相應(yīng)的切入點(diǎn)。
[0095]在這種實(shí)施方式中,可以對前置事務(wù)進(jìn)行設(shè)定,當(dāng)前置事務(wù)啟動并達(dá)到其對應(yīng)的切入點(diǎn)時(shí),向事件管理器發(fā)送通知消息,事件管理器監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已經(jīng)達(dá)到相應(yīng)的切入點(diǎn)。
[0096]S140,在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息;
[0097]在步驟S130監(jiān)聽到已達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)的情況下,通過該前置事務(wù)的切入點(diǎn),可以確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息??梢岳斫獾氖牵陬A(yù)先注冊的事件的注冊信息中至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息??梢詫?dāng)前啟動的前置事務(wù)的切入點(diǎn)與注冊信息中的該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)進(jìn)行匹配,則可以獲得相應(yīng)的事件的注冊信息,從而在獲得的注冊信息中確定該事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息。
[0098]如前面所例舉的例I中,如果監(jiān)聽到前置事務(wù)Bx已啟動,并達(dá)到其切入點(diǎn)Cx時(shí),通過該信息可以獲得相對應(yīng)的事件X的注冊信息,從事件X的注冊信息中可以確定與當(dāng)前啟動的前置事務(wù)Bx的切入點(diǎn)Cx對應(yīng)的事件X的標(biāo)識為Ax,執(zhí)行該事件X所需的參數(shù)信息為Dxo同樣,當(dāng)達(dá)到當(dāng)前啟動的前置事務(wù)Bx的切入點(diǎn)Cy時(shí),通過BX、CY信息可以獲得相對應(yīng)的事件Y的注冊信息,從事件Y的注冊信息中可以確定與當(dāng)前啟動的前置事務(wù)Bx的切入點(diǎn)Cy對應(yīng)的事件Y的標(biāo)識為Αγ,執(zhí)行該事件Y所需的參數(shù)信息為DY。
[0099]S150,根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0100]在步驟S140確定了與當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,即該事件為注冊在當(dāng)前啟動的前置事務(wù)的切入點(diǎn)的事件,執(zhí)行該事件,從而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。也就是說,后序事務(wù)的啟動,進(jìn)行的數(shù)據(jù)操作取決于事件注冊時(shí)的切入點(diǎn)。如果將事件注冊的切入點(diǎn)設(shè)為事務(wù)提交完成時(shí),則可以消除前置事務(wù)提交和后序事務(wù)執(zhí)行之間的時(shí)間差,從而確保有序獨(dú)立事務(wù)執(zhí)行時(shí)的數(shù)據(jù)一致性。
[0101]參見圖2所示,在本發(fā)明的一個(gè)實(shí)施例中,步驟S150根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動,具體可以包括以下步驟:
[0102]S151,根據(jù)所確定的事件的標(biāo)識,獲得執(zhí)行該事件所需的參數(shù)定義;
[0103]如前所述,在前置事務(wù)中,預(yù)先進(jìn)行事件注冊時(shí),對所注冊的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)進(jìn)行定義,這些事件的注冊信息和事件定義由事件管理器進(jìn)行管理和支持。事件管理器根據(jù)步驟S140所確定的事件的標(biāo)識,通過查詢方式獲得相應(yīng)的執(zhí)行該事件所需的參數(shù)定義,即事件正確執(zhí)行所需要的初始化數(shù)據(jù)定義。
[0104]S152,根據(jù)獲得的執(zhí)行該事件所需的參數(shù)定義,為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值,以執(zhí)行該事件,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0105]在前置事務(wù)中進(jìn)行事件注冊時(shí),程序運(yùn)行上下文處于前置事務(wù)中,可以獲得前置事務(wù)的句柄和底層信息。在步驟S151獲得執(zhí)行該事件所需的參數(shù)定義后,根據(jù)該參數(shù)定義,通過實(shí)例化句柄和為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值以完成事件的執(zhí)行,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0106]本發(fā)明實(shí)施例所提供的技術(shù)方案,依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),當(dāng)監(jiān)聽到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)時(shí),執(zhí)行在該切入點(diǎn)注冊的事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。應(yīng)用本發(fā)明實(shí)施例所提供的技術(shù)方案,在進(jìn)行事件注冊時(shí),根據(jù)實(shí)際需求,將事件注冊在前置事務(wù)的不同切入點(diǎn),在相應(yīng)的切入點(diǎn)執(zhí)行各事件以觸發(fā)各事件對應(yīng)的后序事務(wù)的啟動,從而保證了不能納入同一個(gè)事務(wù)但需有序進(jìn)行處理的數(shù)據(jù)操作的數(shù)據(jù)的一致性。
[0107]相應(yīng)于上面的方法實(shí)施例,本發(fā)明還提供一種基于事件機(jī)制的數(shù)據(jù)一致性控制裝置,如圖3所示,該裝置可以包括:
[0108]第一確定單元210,用于依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息;
[0109]第一監(jiān)聽單元220,用于監(jiān)聽所述第一確定單元210所確定的前置事務(wù)是否啟動;
[0110]第二監(jiān)聽單元230,用于在所述第一監(jiān)聽單元220監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0111]第二確定單元240,用于在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息;
[0112]事件執(zhí)行單元250,用于根據(jù)所述第二確定單元240確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0113]在本發(fā)明的一種【具體實(shí)施方式】中,所述第一監(jiān)聽單元220具體用于:
[0114]監(jiān)測所確定的前置事務(wù)是否啟動;
[0115]或者,
[0116]監(jiān)聽是否接收到所確定的前置事務(wù)的啟動的通知消息,如果監(jiān)聽到,則表明所確定的前置事務(wù)已啟動。
[0117]在本發(fā)明的一種【具體實(shí)施方式】中,所述第二監(jiān)聽單元220具體用于:
[0118]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn);
[0119]或者,
[0120]在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已達(dá)到相應(yīng)的切入點(diǎn)。
[0121]在本發(fā)明的一種【具體實(shí)施方式】中,所述事件執(zhí)行單元250,包括:
[0122]參數(shù)定義獲得子單元,用于根據(jù)所述第二確定單元240所確定的事件的標(biāo)識,獲得執(zhí)行該事件所需的參數(shù)定義;
[0123]參數(shù)信息賦值子單元,用于根據(jù)參數(shù)定義獲得子單元獲得的執(zhí)行該事件所需的參數(shù)定義,為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值,以執(zhí)行該事件,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
[0124]在本發(fā)明的一種【具體實(shí)施方式】中,所述前置事務(wù)的切入點(diǎn)至少包括所述前置事務(wù)提交開始時(shí)或者所述前置事務(wù)提交完成時(shí)。
[0125]本發(fā)明實(shí)施例所提供的裝置,依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),當(dāng)監(jiān)聽到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)時(shí),執(zhí)行在該切入點(diǎn)注冊的事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。應(yīng)用本發(fā)明實(shí)施例所提供的裝置,在進(jìn)行事件注冊時(shí),根據(jù)實(shí)際需求,將事件注冊在前置事務(wù)的不同切入點(diǎn),在相應(yīng)的切入點(diǎn)執(zhí)行各事件以觸發(fā)各事件對應(yīng)的后序事務(wù)的啟動,從而保證了不能納入同一個(gè)事務(wù)但需有序進(jìn)行處理的數(shù)據(jù)操作的數(shù)據(jù)的一致性。
[0126]需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0127]本說明書中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
[0128]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計(jì)算機(jī)可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:R0M/RAM、磁碟、光盤等。
[0129]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種基于事件機(jī)制的數(shù)據(jù)一致性控制方法,其特征在于,包括: 依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息; 監(jiān)聽所確定的前置事務(wù)是否啟動; 在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入占.在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息; 根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述監(jiān)聽所確定的前置事務(wù)是否啟動,包括: 監(jiān)測所確定的前置事務(wù)是否啟動; 或者, 監(jiān)聽是否接收到所確定的前置事務(wù)的啟動的通知消息,如果監(jiān)聽到,則表明所確定的前置事務(wù)已啟動。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn),包括: 在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入占.或者, 在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已達(dá)到相應(yīng)的切入點(diǎn)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動,包括: 根據(jù)所確定的事件的標(biāo)識,獲得執(zhí)行該事件所需的參數(shù)定義; 根據(jù)獲得的執(zhí)行該事件所需的參數(shù)定義,為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值,以執(zhí)行該事件,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,所述前置事務(wù)的切入點(diǎn)至少包括所述前置事務(wù)提交開始時(shí)或者所述前置事務(wù)提交完成時(shí)。
6.一種基于事件機(jī)制的數(shù)據(jù)一致性控制裝置,其特征在于,包括: 第一確定單元,用于依據(jù)預(yù)先注冊的事件的注冊信息,確定待監(jiān)聽的前置事務(wù)和該前置事務(wù)的切入點(diǎn),每個(gè)事件對應(yīng)一個(gè)待啟動的后序事務(wù),每個(gè)事件的注冊信息至少包含該事件的標(biāo)識、該事件所屬的前置事務(wù)的標(biāo)識、執(zhí)行該事件對應(yīng)的前置事務(wù)的切入點(diǎn)和執(zhí)行該事件所需的參數(shù)信息; 第一監(jiān)聽單元,用于監(jiān)聽所述第一確定單元所確定的前置事務(wù)是否啟動; 第二監(jiān)聽單元,用于在所述第一監(jiān)聽單元監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入點(diǎn); 第二確定單元,用于在達(dá)到當(dāng)前啟動的前置事務(wù)的切入點(diǎn)時(shí),確定與該當(dāng)前啟動的前置事務(wù)的切入點(diǎn)對應(yīng)的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息; 事件執(zhí)行單元,用于根據(jù)所述第二確定單元確定的事件的標(biāo)識和執(zhí)行該事件所需的參數(shù)信息,執(zhí)行該事件,以觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一監(jiān)聽單元具體用于: 監(jiān)測所確定的前置事務(wù)是否啟動; 或者, 監(jiān)聽是否接收到所確定的前置事務(wù)的啟動的通知消息,如果監(jiān)聽到,則表明所確定的前置事務(wù)已啟動。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二監(jiān)聽單元具體用于: 在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)測當(dāng)前啟動的前置事務(wù)是否達(dá)到相應(yīng)的切入占.或者, 在監(jiān)聽到所確定的前置事務(wù)啟動后,監(jiān)聽是否接收到當(dāng)前啟動的前置事務(wù)達(dá)到相應(yīng)的切入點(diǎn)的通知消息,如果監(jiān)聽到,則表明當(dāng)前啟動的前置事務(wù)已達(dá)到相應(yīng)的切入點(diǎn)。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述事件執(zhí)行單元,包括: 參數(shù)定義獲得子單元,用于根據(jù)所述第二確定單元所確定的事件的標(biāo)識,獲得執(zhí)行該事件所需的參數(shù)定義; 參數(shù)信息賦值子單元,用于根據(jù)參數(shù)定義獲得子單元獲得的執(zhí)行該事件所需的參數(shù)定義,為該事件的注冊信息中的執(zhí)行該事件所需的參數(shù)賦值,以執(zhí)行該事件,進(jìn)而觸發(fā)該事件對應(yīng)的后序事務(wù)的啟動。
10.根據(jù)權(quán)利要求6至9任一項(xiàng)所述的裝置,其特征在于,所述前置事務(wù)的切入點(diǎn)至少包括所述前置事務(wù)提交開始時(shí)或者所述前置事務(wù)提交完成時(shí)。
【文檔編號】G06F9/52GK104239145SQ201410508717
【公開日】2014年12月24日 申請日期:2014年9月28日 優(yōu)先權(quán)日:2014年9月28日
【發(fā)明者】樊京鑫, 李順龍 申請人:北京奇藝世紀(jì)科技有限公司