欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

資源轉(zhuǎn)移的方法和系統(tǒng)與流程

文檔序號(hào):12824548閱讀:368來源:國(guó)知局
資源轉(zhuǎn)移的方法和系統(tǒng)與流程

本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種資源轉(zhuǎn)移的方法和系統(tǒng)。



背景技術(shù):

目前,用戶在參與互聯(lián)網(wǎng)上各種各樣的事件時(shí),特別是有些事件需要客戶端先執(zhí)行一個(gè)事件,再獲取與該執(zhí)行的事件相關(guān)的資源時(shí),通常需要一個(gè)系統(tǒng)先執(zhí)行該事件并得到事件執(zhí)行結(jié)果,然后另外一個(gè)系統(tǒng)根據(jù)該事件執(zhí)行結(jié)果獲取與該事件相關(guān)的資源,由獲取與該事件相關(guān)的資源的系統(tǒng)將獲取的資源發(fā)送給客戶端。

如圖1所示,客戶端觸發(fā)事件參與系統(tǒng)的觸發(fā)事件頁面,資源數(shù)據(jù)庫(kù)記錄用戶獲得的資源。由資源數(shù)據(jù)庫(kù)通過事件參與系統(tǒng)向客戶端發(fā)送參與事件成功的信息。然后用戶發(fā)送第一事件請(qǐng)求給第二系統(tǒng),第二系統(tǒng)執(zhí)行第一事件后,向客戶端返回執(zhí)行結(jié)果。第二系統(tǒng)向第一系統(tǒng)下發(fā)第一事件的執(zhí)行結(jié)果,并由第一系統(tǒng)獲取第一事件資源,并向客戶端返回第一事件資源。在上述過程中,由于網(wǎng)絡(luò)原因可能導(dǎo)致兩個(gè)系統(tǒng)之間的通訊中斷,使得另外一個(gè)系統(tǒng)無法接收到事件執(zhí)行結(jié)果,也就無法獲取與事件相關(guān)的資源,最終使得客戶端無法獲取事件相關(guān)的資源。另外,通常兩個(gè)系統(tǒng)通過一個(gè)數(shù)據(jù)庫(kù)傳遞事件執(zhí)行結(jié)果,兩個(gè)系統(tǒng)在執(zhí)行各自的業(yè)務(wù)時(shí)都依賴該數(shù)據(jù)庫(kù),使得兩個(gè)系統(tǒng)高度耦合,使得資源轉(zhuǎn)移的可靠性比較低。

針對(duì)上述的問題,目前尚未提出有效的解決方案。



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

本發(fā)明實(shí)施例提供了一種資源轉(zhuǎn)移的方法和系統(tǒng),以至少解決資源轉(zhuǎn) 移的可靠性較低的技術(shù)問題。

根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種資源轉(zhuǎn)移的方法,包括:第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,所述第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,所述第一事件執(zhí)行結(jié)果由所述第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從所述第二數(shù)據(jù)庫(kù)同步到所述第一數(shù)據(jù)庫(kù)中;所述第一系統(tǒng)獲取在所述第一事件執(zhí)行完之后需返回給所述客戶端的第一事件資源;所述第一系統(tǒng)將所述第一事件資源返回給所述客戶端。

根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了另一種資源轉(zhuǎn)移的方法,包括:第二系統(tǒng)接收客戶端發(fā)送的用于請(qǐng)求執(zhí)行第一事件的第一事件執(zhí)行請(qǐng)求;所述第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中,以供第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取所述第一事件執(zhí)行結(jié)果,并向所述客戶端返回第一事件資源,其中,所述第一事件執(zhí)行結(jié)果用于指示所述第二系統(tǒng)完成了對(duì)所述第一事件的執(zhí)行,所述第一事件執(zhí)行結(jié)果從所述第二數(shù)據(jù)庫(kù)同步到所述第一數(shù)據(jù)庫(kù)中,所述第一事件資源由所述第一系統(tǒng)獲取。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種資源轉(zhuǎn)移的系統(tǒng),包括:讀取單元,用于從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,所述第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,所述第一事件執(zhí)行結(jié)果由所述第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從所述第二數(shù)據(jù)庫(kù)同步到所述第一數(shù)據(jù)庫(kù)中;獲取單元,用于統(tǒng)獲取在所述第一事件執(zhí)行完之后需返回給所述客戶端的第一事件資源;資源返回單元,用于將所述第一事件資源返回給所述客戶端。

根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種資源轉(zhuǎn)移的系統(tǒng),包括:接收單元,用于接收客戶端發(fā)送的用于請(qǐng)求執(zhí)行第一事件的第一事件執(zhí)行請(qǐng)求;存儲(chǔ)單元,用于將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中,以供第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取所述第一事件執(zhí)行結(jié)果,并向所述客戶端返回第一事件資源,其中,所述第一事件執(zhí)行結(jié)果用于指示所述第二系統(tǒng)完成 了對(duì)所述第一事件的執(zhí)行,所述第一事件執(zhí)行結(jié)果從所述第二數(shù)據(jù)庫(kù)同步到所述第一數(shù)據(jù)庫(kù)中,所述第一事件資源由所述第一系統(tǒng)獲取。

在本發(fā)明實(shí)施例中,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果由第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中;第一系統(tǒng)獲取在第一事件執(zhí)行完之后需返回給客戶端的第一事件資源;第一系統(tǒng)將第一事件資源返回給客戶端,第一系統(tǒng)和第二系統(tǒng)關(guān)注各自的業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù),且相互不干擾,降低了兩個(gè)系統(tǒng)的耦合性,提高了資源轉(zhuǎn)移過程的可靠性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題。

附圖說明

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

圖1是根據(jù)現(xiàn)有技術(shù)的一種資源轉(zhuǎn)移的方法的交互圖;

圖2是根據(jù)本發(fā)明實(shí)施例的硬件環(huán)境的示意圖;

圖3是根據(jù)本發(fā)明實(shí)施例1的資源轉(zhuǎn)移的方法的流程圖;

圖4是根據(jù)本發(fā)明實(shí)施例的資源轉(zhuǎn)移的方法的交互圖;

圖5是根據(jù)本發(fā)明可選實(shí)施例的資源轉(zhuǎn)移的方法的交互圖;

圖6是根據(jù)本發(fā)明實(shí)施例2的資源轉(zhuǎn)移的方法的流程圖;

圖7是根據(jù)本發(fā)明實(shí)施例3的資源轉(zhuǎn)移的系統(tǒng)的示意圖;

圖8是根據(jù)本發(fā)明實(shí)施例4的資源轉(zhuǎn)移的系統(tǒng)的示意圖;

圖9是根據(jù)本發(fā)明實(shí)施例的服務(wù)器的架構(gòu)圖。

具體實(shí)施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。

需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

實(shí)施例1

根據(jù)本發(fā)明實(shí)施例,提供了一種可以通過本申請(qǐng)系統(tǒng)實(shí)施例執(zhí)行的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

根據(jù)本發(fā)明實(shí)施例,提供了一種資源轉(zhuǎn)移的方法。

可選地,在本實(shí)施例中,上述資源轉(zhuǎn)移的方法可以應(yīng)用于如圖2所示的終端102和服務(wù)器104所構(gòu)成的硬件環(huán)境中。如圖2所示,終端102通過網(wǎng)絡(luò)與服務(wù)器104進(jìn)行連接,上述網(wǎng)絡(luò)包括但不限于:移動(dòng)通信網(wǎng)絡(luò)、廣域網(wǎng)、城域網(wǎng)或局域網(wǎng),終端102可以是手機(jī)終端,也可以是pc終端、筆記本終端或平板電腦終端。上述的服務(wù)器104包括第一系統(tǒng)、第一數(shù)據(jù) 庫(kù)、第二系統(tǒng)和第二數(shù)據(jù)庫(kù),上述的服務(wù)器104還可以包括資源數(shù)據(jù)庫(kù)。

圖2中示出的硬件環(huán)境系統(tǒng)的主要工作原理是:終端102從資源數(shù)據(jù)庫(kù)中獲取事件標(biāo)識(shí),然后終端102執(zhí)行與該事件標(biāo)識(shí)相關(guān)的第一事件,第一事件是在終端102和服務(wù)器104中的第二系統(tǒng)之間進(jìn)行的,第二系統(tǒng)執(zhí)行第一事件并得到第一事件執(zhí)行結(jié)果,第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)到第二數(shù)據(jù)庫(kù)中。第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并從資源數(shù)據(jù)庫(kù)中獲取與該事件標(biāo)識(shí)相關(guān)的資源,然后將獲取的資源返回給終端102,從而終端102獲得了事件標(biāo)識(shí)所對(duì)應(yīng)的資源。

在上述系統(tǒng)中,第一系統(tǒng)、第一數(shù)據(jù)庫(kù)、第二系統(tǒng)和第二數(shù)據(jù)庫(kù)可以獨(dú)立設(shè)置在多個(gè)服務(wù)器104中,也可以同時(shí)處于一個(gè)服務(wù)器104中。在本申請(qǐng)的各個(gè)實(shí)施例中,第一數(shù)據(jù)庫(kù)作為備數(shù)據(jù)庫(kù),第二數(shù)據(jù)庫(kù)作為主數(shù)據(jù)庫(kù)。

圖3是根據(jù)本發(fā)明實(shí)施例1的資源轉(zhuǎn)移的方法的流程圖,該資源轉(zhuǎn)移方法可以由第一系統(tǒng)來執(zhí)行。以下結(jié)合圖3對(duì)本發(fā)明實(shí)施例所提供的資源轉(zhuǎn)移的方法做具體介紹,如圖3所示,該資源轉(zhuǎn)移的方法主要包括如下步驟:

步驟s302,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果由第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

步驟s304,第一系統(tǒng)獲取在第一事件執(zhí)行完之后需返回給客戶端的第一事件資源。

步驟s306,第一系統(tǒng)將第一事件資源返回給客戶端。

首先,客戶端向第二系統(tǒng)發(fā)送第一事件執(zhí)行請(qǐng)求。第二系統(tǒng)執(zhí)行第一事件,得到第一事件執(zhí)行結(jié)果,并將第一事件執(zhí)行結(jié)果存儲(chǔ)到第二數(shù)據(jù)庫(kù) 中。

其次,第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

最后,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并獲取與第一事件相關(guān)聯(lián)的第一事件資源,從而完成將第一事件資源返回給客戶端。

可見,在上述過程中,第一系統(tǒng)讀取第一事件執(zhí)行結(jié)果、獲取第一事件資源和返回第一事件資源都不依賴于第二數(shù)據(jù)庫(kù),只需第一數(shù)據(jù)庫(kù)的參與。同樣,第二系統(tǒng)執(zhí)行第一事件并且存儲(chǔ)第一事件執(zhí)行結(jié)果都不依賴于第一數(shù)據(jù)庫(kù),只需第二數(shù)據(jù)庫(kù)的參與。即第一系統(tǒng)和第二系統(tǒng)關(guān)注各自的業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù),且相互不干擾,降低了兩個(gè)系統(tǒng)的耦合性,提高了資源轉(zhuǎn)移過程的可靠性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題。

具體來說,相對(duì)第一數(shù)據(jù)庫(kù)向第一系統(tǒng)發(fā)送第一事件執(zhí)行結(jié)果所導(dǎo)致的數(shù)據(jù)丟失或者傳輸失敗(網(wǎng)絡(luò)原因?qū)е?,由第一系統(tǒng)主動(dòng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果的方式不會(huì)遺漏數(shù)據(jù)。第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果而非第二數(shù)據(jù)庫(kù),即使多次反復(fù)輪詢第一數(shù)據(jù)庫(kù),也不會(huì)給第二數(shù)據(jù)庫(kù)造成壓力而影響第二系統(tǒng)執(zhí)行第一事件的邏輯和效率。而第二系統(tǒng)向第二數(shù)據(jù)庫(kù)中存儲(chǔ)第一事件執(zhí)行結(jié)果也不會(huì)影響第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)僅僅存在同步的動(dòng)作,兩個(gè)系統(tǒng)在執(zhí)行各自邏輯的過程相互獨(dú)立,且每個(gè)系統(tǒng)都是可靠的,從而增強(qiáng)了兩個(gè)系統(tǒng)的合作實(shí)現(xiàn)的資源轉(zhuǎn)移的可靠性。

同時(shí),由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)通過同步保持?jǐn)?shù)據(jù)的一致,保證了第一系統(tǒng)能夠?qū)崟r(shí)處理第二系統(tǒng)存儲(chǔ)到第二數(shù)據(jù)庫(kù)中的事件執(zhí)行結(jié)果,提高了資源轉(zhuǎn)移的實(shí)時(shí)性,達(dá)到了客戶端及時(shí)獲得與第一事件相關(guān)的第一事件資源的技術(shù)效果。

圖4是根據(jù)本發(fā)明實(shí)施例的資源轉(zhuǎn)移的方法的交互圖,結(jié)合圖4的交互圖舉例說明。

1、客戶端觸發(fā)事件參與系統(tǒng)提供的事件參與頁面,例如用戶通過手 機(jī)點(diǎn)擊某活動(dòng)頁面(即事件參與頁面)以獲得該活動(dòng)的活動(dòng)規(guī)則(即事件參與規(guī)則),該活動(dòng)規(guī)則為執(zhí)行a事件后得到b資源。

2、事件參與系統(tǒng)向資源數(shù)據(jù)庫(kù)發(fā)送事件參與規(guī)則,以使資源數(shù)據(jù)庫(kù)記錄上述客戶端所獲得的b資源。

3、資源數(shù)據(jù)庫(kù)成功記錄后,向事件參與系統(tǒng)返回響應(yīng)信息。

4、事件參與系統(tǒng)在接收到資源數(shù)據(jù)庫(kù)成功記錄后返回的響應(yīng)信息后,向客戶端發(fā)送用于指示參與成功的指示信息,例如“參與成功”、“恭喜獲得××”等。

5、客戶端向第二系統(tǒng)發(fā)送執(zhí)行a事件的請(qǐng)求。

6、第二系統(tǒng)執(zhí)行a事件。

7、將a事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中。

8、a事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步至第一數(shù)據(jù)庫(kù)中。

9、即s302,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取a事件執(zhí)行結(jié)果。

10、即s304,第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中查找與a事件相關(guān)的b資源。

11、即s306,第一系統(tǒng)將b資源發(fā)送給客戶端。

由上述的5至11可知,第一系統(tǒng)從資源數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)獲取數(shù)據(jù),第二系統(tǒng)向第二數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù),使得第一系統(tǒng)和第二系統(tǒng)的業(yè)務(wù)邏輯相互獨(dú)立,降低了第一系統(tǒng)和第二系統(tǒng)的耦合性,提高了兩個(gè)系統(tǒng)的可靠性,從而保證了資源轉(zhuǎn)移的可靠性,使得客戶端能夠及時(shí)獲取b資源。

在一個(gè)具體的例子中,a事件可以是一次購(gòu)買行為,b資源可以是對(duì)該次購(gòu)買行為所付出的金額的返還,也可以是對(duì)再次執(zhí)行的購(gòu)買行為所付出的金額的返還,b資源的形式可以是代金券(如滿10減9的代金券、10元代金券、紅包)、虛擬資源(如積分、游戲中裝備、游戲等級(jí)和虛擬貨幣等)、虛擬票據(jù)(如電影票、打車票等)和實(shí)物領(lǐng)取券等。

可選地,第一系統(tǒng)獲取在第一事件執(zhí)行完之后需返回給客戶端的第一事件資源包括:第一系統(tǒng)從第一事件執(zhí)行結(jié)果中獲取與第一事件關(guān)聯(lián)的事件標(biāo)識(shí);第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中獲取與事件標(biāo)識(shí)關(guān)聯(lián)的第一事件資源。

若第一事件是活動(dòng)規(guī)則(執(zhí)行a事件后得到b資源)中的a事件,第一事件關(guān)聯(lián)的事件標(biāo)識(shí)可以是執(zhí)行第一事件的執(zhí)行編號(hào)(如上述購(gòu)買行為所產(chǎn)生的交易流水號(hào)),或者活動(dòng)規(guī)則的編碼等;若第一事件并不是a事件,則第一事件關(guān)聯(lián)的事件標(biāo)識(shí)可以是活動(dòng)規(guī)則的編碼、活動(dòng)規(guī)則的標(biāo)識(shí)符等。上述的事件標(biāo)識(shí)還可以是該活動(dòng)規(guī)則的有效時(shí)間、其發(fā)布的網(wǎng)頁的網(wǎng)址等,其他可用于標(biāo)識(shí)活動(dòng)的身份的標(biāo)識(shí)形式都可以用在此處,不再一一舉例說明。

第一系統(tǒng)可以根據(jù)事件標(biāo)識(shí)從資源數(shù)據(jù)庫(kù)中查找相關(guān)的資源,若資源數(shù)據(jù)庫(kù)中存儲(chǔ)多個(gè)事件的活動(dòng)規(guī)則,每個(gè)活動(dòng)規(guī)則都有指示其身份的事件標(biāo)識(shí),第一系統(tǒng)根據(jù)事件標(biāo)識(shí)從資源數(shù)據(jù)庫(kù)查找相關(guān)的活動(dòng)規(guī)則對(duì)應(yīng)的資源。

事件參與規(guī)則可以有如下兩種形式:

(1)事件參與系統(tǒng)對(duì)應(yīng)的活動(dòng)頁面上展示的活動(dòng)規(guī)則包括多個(gè)子活動(dòng)規(guī)則,例如,活動(dòng)頁面上展示的活動(dòng)的總規(guī)則是執(zhí)行a事件得到b資源,子活動(dòng)規(guī)則,如執(zhí)行a1事件得到b1資源,或者執(zhí)行a2事件后可能得到b2資源或者b3資源(與b2資源不同)。

在客戶端獲取活動(dòng)的總規(guī)則后,可能執(zhí)行a1事件或a2事件,若執(zhí)行a2事件還可能得到b2資源或者b3資源兩種結(jié)果??蛻舳嗽趫?zhí)行a1事件或者a2事件后才能確定其參與的活動(dòng)的規(guī)則,因此,事件標(biāo)識(shí)可以在第二系統(tǒng)完成對(duì)第一事件的執(zhí)行時(shí)攜帶在第一事件執(zhí)行結(jié)果中,第一系統(tǒng)根據(jù)第一事件執(zhí)行結(jié)果中攜帶的事件標(biāo)識(shí)在資源數(shù)據(jù)庫(kù)中查找第一事件資源。

若活動(dòng)規(guī)則指示執(zhí)行a2事件后可能得到b2資源或者b3資源,則當(dāng) 客戶端獲取活動(dòng)規(guī)則時(shí),資源數(shù)據(jù)庫(kù)就確定了該客戶端所獲得資源為b2資源,則在客戶端發(fā)送執(zhí)行a2事件請(qǐng)求時(shí),就攜帶了事件標(biāo)識(shí),即事件標(biāo)識(shí)攜帶在第一事件執(zhí)行請(qǐng)求中。該事件標(biāo)識(shí)能夠指示向客戶端返回b2資源。那么,在第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中查找需返回給客戶端的資源時(shí),根據(jù)事件標(biāo)識(shí)就能確定需返回給客戶端的資源為b2資源,從而實(shí)現(xiàn)了返回a2事件對(duì)應(yīng)的資源b2。執(zhí)行a2事件后得到b3資源的情形與上述得到b2資源的情形類似,不再贅述。

(2)活動(dòng)規(guī)則為所有執(zhí)行a事件的客戶端都能獲得b資源,則第一系統(tǒng)在接收到執(zhí)行a事件的請(qǐng)求后都向執(zhí)行a事件得到的執(zhí)行結(jié)果添加事件標(biāo)識(shí),該事件標(biāo)識(shí)指示向客戶端返回b資源。即事件標(biāo)識(shí)可以在第二系統(tǒng)完成對(duì)第一事件的執(zhí)行時(shí)攜帶在第一事件執(zhí)行結(jié)果中,以便第一系統(tǒng)向客戶端返回相應(yīng)的第一事件資源。

通過上述實(shí)施例,可以對(duì)參與多種活動(dòng)規(guī)則的客戶端返回相應(yīng)的資源,也就是說,針對(duì)不同的活動(dòng)規(guī)則都可以采用本實(shí)施例所提供的方法來向客戶端返回資源,增加了本實(shí)施例針對(duì)多種活動(dòng)規(guī)則的包容性。

可選地,第一系統(tǒng)將第一事件資源返回給客戶端之后,方法還包括:第一系統(tǒng)為第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí),狀態(tài)標(biāo)識(shí)用于指示已經(jīng)在第一事件執(zhí)行完之后向客戶端返回第一事件資源;第一系統(tǒng)將添加狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果發(fā)送給第二數(shù)據(jù)庫(kù),其中,添加狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中獲取第一事件資源、并將第一事件資源返回給客戶端后,第一系統(tǒng)執(zhí)行圖4中的以下步驟:

12、對(duì)第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí),標(biāo)識(shí)該第一事件對(duì)應(yīng)的第一事件資源已經(jīng)發(fā)送給客戶端。

13、將添加狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果發(fā)送給第二數(shù)據(jù)庫(kù)。

14、第二數(shù)據(jù)庫(kù)向第一數(shù)據(jù)庫(kù)同步添加有添加狀態(tài)標(biāo)識(shí)的第一事件執(zhí) 行結(jié)果。

第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)時(shí)通常采用輪詢的方式,讀取第一數(shù)據(jù)庫(kù)中所有的數(shù)據(jù),從中找到?jīng)]有返回資源的事件執(zhí)行結(jié)果。因此,對(duì)第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí)后,若再次輪詢到第一事件執(zhí)行結(jié)果后,會(huì)執(zhí)行圖4中的15,判斷是否已經(jīng)向該第一事件執(zhí)行結(jié)果對(duì)應(yīng)的客戶端發(fā)送第一事件執(zhí)行結(jié)果,若在第一事件執(zhí)行結(jié)果中識(shí)別出上述狀態(tài)標(biāo)識(shí)就不會(huì)再次從資源數(shù)據(jù)庫(kù)中獲取第一事件資源,也就避免了重復(fù)向客戶端發(fā)送第一事件資源,提高了發(fā)送第一事件資源的準(zhǔn)確性,也提高了識(shí)別的未發(fā)送事件資源的事件執(zhí)行結(jié)果的效率,從而提高了整個(gè)系統(tǒng)的資源傳輸?shù)男省?/p>

通常情況下,第一系統(tǒng)主動(dòng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果時(shí)采用輪詢的方式。然而,隨著第一數(shù)據(jù)庫(kù)中存儲(chǔ)的事件執(zhí)行結(jié)果的增多,輪詢就會(huì)有延時(shí),為了保證第一系統(tǒng)提取第一數(shù)據(jù)庫(kù)中第一事件執(zhí)行結(jié)果的實(shí)時(shí)性,第一系統(tǒng)采用多個(gè)進(jìn)程同時(shí)讀取第一數(shù)據(jù)庫(kù)中存儲(chǔ)的事件執(zhí)行結(jié)果,即第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果包括:第一系統(tǒng)采用一個(gè)或多個(gè)進(jìn)程輪詢從第一數(shù)據(jù)庫(kù)中的多個(gè)數(shù)據(jù)表,其中,每個(gè)數(shù)據(jù)表記錄多個(gè)事件執(zhí)行結(jié)果,每個(gè)進(jìn)程輪詢多個(gè)數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;第一系統(tǒng)從多個(gè)事件執(zhí)行結(jié)果中讀取第一事件執(zhí)行結(jié)果。

第一事件執(zhí)行結(jié)果以數(shù)據(jù)表的形式存儲(chǔ)在第一數(shù)據(jù)庫(kù)中,每個(gè)數(shù)據(jù)表中都存儲(chǔ)多個(gè)事件執(zhí)行結(jié)果。第一系統(tǒng)的多個(gè)進(jìn)程分別輪詢一個(gè)范圍內(nèi)的數(shù)據(jù)表,多個(gè)進(jìn)程同時(shí)進(jìn)行輪詢提高了讀取第一事件執(zhí)行結(jié)果的效果。每個(gè)進(jìn)程可以讀取一定范圍內(nèi)的數(shù)據(jù)表。劃分?jǐn)?shù)據(jù)表可以根據(jù)第一事件執(zhí)行結(jié)果中的編碼來進(jìn)行。

在一個(gè)具體的例子中,第二系統(tǒng)每次執(zhí)行一個(gè)第一事件都生成一個(gè)流水號(hào),按照流水號(hào)的順序依次存儲(chǔ)在數(shù)據(jù)表中,在一個(gè)數(shù)據(jù)表不足以存儲(chǔ)生成的流水號(hào)的情況下,將新生成的流水號(hào)存儲(chǔ)在新的數(shù)據(jù)表中。這樣,每個(gè)數(shù)據(jù)表都具有流水號(hào)的范圍,例如流水號(hào)1~10存儲(chǔ)在數(shù)據(jù)表1中, 流水號(hào)11~20存儲(chǔ)在數(shù)據(jù)表2中,流水號(hào)21~30存儲(chǔ)在數(shù)據(jù)表3中,流水號(hào)31~40存儲(chǔ)在數(shù)據(jù)表4中。第一系統(tǒng)有兩個(gè)進(jìn)程輪詢第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)表,則第一個(gè)進(jìn)程輪詢數(shù)據(jù)表1和2中的多個(gè)第一事件執(zhí)行結(jié)果,第二個(gè)進(jìn)程輪詢數(shù)據(jù)表3和4中的多個(gè)第一事件執(zhí)行結(jié)果。兩個(gè)進(jìn)程同時(shí)輪詢減少了輪詢的時(shí)間。

進(jìn)一步可選地,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果包括:第一系統(tǒng)接收消息中間件轉(zhuǎn)發(fā)的指示信息,指示信息由第二系統(tǒng)發(fā)送給消息中間件,用于指示第二系統(tǒng)執(zhí)行第一事件得到第一事件執(zhí)行結(jié)果;第一系統(tǒng)在接收到指示信息后,從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。

如圖5所示,消息中間件獨(dú)立于第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù),當(dāng)?shù)诙到y(tǒng)執(zhí)行第一事件得到第一事件執(zhí)行結(jié)果之后,生成指示信息,并將指示信息發(fā)送給消息中間件(如圖5中16),由消息中間件將第二系統(tǒng)生成的指示信息轉(zhuǎn)發(fā)給第一系統(tǒng)(如圖5中17),以便第一系統(tǒng)能夠及時(shí)獲知第二系統(tǒng)完成了第一事件的執(zhí)行,并從第一數(shù)據(jù)庫(kù)中獲取第一事件執(zhí)行結(jié)果。

由于第二系統(tǒng)主動(dòng)向消息中間件推送用于指示第二系統(tǒng)已經(jīng)執(zhí)行完第一事件并得到第一事件執(zhí)行結(jié)果的指示信息,消息中間件轉(zhuǎn)發(fā)該指示信息給第一系統(tǒng),保證了第一系統(tǒng)能夠及時(shí)獲知第二系統(tǒng)完成了第一事件的執(zhí)行,增強(qiáng)了第一系統(tǒng)獲知第一事件執(zhí)行結(jié)果的時(shí)效性。同時(shí),由于消息中間件獨(dú)立于第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù),在第一數(shù)據(jù)庫(kù)或第二數(shù)據(jù)庫(kù)故障時(shí),第一系統(tǒng)能夠獲知第二系統(tǒng)完成的第一事件的執(zhí)行,在消息中間件出現(xiàn)故障時(shí),第一系統(tǒng)可以通過輪詢從第一數(shù)據(jù)庫(kù)中獲取第一事件執(zhí)行結(jié)果,從而提高了系統(tǒng)的可靠性和穩(wěn)定性。

可選地,為了進(jìn)一步保證返回第一事件資源的可靠性,保證第一系統(tǒng)能夠一直處于能夠讀取第一數(shù)據(jù)庫(kù)的第一事件執(zhí)行結(jié)果的狀態(tài),可以采用在分布式服務(wù)器中設(shè)置多個(gè)第一系統(tǒng),即第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果包括:多個(gè)第一系統(tǒng)中的任意一個(gè)或多個(gè)第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。

每個(gè)第一系統(tǒng)都可以從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,即使有第一系統(tǒng)出現(xiàn)故障,其他第一系統(tǒng)也可以從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,保證能夠?yàn)榭蛻舳颂峁┑谝皇录Y源。優(yōu)選zookeeper分布式服務(wù)器,提高第一系統(tǒng)本身的可靠性。

在上述實(shí)施例中,采用以下幾種措施增強(qiáng)了資源轉(zhuǎn)移的可靠性:

(1)第二數(shù)據(jù)庫(kù)中的第一事件執(zhí)行結(jié)果同步到第一數(shù)據(jù)庫(kù)中,并且在第二數(shù)據(jù)庫(kù)中的數(shù)據(jù)有變化時(shí)就觸發(fā)同步,實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的實(shí)時(shí)同步。即使第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)之間的網(wǎng)絡(luò)質(zhì)量較差,在網(wǎng)絡(luò)恢復(fù)后也能實(shí)現(xiàn)從第二數(shù)據(jù)庫(kù)到第一數(shù)據(jù)庫(kù)的同步,避免了第一事件執(zhí)行結(jié)果在同步過程中丟失,增加了同步的可靠性;

(2)在分布式服務(wù)器上部署第一系統(tǒng)的集群,每個(gè)第一系統(tǒng)都可以從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,提高了服務(wù)器的容災(zāi)性,即使某個(gè)第一系統(tǒng)性能低或者損壞都能用其他第一系統(tǒng)替代,提高了第一系統(tǒng)的可靠性;

(3)第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,第二系統(tǒng)執(zhí)行第一事件,并向第二數(shù)據(jù)庫(kù)存儲(chǔ)第一事件執(zhí)行結(jié)果,即第一系統(tǒng)和第二系統(tǒng)的邏輯各自獨(dú)立,互不影響,避免一方崩潰所導(dǎo)致的整個(gè)資源轉(zhuǎn)移的不可靠。同時(shí),由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)僅進(jìn)行數(shù)據(jù)的同步,并不涉及第一系統(tǒng)和第二系統(tǒng)的業(yè)務(wù)邏輯,提高了包括第一系統(tǒng)和第二系統(tǒng)資源轉(zhuǎn)移過程的可靠性;

(4)若采用同一個(gè)數(shù)據(jù)庫(kù)完成第二系統(tǒng)執(zhí)行第一事件和第一系統(tǒng)的輪詢,會(huì)降低數(shù)據(jù)庫(kù)的性能,導(dǎo)致第二系統(tǒng)執(zhí)行第一事件的延時(shí)增加或耗時(shí)不穩(wěn)定的問題,而采用第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)分別為第二系統(tǒng)和第一系統(tǒng)服務(wù),解決了第二系統(tǒng)執(zhí)行第一事件的延時(shí)問題。

需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受 所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。

通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

實(shí)施例2

根據(jù)本發(fā)明實(shí)施例,提供了一種可以通過本申請(qǐng)系統(tǒng)實(shí)施例執(zhí)行的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。

根據(jù)本發(fā)明實(shí)施例,提供了一種資源轉(zhuǎn)移的方法。該資源轉(zhuǎn)移的方法可以由第二系統(tǒng)來執(zhí)行,以下結(jié)合圖6對(duì)本發(fā)明實(shí)施例2所提供的資源轉(zhuǎn)移的方法做具體介紹,如圖6所示,該資源轉(zhuǎn)移的方法主要包括如下步驟:

步驟s402,第二系統(tǒng)接收客戶端發(fā)送的用于請(qǐng)求執(zhí)行第一事件的第一事件執(zhí)行請(qǐng)求(即圖4所示的5)。

步驟s404,第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中,以供第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并向客戶端返回第一事件資源,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中,第一事件 資源由第一系統(tǒng)獲取(即圖4所示的7)。其中,第一數(shù)據(jù)庫(kù)作為備數(shù)據(jù)庫(kù),第二數(shù)據(jù)庫(kù)作為主數(shù)據(jù)庫(kù)。

首先,第二系統(tǒng)接收客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求后,執(zhí)行第一事件。

其次,第二系統(tǒng)將將第一事件執(zhí)行結(jié)果存儲(chǔ)到第二數(shù)據(jù)庫(kù)中,在第二數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容有變化時(shí)發(fā)起同步,將第一事件執(zhí)行結(jié)果同步到第一數(shù)據(jù)庫(kù)中,以便第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并獲取與第一事件相關(guān)聯(lián)的第一事件資源,從而完成將第一事件資源返回給客戶端。

可見,在上述過程中,第一系統(tǒng)讀取第一事件執(zhí)行結(jié)果、獲取第一事件資源和返回第一事件資源都不依賴于第二數(shù)據(jù)庫(kù),只需第一數(shù)據(jù)庫(kù)的參與。同樣,第二系統(tǒng)執(zhí)行第一事件并且存儲(chǔ)第一事件執(zhí)行結(jié)果都不依賴于第一數(shù)據(jù)庫(kù),只需第二數(shù)據(jù)庫(kù)的參與。即第一系統(tǒng)和第二系統(tǒng)關(guān)注各自的業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù),且相互不干擾,降低了兩個(gè)系統(tǒng)的耦合性,提高了資源轉(zhuǎn)移過程的可靠性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題。

具體來說,相對(duì)第一數(shù)據(jù)庫(kù)向第一系統(tǒng)發(fā)送第一事件執(zhí)行結(jié)果所導(dǎo)致的數(shù)據(jù)丟失或者傳輸失敗(網(wǎng)絡(luò)原因?qū)е?,由第一系統(tǒng)主動(dòng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果的方式不會(huì)遺漏數(shù)據(jù)。第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果而非第二數(shù)據(jù)庫(kù),即使多次反復(fù)輪詢第一數(shù)據(jù)庫(kù),也不會(huì)給第二數(shù)據(jù)庫(kù)造成壓力而影響第二系統(tǒng)執(zhí)行第一事件的邏輯和效率。而第二系統(tǒng)向第二數(shù)據(jù)庫(kù)中存儲(chǔ)第一事件執(zhí)行結(jié)果也不會(huì)影響第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)僅僅存在同步的動(dòng)作,兩個(gè)系統(tǒng)在執(zhí)行各自邏輯的過程相互獨(dú)立,且每個(gè)系統(tǒng)都是可靠的,從而增強(qiáng)了兩個(gè)系統(tǒng)的合作實(shí)現(xiàn)的資源轉(zhuǎn)移的可靠性。

同時(shí),由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)通過同步保持?jǐn)?shù)據(jù)的一致,保證了第一系統(tǒng)能夠?qū)崟r(shí)處理第二系統(tǒng)存儲(chǔ)到第二數(shù)據(jù)庫(kù)中的事件執(zhí)行結(jié)果,提高了資源轉(zhuǎn)移的實(shí)時(shí)性,達(dá)到了客戶端及時(shí)獲得與第一事件相關(guān)的第一 事件資源的技術(shù)效果。

可選地,為了保證第二數(shù)據(jù)庫(kù)中存儲(chǔ)第一事件執(zhí)行結(jié)果,以第二數(shù)據(jù)庫(kù)中存儲(chǔ)了第一事件執(zhí)行結(jié)果為完成了執(zhí)行第一事件的標(biāo)識(shí),即在第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中之后,方法還包括:第二系統(tǒng)判斷是否接收到第二數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)回執(zhí),其中,存儲(chǔ)回執(zhí)用于指示已經(jīng)完成將第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中;第二系統(tǒng)在判斷出接收到第二數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)回執(zhí)后,向客戶端返回用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行的信息。

用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行的信息,例如,“第一事件成功”,具體在第一事件為購(gòu)買行為時(shí),用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行的信息為“購(gòu)買成功”等信息。若第二系統(tǒng)沒有接收到存儲(chǔ)回執(zhí),可以回滾執(zhí)行第一事件,并向客戶端返回“購(gòu)買失敗”等信息。

通過上述實(shí)施例,獨(dú)立的第一系統(tǒng)和第二系統(tǒng)的獨(dú)立,以及第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)的獨(dú)立,降低了兩個(gè)系統(tǒng)的耦合,提高了資源轉(zhuǎn)移的可靠性,第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)的同步保證了資源轉(zhuǎn)移的實(shí)時(shí)性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題,達(dá)到了提高資源轉(zhuǎn)移的可靠性的技術(shù)效果。

實(shí)施例3

根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述實(shí)施例1的資源轉(zhuǎn)移的方法的資源轉(zhuǎn)移的系統(tǒng),該資源轉(zhuǎn)移的系統(tǒng)主要用于執(zhí)行本發(fā)明實(shí)施例上述內(nèi)容所提供的資源轉(zhuǎn)移的方法,以下對(duì)本發(fā)明實(shí)施例所提供的資源轉(zhuǎn)移的系統(tǒng)做具體介紹:

圖7是根據(jù)本發(fā)明實(shí)施例3的資源轉(zhuǎn)移的系統(tǒng)的示意圖,如圖7所示,該資源轉(zhuǎn)移的系統(tǒng)主要包括:讀取單元40、獲取單元42和資源返回單元44。

讀取單元40用于從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,第 一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果由第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

獲取單元42用于統(tǒng)獲取在第一事件執(zhí)行完之后需返回給客戶端的第一事件資源。

資源返回單元44用于將第一事件資源返回給客戶端。

首先,客戶端向第二系統(tǒng)發(fā)送第一事件執(zhí)行請(qǐng)求。第二系統(tǒng)執(zhí)行第一事件,得到第一事件執(zhí)行結(jié)果,并將第一事件執(zhí)行結(jié)果存儲(chǔ)到第二數(shù)據(jù)庫(kù)中。

其次,第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

最后,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并獲取與第一事件相關(guān)聯(lián)的第一事件資源,從而完成將第一事件資源返回給客戶端。

可見,在上述過程中,第一系統(tǒng)讀取第一事件執(zhí)行結(jié)果、獲取第一事件資源和返回第一事件資源都不依賴于第二數(shù)據(jù)庫(kù),只需第一數(shù)據(jù)庫(kù)的參與。同樣,第二系統(tǒng)執(zhí)行第一事件并且存儲(chǔ)第一事件執(zhí)行結(jié)果都不依賴于第一數(shù)據(jù)庫(kù),只需第二數(shù)據(jù)庫(kù)的參與。即第一系統(tǒng)和第二系統(tǒng)關(guān)注各自的業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù),且相互不干擾,降低了兩個(gè)系統(tǒng)的耦合性,提高了資源轉(zhuǎn)移過程的可靠性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題。

具體來說,相對(duì)第一數(shù)據(jù)庫(kù)向第一系統(tǒng)發(fā)送第一事件執(zhí)行結(jié)果所導(dǎo)致的數(shù)據(jù)丟失或者傳輸失敗(網(wǎng)絡(luò)原因?qū)е?,由第一系統(tǒng)主動(dòng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果的方式不會(huì)遺漏數(shù)據(jù)。第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果而非第二數(shù)據(jù)庫(kù),即使多次反復(fù)輪詢第一數(shù)據(jù)庫(kù),也不會(huì)給第二數(shù)據(jù)庫(kù)造成壓力而影響第二系統(tǒng)執(zhí)行第一事件的邏輯和效率。而第二系統(tǒng)向第二數(shù)據(jù)庫(kù)中存儲(chǔ)第一事件執(zhí)行結(jié)果也不會(huì)影響第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)僅僅存在同步的動(dòng)作,兩個(gè)系統(tǒng)在執(zhí)行各自邏輯的過程相互獨(dú)立,且每個(gè) 系統(tǒng)都是可靠的,從而增強(qiáng)了兩個(gè)系統(tǒng)的合作實(shí)現(xiàn)的資源轉(zhuǎn)移的可靠性。

同時(shí),由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)通過同步保持?jǐn)?shù)據(jù)的一致,保證了第一系統(tǒng)能夠?qū)崟r(shí)處理第二系統(tǒng)存儲(chǔ)到第二數(shù)據(jù)庫(kù)中的事件執(zhí)行結(jié)果,提高了資源轉(zhuǎn)移的實(shí)時(shí)性,達(dá)到了客戶端及時(shí)獲得與第一事件相關(guān)的第一事件資源的技術(shù)效果。

結(jié)合圖4的交互圖舉例說明。

1、客戶端觸發(fā)事件參與系統(tǒng)提供的事件參與頁面(即活動(dòng)頁面),例如用戶通過手機(jī)點(diǎn)擊活動(dòng)頁面以獲得該活動(dòng)的活動(dòng)規(guī)則(即事件參與規(guī)則),該活動(dòng)規(guī)則為執(zhí)行a事件后得到b資源。

2、事件參與系統(tǒng)向資源數(shù)據(jù)庫(kù)發(fā)送事件參與規(guī)則,以使資源數(shù)據(jù)庫(kù)記錄上述客戶端所獲得的b資源。

3、資源數(shù)據(jù)庫(kù)成功記錄后,向事件參與系統(tǒng)返回響應(yīng)信息。

4、事件參與系統(tǒng)在接收到資源數(shù)據(jù)庫(kù)成功記錄后返回的響應(yīng)信息后,向客戶端發(fā)送用于指示參與成功的指示信息,例如“參與成功”、“恭喜獲得××”等。

5、客戶端向第二系統(tǒng)發(fā)送執(zhí)行a事件的請(qǐng)求。

6、第二系統(tǒng)執(zhí)行a事件。

7、將a事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中。

8、a事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步至第一數(shù)據(jù)庫(kù)中。

9、第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取a事件執(zhí)行結(jié)果。

10、第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中查找與a事件相關(guān)的b資源。

11、第一系統(tǒng)將b資源發(fā)送給客戶端。

由上述的5至11可知,第一系統(tǒng)從資源數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)獲取數(shù)據(jù),第二系統(tǒng)向第二數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù),使得第一系統(tǒng)和第二系統(tǒng)的業(yè)務(wù) 邏輯相互獨(dú)立,降低了第一系統(tǒng)和第二系統(tǒng)的耦合性,提高了兩個(gè)系統(tǒng)的可靠性,從而保證了資源轉(zhuǎn)移的可靠性,使得客戶端能夠及時(shí)獲取b資源。

在一個(gè)具體的例子中,a事件可以是一次購(gòu)買行為,b資源可以是對(duì)該次購(gòu)買行為所付出的金額的返還,也可以是對(duì)再次執(zhí)行的購(gòu)買行為所付出的金額的返還,b資源的形式可以是代金券(如滿10減9的代金券、10元代金券、紅包等)、虛擬資源(如積分、游戲中裝備、游戲等級(jí)和虛擬貨幣等)、虛擬票據(jù)(如電影票、打車票等)和實(shí)物領(lǐng)取券等。

可選地,獲取單元包括:第一獲取模塊,用于從第一事件執(zhí)行結(jié)果中獲取與第一事件關(guān)聯(lián)的事件標(biāo)識(shí);第二獲取模塊,用于從資源數(shù)據(jù)庫(kù)中獲取與事件標(biāo)識(shí)關(guān)聯(lián)的第一事件資源。

若第一事件是活動(dòng)規(guī)則(執(zhí)行a事件后得到b資源)中的a事件,第一事件關(guān)聯(lián)的事件標(biāo)識(shí)可以是執(zhí)行第一事件的執(zhí)行編號(hào)(如上述購(gòu)買行為所產(chǎn)生的交易流水號(hào)),或者活動(dòng)規(guī)則的編碼等;若第一事件并不是a事件,則第一事件關(guān)聯(lián)的事件標(biāo)識(shí)可以是活動(dòng)規(guī)則的編碼、活動(dòng)規(guī)則的標(biāo)識(shí)符等。上述的事件標(biāo)識(shí)還可以是該活動(dòng)規(guī)則的有效時(shí)間、其發(fā)布的網(wǎng)頁的網(wǎng)址等,其他可用于標(biāo)識(shí)活動(dòng)的身份的標(biāo)識(shí)形式都可以用在此處,不再一一舉例說明。

第一系統(tǒng)可以根據(jù)事件標(biāo)識(shí)從資源數(shù)據(jù)庫(kù)中查找相關(guān)的資源,若資源數(shù)據(jù)庫(kù)中存儲(chǔ)多個(gè)活動(dòng)的活動(dòng)規(guī)則,每個(gè)活動(dòng)規(guī)則都有指示其身份的事件標(biāo)識(shí),第一系統(tǒng)根據(jù)事件標(biāo)識(shí)從資源數(shù)據(jù)庫(kù)查找相關(guān)的活動(dòng)規(guī)則對(duì)應(yīng)的資源。

事件參與規(guī)則可以有如下兩種形式:

(1)事件參與系統(tǒng)對(duì)應(yīng)的活動(dòng)頁面上展示的活動(dòng)規(guī)則包括多個(gè)子活動(dòng)規(guī)則,例如,活動(dòng)頁面上展示的活動(dòng)的總規(guī)則是執(zhí)行a事件得到b資源,子活動(dòng)規(guī)則,如執(zhí)行a1事件得到b1資源,或者執(zhí)行a2事件后可能得到b2資源或者b3資源(與b2資源不同)。

在客戶端獲取活動(dòng)的總規(guī)則后,可能執(zhí)行a1事件或a2事件,若執(zhí)行a2事件還可能得到b2資源或者b3資源兩種結(jié)果。客戶端在執(zhí)行a1事件或者a2事件后才能確定其參與的活動(dòng)的規(guī)則,因此,事件標(biāo)識(shí)可以在第二系統(tǒng)完成對(duì)第一事件的執(zhí)行時(shí)攜帶在第一事件執(zhí)行結(jié)果中,第一系統(tǒng)根據(jù)第一事件執(zhí)行結(jié)果中攜帶的事件標(biāo)識(shí)在資源數(shù)據(jù)庫(kù)中查找第一事件資源。

若活動(dòng)規(guī)則指示執(zhí)行a2事件后可能得到b2資源或者b3資源,則當(dāng)客戶端獲取活動(dòng)規(guī)則時(shí),資源數(shù)據(jù)庫(kù)就確定了該客戶端所獲得資源為b2資源,則在客戶端發(fā)送執(zhí)行a2事件請(qǐng)求時(shí),就攜帶了事件標(biāo)識(shí),即事件標(biāo)識(shí)攜帶在第一事件執(zhí)行請(qǐng)求中。該事件標(biāo)識(shí)能夠指示向客戶端返回b2資源。那么,在第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中查找需返回給客戶端的資源時(shí),根據(jù)事件標(biāo)識(shí)就能確定需返回給客戶端的資源為b2資源,從而實(shí)現(xiàn)了返回a2事件對(duì)應(yīng)的資源b2。執(zhí)行a2事件后得到b3資源的情形與上述得到b2資源的情形類似,不再贅述。

(2)活動(dòng)規(guī)則為所有執(zhí)行a事件的客戶端都能獲得b資源,則第一系統(tǒng)在接收到執(zhí)行a事件的請(qǐng)求后都向執(zhí)行a事件得到的執(zhí)行結(jié)果添加事件標(biāo)識(shí),該事件標(biāo)識(shí)指示向客戶端返回b資源。即事件標(biāo)識(shí)可以在第二系統(tǒng)完成對(duì)第一事件的執(zhí)行時(shí)攜帶在第一事件執(zhí)行結(jié)果中,以便第一系統(tǒng)向客戶端返回相應(yīng)的第一事件資源。

通過上述實(shí)施例,可以對(duì)參與多種活動(dòng)規(guī)則的客戶端返回相應(yīng)的資源,也就是說,針對(duì)不同的活動(dòng)規(guī)則都可以采用本實(shí)施例所提供的系統(tǒng)來向客戶端返回資源,增加了本實(shí)施例針對(duì)多種活動(dòng)規(guī)則的包容性。

可選地,系統(tǒng)還包括:添加單元,用于在將第一事件資源返回給客戶端之后,為第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí),狀態(tài)標(biāo)識(shí)用于指示已經(jīng)在第一事件執(zhí)行完之后向客戶端返回第一事件資源;發(fā)送單元,用于將添加狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果發(fā)送給第二數(shù)據(jù)庫(kù),其中,添加狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中獲取第一事件資源、并將第一事件資源返回給客戶端后,第一系統(tǒng)對(duì)第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí),標(biāo)識(shí)該第一事件對(duì)應(yīng)的第一事件資源已經(jīng)發(fā)送給客戶端。第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)時(shí)通常采用輪詢的方式,讀取第一數(shù)據(jù)庫(kù)中所有的數(shù)據(jù),從中找到?jīng)]有返回資源的事件執(zhí)行結(jié)果。因此,對(duì)第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí)后,若再次輪詢到第一事件執(zhí)行結(jié)果后,識(shí)別出該狀態(tài)標(biāo)識(shí)就不會(huì)再次從資源數(shù)據(jù)庫(kù)中獲取第一事件資源,也就避免了重復(fù)向客戶端發(fā)送第一事件資源,提高了發(fā)送第一事件資源的準(zhǔn)確性,也提高了識(shí)別的未發(fā)送事件資源的事件執(zhí)行結(jié)果的效率,從而提高了整個(gè)系統(tǒng)的資源傳輸?shù)男省?/p>

通常情況下,第一系統(tǒng)主動(dòng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果時(shí)采用輪詢的方式。然而,隨著第一數(shù)據(jù)庫(kù)中存儲(chǔ)的事件執(zhí)行結(jié)果的增多,輪詢就會(huì)有延時(shí),為了保證第一系統(tǒng)提取第一數(shù)據(jù)庫(kù)中第一事件執(zhí)行結(jié)果的實(shí)時(shí)性,第一系統(tǒng)采用多個(gè)進(jìn)程同時(shí)讀取第一數(shù)據(jù)庫(kù)中存儲(chǔ)的事件執(zhí)行結(jié)果,即讀取單元包括:輪詢模塊,用于采用一個(gè)或多個(gè)進(jìn)程輪詢從第一數(shù)據(jù)庫(kù)中的多個(gè)數(shù)據(jù)表,其中,每個(gè)數(shù)據(jù)表記錄多個(gè)事件執(zhí)行結(jié)果,每個(gè)進(jìn)程輪詢多個(gè)數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;第一讀取模塊,用于從多個(gè)事件執(zhí)行結(jié)果中讀取第一事件執(zhí)行結(jié)果。

第一事件執(zhí)行結(jié)果以數(shù)據(jù)表的形式存儲(chǔ)在第一數(shù)據(jù)庫(kù)中,每個(gè)數(shù)據(jù)表中都存儲(chǔ)多個(gè)事件執(zhí)行結(jié)果。第一系統(tǒng)的多個(gè)進(jìn)程分別輪詢一個(gè)范圍內(nèi)的數(shù)據(jù)表,多個(gè)進(jìn)程同時(shí)進(jìn)行輪詢提高了讀取第一事件執(zhí)行結(jié)果的效果。每個(gè)進(jìn)程可以讀取一定范圍內(nèi)的數(shù)據(jù)表。劃分?jǐn)?shù)據(jù)表可以根據(jù)第一事件執(zhí)行結(jié)果中的編碼來進(jìn)行。

在一個(gè)具體的例子中,第二系統(tǒng)每次執(zhí)行一個(gè)第一事件都生成一個(gè)流水號(hào),按照流水號(hào)的順序依次存儲(chǔ)在數(shù)據(jù)表中,在一個(gè)數(shù)據(jù)表不足以存儲(chǔ)生成的流水號(hào)的情況下,將新生成的流水號(hào)存儲(chǔ)在新的數(shù)據(jù)表中。這樣,每個(gè)數(shù)據(jù)表都具有流水號(hào)的范圍,例如流水號(hào)1~10存儲(chǔ)在數(shù)據(jù)表1中,流水號(hào)11~20存儲(chǔ)在數(shù)據(jù)表2中,流水號(hào)21~30存儲(chǔ)在數(shù)據(jù)表3中,流水 號(hào)31~40存儲(chǔ)在數(shù)據(jù)表4中。第一系統(tǒng)有兩個(gè)進(jìn)程輪詢第一數(shù)據(jù)庫(kù)中的數(shù)據(jù)表,則第一個(gè)進(jìn)程輪詢數(shù)據(jù)表1和2中的多個(gè)第一事件執(zhí)行結(jié)果,第二個(gè)進(jìn)程輪詢數(shù)據(jù)表3和4中的多個(gè)第一事件執(zhí)行結(jié)果。兩個(gè)進(jìn)程同時(shí)輪詢減少了輪詢的時(shí)間。

進(jìn)一步可選地,所述讀取單元包括:接收模塊,用于接收消息中間件轉(zhuǎn)發(fā)的指示信息,所述指示信息由所述第二系統(tǒng)發(fā)送給所述消息中間件,用于指示所述第二系統(tǒng)執(zhí)行所述第一事件得到所述第一事件執(zhí)行結(jié)果;第二讀取模塊,用于在接收到所述指示信息后,從所述第一數(shù)據(jù)庫(kù)中讀取所述第一事件執(zhí)行結(jié)果。

如圖5所示,消息中間件獨(dú)立于第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù),當(dāng)?shù)诙到y(tǒng)執(zhí)行第一事件得到第一事件執(zhí)行結(jié)果之后,生成指示信息,并將指示信息發(fā)送給消息中間件(如圖5中的16),由消息中間件將第二系統(tǒng)生成的指示信息轉(zhuǎn)發(fā)給第一系統(tǒng)(如圖5中的17),以便第一系統(tǒng)能夠及時(shí)獲知第二系統(tǒng)完成了第一事件的執(zhí)行,并從第一數(shù)據(jù)庫(kù)中獲取第一事件執(zhí)行結(jié)果。

由于第二系統(tǒng)主動(dòng)向消息中間件推送用于指示第二系統(tǒng)已經(jīng)執(zhí)行完第一事件并得到第一事件執(zhí)行結(jié)果的指示信息,消息中間件轉(zhuǎn)發(fā)該指示信息給第一系統(tǒng),保證了第一系統(tǒng)能夠及時(shí)獲知第二系統(tǒng)完成了第一事件的執(zhí)行,增強(qiáng)了第一系統(tǒng)獲知第一事件執(zhí)行結(jié)果的時(shí)效性。同時(shí),由于消息中間件獨(dú)立于第一數(shù)據(jù)庫(kù)和第二數(shù)據(jù)庫(kù),在第一數(shù)據(jù)庫(kù)或第二數(shù)據(jù)庫(kù)故障時(shí),第一系統(tǒng)能夠獲知第二系統(tǒng)完成的第一事件的執(zhí)行,在消息中間件出現(xiàn)故障時(shí),第一系統(tǒng)可以通過輪詢從第一數(shù)據(jù)庫(kù)中獲取第一事件執(zhí)行結(jié)果,從而提高了系統(tǒng)的可靠性和穩(wěn)定性。

可選地,為了進(jìn)一步保證返回第一事件資源的可靠性,保證第一系統(tǒng)能夠一直處于能夠讀取第一數(shù)據(jù)庫(kù)的第一事件執(zhí)行結(jié)果的狀態(tài),可以采用在分布式服務(wù)器中設(shè)置多個(gè)第一系統(tǒng),每個(gè)第一系統(tǒng)都可以從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,即使有第一系統(tǒng)出現(xiàn)故障,其他第一系統(tǒng)也可 以從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,保證能夠?yàn)榭蛻舳颂峁┑谝皇录Y源。優(yōu)選zookeeper分布式服務(wù)器,提高第一系統(tǒng)本身的可靠性。

實(shí)施例4

根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述實(shí)施例2的資源轉(zhuǎn)移的方法的資源轉(zhuǎn)移的系統(tǒng),該資源轉(zhuǎn)移的系統(tǒng)主要用于執(zhí)行本發(fā)明實(shí)施例上述內(nèi)容所提供的資源轉(zhuǎn)移的方法,以下對(duì)本發(fā)明實(shí)施例所提供的資源轉(zhuǎn)移的系統(tǒng)做具體介紹:

圖8是根據(jù)本發(fā)明實(shí)施例4的資源轉(zhuǎn)移的系統(tǒng)的示意圖,如圖8所示,該資源轉(zhuǎn)移的系統(tǒng)主要包括:接收單元50和存儲(chǔ)單元52。

接收單元50用于接收客戶端發(fā)送的用于請(qǐng)求執(zhí)行第一事件的第一事件執(zhí)行請(qǐng)求。

存儲(chǔ)單元52用于將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中,以供第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并向客戶端返回第一事件資源,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中,第一事件資源由第一系統(tǒng)獲取。

首先,第二系統(tǒng)接收客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求后,執(zhí)行第一事件。

其次,第二系統(tǒng)將將第一事件執(zhí)行結(jié)果存儲(chǔ)到第二數(shù)據(jù)庫(kù)中,在第二數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容有變化時(shí)發(fā)起同步,將第一事件執(zhí)行結(jié)果同步到第一數(shù)據(jù)庫(kù)中,以便第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并獲取與第一事件相關(guān)聯(lián)的第一事件資源,從而完成將第一事件資源返回給客戶端。

可見,在上述過程中,第一系統(tǒng)讀取第一事件執(zhí)行結(jié)果、獲取第一事件資源和返回第一事件資源都不依賴于第二數(shù)據(jù)庫(kù),只需第一數(shù)據(jù)庫(kù)的參與。同樣,第二系統(tǒng)執(zhí)行第一事件并且存儲(chǔ)第一事件執(zhí)行結(jié)果都不依賴于 第一數(shù)據(jù)庫(kù),只需第二數(shù)據(jù)庫(kù)的參與。即第一系統(tǒng)和第二系統(tǒng)關(guān)注各自的業(yè)務(wù)邏輯和數(shù)據(jù)庫(kù),且相互不干擾,降低了兩個(gè)系統(tǒng)的耦合性,提高了資源轉(zhuǎn)移過程的可靠性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題。

具體來說,相對(duì)第一數(shù)據(jù)庫(kù)向第一系統(tǒng)發(fā)送第一事件執(zhí)行結(jié)果所導(dǎo)致的數(shù)據(jù)丟失或者傳輸失敗(網(wǎng)絡(luò)原因?qū)е?,由第一系統(tǒng)主動(dòng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果的方式不會(huì)遺漏數(shù)據(jù)。第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果而非第二數(shù)據(jù)庫(kù),即使多次反復(fù)輪詢第一數(shù)據(jù)庫(kù),也不會(huì)給第二數(shù)據(jù)庫(kù)造成壓力而影響第二系統(tǒng)執(zhí)行第一事件的邏輯和效率。而第二系統(tǒng)向第二數(shù)據(jù)庫(kù)中存儲(chǔ)第一事件執(zhí)行結(jié)果也不會(huì)影響第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)僅僅存在同步的動(dòng)作,兩個(gè)系統(tǒng)在執(zhí)行各自邏輯的過程相互獨(dú)立,且每個(gè)系統(tǒng)都是可靠的,從而增強(qiáng)了兩個(gè)系統(tǒng)的合作實(shí)現(xiàn)的資源轉(zhuǎn)移的可靠性。

同時(shí),由于第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)通過同步保持?jǐn)?shù)據(jù)的一致,保證了第一系統(tǒng)能夠?qū)崟r(shí)處理第二系統(tǒng)存儲(chǔ)到第二數(shù)據(jù)庫(kù)中的事件執(zhí)行結(jié)果,提高了資源轉(zhuǎn)移的實(shí)時(shí)性,達(dá)到了客戶端及時(shí)獲得與第一事件相關(guān)的第一事件資源的技術(shù)效果。

可選地,為了保證第二數(shù)據(jù)庫(kù)中存儲(chǔ)第一事件執(zhí)行結(jié)果,以第二數(shù)據(jù)庫(kù)中存儲(chǔ)了第一事件執(zhí)行結(jié)果為完成了執(zhí)行第一事件的標(biāo)識(shí),即系統(tǒng)還包括:判斷單元,用于在第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中之后,判斷是否接收到第二數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)回執(zhí),其中,存儲(chǔ)回執(zhí)用于指示已經(jīng)完成將第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中;信息返回單元,用于在判斷出接收到第二數(shù)據(jù)庫(kù)發(fā)送的存儲(chǔ)回執(zhí)后,向客戶端返回用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行的信息。

用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行的信息,例如,“第一事件成功”,具體在第一事件為購(gòu)買行為時(shí),用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行的信息為“購(gòu)買成功”等信息。若第二系統(tǒng)沒有接收到存儲(chǔ)回執(zhí),可以回滾執(zhí)行第一事件,并向客戶端返回“購(gòu)買失敗”等信息。

通過上述實(shí)施例,獨(dú)立的第一系統(tǒng)和第二系統(tǒng)的獨(dú)立,以及第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)的獨(dú)立,降低了兩個(gè)系統(tǒng)的耦合,提高了資源轉(zhuǎn)移的可靠性,第二數(shù)據(jù)庫(kù)和第一數(shù)據(jù)庫(kù)的同步保證了資源轉(zhuǎn)移的實(shí)時(shí)性,從而解決了資源轉(zhuǎn)移的可靠性較低的技術(shù)問題,達(dá)到了提高資源轉(zhuǎn)移的可靠性的技術(shù)效果。

實(shí)施例5

根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述資源轉(zhuǎn)移的方法的服務(wù)器,如圖9所示,該服務(wù)器主要包括處理器601、設(shè)備接口602、網(wǎng)絡(luò)接口603、存儲(chǔ)器604,其中:

設(shè)備接口602用于連接終端或其他網(wǎng)絡(luò)設(shè)備;

網(wǎng)絡(luò)接口603用于連接服務(wù)器或者終端;

存儲(chǔ)器604用于存儲(chǔ)執(zhí)行上述終端測(cè)試方法的程序代碼,還可以存儲(chǔ)第一系統(tǒng)和第二系統(tǒng)的業(yè)務(wù)邏輯,以及第一事件執(zhí)行結(jié)果。

處理器601主要用于執(zhí)行如下操作:第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,所述第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,所述第一事件執(zhí)行結(jié)果由所述第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從所述第二數(shù)據(jù)庫(kù)同步到所述第一數(shù)據(jù)庫(kù)中;所述第一系統(tǒng)獲取在所述第一事件執(zhí)行完之后需返回給所述客戶端的第一事件資源;所述第一系統(tǒng)將所述第一事件資源返回給所述客戶端。

處理器601還用于執(zhí)行如下操作:所述第一系統(tǒng)獲取在所述第一事件執(zhí)行完之后需返回給所述客戶端的第一事件資源包括:所述第一系統(tǒng)從所述第一事件執(zhí)行結(jié)果中獲取與所述第一事件關(guān)聯(lián)的事件標(biāo)識(shí);所述第一系統(tǒng)從資源數(shù)據(jù)庫(kù)中獲取與所述事件標(biāo)識(shí)關(guān)聯(lián)的所述第一事件資源。

處理器601還用于執(zhí)行如下操作:所述事件標(biāo)識(shí)攜帶在所述第一事件執(zhí)行請(qǐng)求中,或者,所述事件標(biāo)識(shí)由所述第二系統(tǒng)在完成了對(duì)所述第一事 件的執(zhí)行時(shí)攜帶在所述第一事件執(zhí)行結(jié)果中。

處理器601還用于執(zhí)行如下操作:所述第一系統(tǒng)將所述第一事件資源返回給所述客戶端之后,所述方法還包括:所述第一系統(tǒng)為所述第一事件執(zhí)行結(jié)果添加狀態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)用于指示已經(jīng)在所述第一事件執(zhí)行完之后向所述客戶端返回所述第一事件資源;所述第一系統(tǒng)將添加所述狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果發(fā)送給所述第二數(shù)據(jù)庫(kù),其中,添加所述狀態(tài)標(biāo)識(shí)第一事件執(zhí)行結(jié)果從所述第二數(shù)據(jù)庫(kù)同步到所述第一數(shù)據(jù)庫(kù)中。

處理器601還用于執(zhí)行如下操作:所述第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果包括:所述第一系統(tǒng)采用一個(gè)或多個(gè)進(jìn)程輪詢所述從所述第一數(shù)據(jù)庫(kù)中的多個(gè)數(shù)據(jù)表,其中,每個(gè)所述數(shù)據(jù)表記錄多個(gè)事件執(zhí)行結(jié)果,每個(gè)所述進(jìn)程輪詢所述多個(gè)數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表;所述第一系統(tǒng)從所述多個(gè)事件執(zhí)行結(jié)果中讀取所述第一事件執(zhí)行結(jié)果。

處理器601還用于執(zhí)行如下操作:第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果包括:第一系統(tǒng)接收消息中間件轉(zhuǎn)發(fā)的指示信息,指示信息由第二系統(tǒng)發(fā)送給消息中間件,用于指示第二系統(tǒng)執(zhí)行第一事件得到第一事件執(zhí)行結(jié)果;第一系統(tǒng)在接收到指示信息后,從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果。

處理器601還用于執(zhí)行如下操作:在分布式服務(wù)器中設(shè)置多個(gè)所述第一系統(tǒng),所述第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果包括:多個(gè)所述第一系統(tǒng)中的任意一個(gè)或多個(gè)所述第一系統(tǒng)從所述第一數(shù)據(jù)庫(kù)中讀取所述第一事件執(zhí)行結(jié)果。

可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。

實(shí)施例6

本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)。可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以網(wǎng)絡(luò)中的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備。

可選地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:

s1,第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果由第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。

s2,第一系統(tǒng)獲取在第一事件執(zhí)行完之后需返回給客戶端的第一事件資源。

s3,第一系統(tǒng)將第一事件資源返回給客戶端。

可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:

s1,第二系統(tǒng)接收客戶端發(fā)送的用于請(qǐng)求執(zhí)行第一事件的第一事件執(zhí)行請(qǐng)求;

s2,第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中,以供第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并向客戶端返回第一事件資源,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中,第一事件資源由第一系統(tǒng)獲取。

可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

可選地,在本實(shí)施例中,處理器根據(jù)存儲(chǔ)介質(zhì)中已存儲(chǔ)的程序代碼執(zhí)行第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)客戶端發(fā)送的第一事件執(zhí)行請(qǐng)求所請(qǐng)求的第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果由第二系統(tǒng)存入到第二數(shù)據(jù)庫(kù)中,并從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中。第一系統(tǒng)獲取在第一事件執(zhí)行完之 后需返回給客戶端的第一事件資源。第一系統(tǒng)將第一事件資源返回給客戶端。

可選地,在本實(shí)施例中,處理器根據(jù)存儲(chǔ)介質(zhì)中已存儲(chǔ)的程序代碼執(zhí)行:第二系統(tǒng)接收客戶端發(fā)送的用于請(qǐng)求執(zhí)行第一事件的第一事件執(zhí)行請(qǐng)求;第二系統(tǒng)將第一事件執(zhí)行結(jié)果存儲(chǔ)在第二數(shù)據(jù)庫(kù)中,以供第一系統(tǒng)從第一數(shù)據(jù)庫(kù)中讀取第一事件執(zhí)行結(jié)果,并向客戶端返回第一事件資源,其中,第一事件執(zhí)行結(jié)果用于指示第二系統(tǒng)完成了對(duì)第一事件的執(zhí)行,第一事件執(zhí)行結(jié)果從第二數(shù)據(jù)庫(kù)同步到第一數(shù)據(jù)庫(kù)中,第一事件資源由第一系統(tǒng)獲取。

可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。

上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在上述計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)或多臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。

在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的客戶端,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦 合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
治多县| 临泽县| 华容县| 襄樊市| 大石桥市| 宁波市| 安多县| 闸北区| 无棣县| 上犹县| 苍梧县| 林州市| 长岛县| 新泰市| 特克斯县| 遵义县| 瓦房店市| 中方县| 集安市| 赤峰市| 遂宁市| 新竹市| 诸城市| 浦东新区| 玉环县| 西丰县| 佛学| 乌鲁木齐县| 新密市| 阿坝县| 姚安县| 保康县| 天峻县| 新丰县| 北川| 腾冲县| 深泽县| 凤凰县| 印江| 万安县| 襄樊市|