本申請屬于計算機數(shù)據(jù)處理技術領域,尤其涉及一種業(yè)務數(shù)據(jù)的處理方法、裝置及系統(tǒng)。
背景技術:
隨著互聯(lián)網(wǎng)和計算機技術的迅速發(fā)展,目前許多企業(yè)的業(yè)務系統(tǒng)部署向分布式系統(tǒng)發(fā)展,以應對日益增長的業(yè)務需求。
隨著業(yè)務的不斷發(fā)展,需要業(yè)務系統(tǒng),尤其是大規(guī)模分布式系統(tǒng)的生命周期中總會伴隨升級和改造,以應對業(yè)務快速發(fā)展給系統(tǒng)帶來的處理壓力。而系統(tǒng)產(chǎn)生的業(yè)務數(shù)據(jù)除自身外通常同時被其他如報表系統(tǒng)、文件生成等第三方系統(tǒng)使用。如圖1和圖2所示,圖1是現(xiàn)有中一種業(yè)務系統(tǒng)的內部結構示意圖,該業(yè)務系統(tǒng)包括提供對外服務接口模塊、內部業(yè)務邏輯實現(xiàn)模塊和數(shù)據(jù)存儲模塊,業(yè)務系統(tǒng)可以通過數(shù)據(jù)存儲模塊與數(shù)據(jù)庫交互,寫入業(yè)務數(shù)據(jù)或者讀取業(yè)務數(shù)據(jù)。圖2是現(xiàn)有中一種業(yè)務系統(tǒng)業(yè)務數(shù)據(jù)的生成與消費的示意圖,圖2中,業(yè)務系統(tǒng)獲取或產(chǎn)生的新的業(yè)務數(shù)據(jù)和寫入數(shù)據(jù)庫中,同時其他消費業(yè)務數(shù)據(jù)的應用可以從數(shù)據(jù)庫中讀取業(yè)務數(shù)據(jù)進行處理,如生成報表、頁面展示等。
而業(yè)務系統(tǒng)的改造升級常常包括內部業(yè)務邏輯的變更或者數(shù)據(jù)存儲結構/方式的變更,如圖3所示,圖3是現(xiàn)有中一種業(yè)務系統(tǒng)的業(yè)務邏輯和數(shù)據(jù)存儲改造的結構變更示意圖。如圖3中改造后系統(tǒng)結構部分所示,該業(yè)務系統(tǒng)改造的結果為分別使用新的業(yè)務邏輯實現(xiàn)模塊、新的數(shù)據(jù)存儲模塊、新的數(shù)據(jù)庫去替換系統(tǒng)原有各模塊。新舊模塊內業(yè)務數(shù)據(jù)格式及存儲方式均不同,由于對外服務接口模塊提供的對外的服務接口沒有變,故業(yè)務系統(tǒng)服務的消費者并不感知系統(tǒng)的內部改造。但對于每一個運行著舊版本系統(tǒng)的服務器而言均會面臨著將業(yè)務系統(tǒng)從舊邏輯舊存儲切換到新邏輯新存儲的過程,由于切換后業(yè)務數(shù)據(jù)已經(jīng)不再寫入圖3中所示類型a關系數(shù)據(jù)庫,往往會導致改造過程中使用新業(yè)務系統(tǒng)的數(shù)據(jù)消費應用無法繼續(xù)從原有的數(shù)據(jù)庫中讀取業(yè)務數(shù)據(jù),或者使用舊業(yè)務系統(tǒng)的消費應用也無法讀取新的數(shù)據(jù)庫中業(yè)務數(shù)據(jù),使得改造升級過程中業(yè)務系統(tǒng)的可靠性和業(yè)務數(shù)據(jù)的可用性降低,甚至會導致消費業(yè)務數(shù)據(jù)的報表,文件生成等第三方系統(tǒng)無法正常進行業(yè)務操作。
現(xiàn)有的一些方案中可以采用暫停業(yè)務系統(tǒng)服務,等改造升級完成后再開放服務,以保障業(yè)務系統(tǒng)的改造升級,但這樣會導致第三方系統(tǒng)的業(yè)務無法持續(xù)可用。其他一些方案中也可以采用可以設置在系統(tǒng)進行內部邏輯和存儲方案改造時,安排報表、文件生成等其他數(shù)據(jù)消費系統(tǒng)同時進行配合改造和上線,但多方系統(tǒng)的同時改造其實施成本和協(xié)調難度較大,風險較高,經(jīng)濟性也較差。例如系統(tǒng)a改造過程中,外部其它依賴系統(tǒng)a數(shù)據(jù)的應用b、c、d因為a的改動,被迫需要同時修改,改造范圍大引起風險范圍變大,會出現(xiàn)a改造成功但外圍b、c、d改造出現(xiàn)故障,導致產(chǎn)品不可用的風險。因此,在對業(yè)務系統(tǒng)進行內部邏輯和存儲方式的改造過程中,如何確保系統(tǒng)發(fā)布的中間狀態(tài)、以及系統(tǒng)異?;貪L狀態(tài)下數(shù)據(jù)高可用,使消費數(shù)據(jù)的報表、文件生成等第三方系統(tǒng)業(yè)務持續(xù)可用成為目前許多企業(yè)用戶迫切需要解決的問題。
技術實現(xiàn)要素:
本申請目的在于提供一種業(yè)務數(shù)據(jù)的處理方法、裝置及系統(tǒng),可以在對業(yè)務系統(tǒng)進行改造的過程中,確保業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù)高可用,使消費數(shù)據(jù)的報表、文件生成等第三方系統(tǒng)業(yè)務持續(xù)可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。
本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法、裝置及系統(tǒng)是這樣實現(xiàn)的:
一種業(yè)務數(shù)據(jù)的處理方法,所述方法包括:
基于接收到的業(yè)務的處理請求向舊業(yè)務邏輯和設置的新業(yè)務邏輯發(fā)送資源準備請求,以使所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源;
在接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息后,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的提交請求;
在接收到所述舊業(yè)務邏輯返回的所述業(yè)務提交成功的第三消息和所述新業(yè)務邏輯返回的所述業(yè)務提交成功的第四消息后,確認所述業(yè)務提交成功。
一種業(yè)務數(shù)據(jù)的處理裝置,所述裝置包括:
資源準備模塊,用于基于接收到的業(yè)務的處理請求向舊業(yè)務邏輯和設置的新業(yè)務邏輯發(fā)送資源準備請求,以使所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源;
提交處理模塊,用于在接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息后,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的提交請求;
提交結果處理模塊,用于在接收到所述舊業(yè)務邏輯返回的所述業(yè)務提交成功的第三消息和所述新業(yè)務邏輯返回的所述業(yè)務提交成功的第四消息后,確認所述業(yè)務提交成功。
一種業(yè)務系統(tǒng),包括:存儲器、處理器以及存儲在存儲器上并可在處理器上運行的計算機指令,
所述計算機指令被處理器執(zhí)行時實現(xiàn)以下步驟:
基于接收到的業(yè)務的處理請求向舊業(yè)務邏輯和設置的新業(yè)務邏輯發(fā)送資源準備請求,以使所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源;
在接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息后,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的提交請求;
在接收到所述舊業(yè)務邏輯返回的所述業(yè)務提交成功的第三消息和所述新業(yè)務邏輯返回的所述業(yè)務提交成功的第四消息后,確認所述業(yè)務提交成功。
一種業(yè)務系統(tǒng),包括舊業(yè)務邏輯實現(xiàn)模塊、舊數(shù)據(jù)存儲模塊、新業(yè)務邏輯實現(xiàn)模塊、新數(shù)據(jù)存儲模塊、處理器以及用于存儲處理器可執(zhí)行指令的存儲器,
所述處理器被配置成,用于接收到的業(yè)務的處理請求時,按照舊數(shù)據(jù)存儲模塊中設定的舊數(shù)據(jù)格式從舊數(shù)據(jù)庫中讀取數(shù)據(jù),準備對應于所述業(yè)務的舊業(yè)務邏輯處理資源,以及,按照新數(shù)據(jù)存儲模塊中設定的新數(shù)據(jù)格式從新數(shù)據(jù)庫中讀取數(shù)據(jù),準備對應于所述業(yè)務的新業(yè)務邏輯處理資源;還用于在確認所述舊業(yè)務邏輯處理資源和所述新業(yè)務邏輯處理資源準備成功后,使用所述舊業(yè)務邏輯實現(xiàn)模塊和新業(yè)務邏輯實現(xiàn)模塊對所述業(yè)務進行提交處理;還用于所述業(yè)務在所述舊業(yè)務邏輯實現(xiàn)模塊和所述新業(yè)務邏輯實現(xiàn)模塊中提交成功后,確認所述業(yè)務提交成功。
本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法、裝置及系統(tǒng),基于分布式事務在系統(tǒng)進行邏輯和存儲改造過程中,通過設計內部兩階段事務引擎實現(xiàn)數(shù)據(jù)雙寫。由于改造前后類型數(shù)據(jù)庫中均有業(yè)務數(shù)據(jù)寫入,故報表、文件生成等第三方系統(tǒng)在業(yè)務系統(tǒng)改造過程中可持續(xù)從類型關系數(shù)據(jù)庫讀取數(shù)據(jù)而不受影響,保障業(yè)務數(shù)據(jù)高可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。與此同時可以將改造系統(tǒng)風險控制在改造的單個系統(tǒng)范圍內,保障了業(yè)務系統(tǒng)乃至依賴于該系統(tǒng)數(shù)據(jù)的外部應用的穩(wěn)定性。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是現(xiàn)有中一種業(yè)務系統(tǒng)的內部結構示意圖;
圖2是現(xiàn)有中一種業(yè)務系統(tǒng)業(yè)務數(shù)據(jù)的生成與消費的示意圖;
圖3是本申請所述一種業(yè)務數(shù)據(jù)的處理方法一種實施例的方法流程圖;
圖4是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法另一個實施例場景的實施示意圖;
圖5是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法另一個實施例場景的實施示意圖
圖6是本申請?zhí)峁┑囊粋€示例中的分布式事務階段一的處理流程示意圖;
圖7是本申請?zhí)峁┑乃鲆环N業(yè)務數(shù)據(jù)的處理方法的另一種實施例的方法流程示意圖;
圖8是本申請?zhí)峁┑乃鲆环N業(yè)務數(shù)據(jù)的處理方法的另一種實施例的方法流程示意圖。
圖9是本申請?zhí)峁┑囊粋€示例中的分布式事務階段二的處理流程示意圖;
圖10是本申請?zhí)峁┑姆椒硪环N實施例應用場景中的分布式事務階段二的回滾處理流程示意圖;
圖11是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置的一個實施例模塊結構示意圖;
圖12是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置另一個實施例模塊結構示意圖;
圖13是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置另一個實施例模塊結構示意圖;
圖14是本申請?zhí)峁┮环N業(yè)務系統(tǒng)一種實施例的構架結構示意圖。
具體實施方式
為了使本技術領域的人員更好地理解本申請中的技術方案,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本申請保護的范圍。
圖4是本申請所述一種業(yè)務數(shù)據(jù)的處理方法一種實施例的方法流程圖。雖然本申請?zhí)峁┝巳缦率鰧嵤├蚋綀D所示的方法操作步驟或裝置結構,但基于常規(guī)或者無需創(chuàng)造性的勞動在所述方法或裝置中可以包括更多或者部分合并后更少的操作步驟或模塊單元。在邏輯性上不存在必要因果關系的步驟或結構中,這些步驟的執(zhí)行順序或裝置的模塊結構不限于本申請實施例或附圖所示的執(zhí)行順序或模塊結構。所述的方法或模塊結構的在實際中的裝置或終端產(chǎn)品應用時,可以按照實施例或者附圖所示的方法或模塊結構進行順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境、甚至包括分布式處理的實施環(huán)境)。
以下為了清楚起見,以具體的系統(tǒng)改造過程中外部作業(yè)調用使用時系統(tǒng)的業(yè)務數(shù)據(jù)處理為應用場景進行說明。但是,本領域技術人員能夠理解到,可以將本方案的實質精神應用到其他系統(tǒng)內部邏輯或存儲方法改造時外部應用調用系統(tǒng)內部數(shù)據(jù)進行消費時的場景下。即,基于分布式事務在系統(tǒng)進行邏輯和存儲改造過程中,通過設計內部兩階段事務引擎實現(xiàn)數(shù)據(jù)雙寫,保障業(yè)務數(shù)據(jù)高可用,使消費數(shù)據(jù)的報表、文件生成等第三方系統(tǒng)業(yè)務持續(xù)可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。
具體的一種實施例如圖4所示,本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法的一種實施例中,所述方法可以包括:
s1:基于接收到的業(yè)務的處理請求向舊業(yè)務邏輯和設置的新業(yè)務邏輯發(fā)送資源準備請求,以使所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源。
在本實施例應用場景中,處于改造升級的業(yè)務系統(tǒng)仍然可以正常接收外部其他數(shù)據(jù)消費用于的業(yè)務處理請求。如報表應用可以使用業(yè)務系統(tǒng)進行生成報表的作業(yè),業(yè)務系統(tǒng)接收到該作業(yè)業(yè)務的處理請求,然后經(jīng)過系內部處理后可以提交作業(yè),并將作為完成后形成的報表返回給所述業(yè)務系統(tǒng)外部的報表應用。
在本申請實施例中,業(yè)務系統(tǒng)升級改造時,可以保持并繼續(xù)使用業(yè)務系統(tǒng)業(yè)務處理的舊業(yè)務邏輯或者存儲舊數(shù)據(jù)格式的舊數(shù)據(jù)庫。所述的業(yè)務系統(tǒng)升級改造可以包括業(yè)務系統(tǒng)內部業(yè)務數(shù)據(jù)處理邏輯的改造,或者數(shù)據(jù)存儲格式/方式/數(shù)據(jù)庫類型的改造、遷移等。當然,所述的升級改造也可以同時包括系統(tǒng)的邏輯的變更和數(shù)據(jù)存儲變更的實施場景。例如本實施例中,將原來業(yè)務系統(tǒng)業(yè)務數(shù)據(jù)處理的舊業(yè)務邏輯、存儲就數(shù)據(jù)格式的類型a關系數(shù)據(jù)庫改造變更使用新業(yè)務邏輯處理業(yè)務數(shù)據(jù)、使用新數(shù)據(jù)格式類型b關系數(shù)據(jù)庫存儲業(yè)務數(shù)據(jù)。
在具體實施過程中,由于業(yè)務系統(tǒng)保持了新舊兩個業(yè)務實現(xiàn)邏輯,因此,在接收到業(yè)務的處理請求后,可以分別向舊業(yè)務邏輯和改造升級使用的新業(yè)務邏輯發(fā)送資源準備請求,以使所述業(yè)務系統(tǒng)中的舊業(yè)務邏輯和新業(yè)務邏輯量業(yè)務處理的參與者都準備對應于所述業(yè)務的處理資源。所述的舊業(yè)務邏輯和新業(yè)務邏輯,可以理解為預先設計好的對業(yè)務數(shù)據(jù)件處理的處理方法/步驟/執(zhí)行動作和順序等,可以包括數(shù)據(jù)處理和/或數(shù)據(jù)存儲(數(shù)據(jù)讀寫或存儲方式/數(shù)據(jù)格式控制)階段,可以由計算機可執(zhí)行代碼或其他邏輯電路實現(xiàn)。
本申請實施例利用分布式事務處理機制,在業(yè)務系統(tǒng)內部將業(yè)務實現(xiàn)邏輯當作事務的參與者,同時可以在業(yè)務系統(tǒng)內部設置事務引擎負責事務服務管理(相當于分布式事務機制中的事務發(fā)起者)。業(yè)務系統(tǒng)改造過程中,對于一個外部請求,業(yè)務系統(tǒng)內部可以通過事務引擎協(xié)調新舊兩個業(yè)務實現(xiàn)邏輯執(zhí)行。所述的分布式事務處理過程通常包括以下兩個階段:
階段一:
1、事務發(fā)起者(事務管理器)向所參與者發(fā)送資源準備請求;
2、參與者收到資源準備請求后,進行準備操作,并答復發(fā)起者是否準備成功。
相應的,在本實施例應用場景中,可以設置事務引擎,負責業(yè)務數(shù)據(jù)處理中的資源調配等事務管理。在接收到外部作業(yè)的業(yè)務處理請求時,可以向參與者(即本實施例所述的舊業(yè)務邏輯和新業(yè)務邏輯)發(fā)送資源準備請求,以準備處理所述業(yè)務的處理資源。
s2:在接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息后,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的提交請求。
本申請實施例中,由于改造前后的數(shù)據(jù)庫均有業(yè)務數(shù)據(jù)寫入,或者改造前后使用新舊兩套業(yè)務實現(xiàn)邏輯處理業(yè)務數(shù)據(jù),因此,報表、文件生成等第三方應用在業(yè)務系統(tǒng)升級改造過程中可以持續(xù)的從業(yè)務系統(tǒng)的數(shù)據(jù)庫中讀取數(shù)據(jù)或者實現(xiàn)業(yè)務邏輯,保障第三方應用業(yè)務不受影響。在本申請實施例中,舊業(yè)務邏輯和新業(yè)務邏輯可以準備業(yè)務數(shù)據(jù)處理需所需的處理資源,若所述處理資源準備成功,則可以向上述所述的事務引擎(事務發(fā)起者)返回處理資源準備成功的消息。例如,使用舊業(yè)務邏輯采用舊數(shù)據(jù)格式寫入舊數(shù)據(jù)庫成功時可以返回舊業(yè)務邏輯處理資源準備成功的第一消息;當使用新業(yè)務邏輯采用新數(shù)據(jù)格式寫入信息數(shù)據(jù)庫成功時可以返回新業(yè)務邏輯處理資源準備成功的第二消息。然后在可以在確定所有的事務參與者(即本實施例應用場景中的舊業(yè)務邏輯和新業(yè)務邏輯)的業(yè)務的處理資源準備成功后才發(fā)送提交作業(yè)的處理請求。
上述處理確認接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息相當于分布式事務中的階段二,事務發(fā)起者收到所有參與者準備成功的答復后向所有參與者發(fā)起提交請求。
s3:在接收到所述舊業(yè)務邏輯返回的所述業(yè)務提交成功的第三消息和所述新業(yè)務邏輯返回的所述業(yè)務提交成功的第四消息后,確認所述業(yè)務提交成功。
提交業(yè)務進行處理后,業(yè)務系統(tǒng)中的新舊兩個業(yè)務邏輯可以同時對業(yè)務進行處理。如同時使用舊數(shù)據(jù)庫中的數(shù)據(jù)和舊業(yè)務實現(xiàn)邏輯生成舊業(yè)務報表和使用新舊數(shù)據(jù)的中數(shù)據(jù)和新業(yè)務實現(xiàn)邏輯生成新業(yè)務報表。當基于接收到的新舊兩個業(yè)務邏輯業(yè)務提交處理成功的消息后,確認當前處理的業(yè)務提交處理成功。當然,在一些實施場景中,數(shù)據(jù)雙寫或結合兩個業(yè)務實現(xiàn)邏輯可以生成兩個業(yè)務提交處理的結果,如生成兩個報表。
一般的,系統(tǒng)內部新舊兩個邏輯分布提交外部作業(yè),可以分別對應有一個結果。但是對于外部消費業(yè)務數(shù)據(jù)一方而言通常是只有一個輸出結果的。因此,本實施例中可以設置將其中一個結果做處理后作為對外輸出的結果。這樣,系統(tǒng)外部只感知系統(tǒng)內部作業(yè)處理有沒有成功,至于系統(tǒng)內部如何執(zhí)行、是否執(zhí)行了新舊兩個邏輯等不被外部調用應用所關心。利用本申請實施方案,可以有效保障系統(tǒng)改造升級過程中的數(shù)據(jù)可靠用,例如在統(tǒng)a改造過程中,外部其它依賴系統(tǒng)a數(shù)據(jù)的應用b、c、d不受影響,就好像a從未發(fā)生過變更一樣。這樣在系統(tǒng)a改造過程中,b、c、d的功能依然是可用的。這樣就避免了b、c、d會因為a的改動被迫需要同時修改,避免了改造范圍擴大,減少改造風險。
本發(fā)明基于分布式事務機制,在應用內部將業(yè)務實現(xiàn)邏輯當作事務參與者,同時在內部設計事務引擎負責事務管理(事務發(fā)起者)。對于一個外部請求業(yè)務系統(tǒng)內部通過事務引擎協(xié)調新舊兩個業(yè)務實現(xiàn)邏輯執(zhí)行。由于新舊邏輯操作的數(shù)據(jù)庫不同,進而實現(xiàn)了數(shù)據(jù)的雙寫。這樣在系統(tǒng)改造期間消費業(yè)務數(shù)據(jù)的報表、文件生成等第三方系統(tǒng)就可以繼續(xù)從原有的數(shù)據(jù)庫中獲取數(shù)據(jù),解決了系統(tǒng)改造過程中數(shù)據(jù)高可用問題。與此同時將改造系統(tǒng)風險控制在改造的單個系統(tǒng)范圍內,保障了業(yè)務系統(tǒng)乃至依賴于該系統(tǒng)數(shù)據(jù)的外部應用的穩(wěn)定性。
圖5是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法另一個實施例場景的實施示意圖。在圖5中,雖然使用了新的類型b關系數(shù)據(jù)庫,但由于改造前后類型a數(shù)據(jù)庫中均有業(yè)務數(shù)據(jù)寫入,故報表、文件生成等第三方系統(tǒng)在業(yè)務系統(tǒng)改造過程中可持續(xù)從類型a關系數(shù)據(jù)庫讀取數(shù)據(jù)而不受影響,保障系統(tǒng)外部其他數(shù)據(jù)消費應用正常使用原業(yè)務系統(tǒng)的服務。
具體的一個示例中,本申請?zhí)峁┑闹袠I(yè)務系統(tǒng)對外部請求的處理流程可以包括兩個階段。例如圖6所示的分布式事務階段一,圖6是本申請?zhí)峁┑囊粋€示例中的分布式事務階段一的處理流程示意圖,圖6中新舊數(shù)據(jù)庫寫入順序可以換,本實施例中可以只需要保證新舊數(shù)據(jù)庫都寫入成功即可。本申請?zhí)峁┑乃龇椒ǖ牧硪环N實施例中,所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源,可以包括:
s101:根據(jù)所述資源準備請求使用舊業(yè)務邏輯將所述業(yè)務的業(yè)務數(shù)據(jù)按照舊數(shù)據(jù)格式寫入舊數(shù)據(jù)庫;以及,
s102:根據(jù)所述資源準備請求使用新業(yè)務邏輯將所述業(yè)務的業(yè)務數(shù)據(jù)按照新數(shù)據(jù)格式寫入新數(shù)據(jù)庫。
圖7是本申請?zhí)峁┑乃鲆环N業(yè)務數(shù)據(jù)的處理方法的另一種實施例的方法流程示意圖.另一種實施例中,若業(yè)務系統(tǒng)在處理業(yè)務請求時出現(xiàn)異常情況,如一直沒有收到參與者的答復或者收到失敗的答復,則向所有參與者發(fā)起回滾請求,使業(yè)務系統(tǒng)恢復到上一次正確處理業(yè)務數(shù)據(jù)的狀態(tài)。因此,本申請?zhí)峁┑乃龇椒ǖ牧硪环N實施例中,所述方法還可以包括:
s4:在滿足下述任意一個條件時,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的處理資源回滾請求:
在預定響應時間內沒有接收到所述第一消息和第二消息;
接收到所述舊業(yè)務邏輯和新業(yè)務邏輯中的至少一個發(fā)送來的所述處理資源準備失敗的答復消息。
另一種實施中,進一步的,業(yè)務系統(tǒng)可以在接收到所述舊業(yè)務邏輯返回的處理資源回滾成功的第五消息和所述新業(yè)務邏輯返回的處理資源回滾成功的第六消息后,確認所述業(yè)務的處理資源回滾成功?;诜植际绞聞赵谙到y(tǒng)進行邏輯和存儲改造過程中,通過設計內部兩階段事務引擎實現(xiàn)數(shù)據(jù)雙寫,保障業(yè)務數(shù)據(jù)高可用。
上述實施例采用在業(yè)務系統(tǒng)使用的舊業(yè)務邏輯和新業(yè)務邏輯中任意一個業(yè)務處理失敗時均指向資源回滾,保障業(yè)務系統(tǒng)可靠性,降低業(yè)務系統(tǒng)改造風險。并且一種實施方式在,在回滾處理過程中,可以設置只有在所有的邏輯單元都回滾處理成功后才確認業(yè)務系統(tǒng)回滾處理成功。否則,可以發(fā)出警告提示或者執(zhí)行其他預定的處理措施,以保障系統(tǒng)的安全、可靠。
圖8是本申請?zhí)峁┑乃鲆环N業(yè)務數(shù)據(jù)的處理方法的另一種實施例的方法流程示意圖。如圖8所示,本申請?zhí)峁┑乃龇椒ǖ牧硪环N實施例中,所述方法還可以包括:
s5:在滿足下述任意一個條件時,啟動定時任務,所述定時任務被設置成在延遲預定時間后重新向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務提交請求:
在預定響應時間內沒有接收到所述第三消息和第四消息;
接收到所述舊業(yè)務邏輯和新業(yè)務邏輯中的至少一個發(fā)送來的所述業(yè)務提交失敗的答復消息。
圖9是本申請?zhí)峁┑囊粋€示例中的分布式事務階段二的處理流程示意圖。圖10是本申請?zhí)峁┑姆椒硪环N實施例應用場景中的分布式事務階段二的回滾處理流程示意圖。事務引擎會收到兩個提交成功的作業(yè)反饋,那么此時事務引擎會只有收到兩個都成功的時候才確認整個分布式事務處理成功。
如果有一個失敗,事務引擎會返回提交失敗,一種實施方式中可以設置不會進行回滾操作。因為這里是“分布式事務階段二提交”的情況,事務引擎會等待分布式事務發(fā)起者內部的定時任務重新調用事務引擎進行提交直到成功。
本申請?zhí)峁┑乃龇椒ǖ钠渌麑嵤├?,接收到所述業(yè)務的處理請求之后,所述方法還包括:
初始化所述舊業(yè)務邏輯和新業(yè)務邏輯的運行記錄;
相應的,所述發(fā)送資源準備請求包括:在確定所述舊業(yè)務邏輯和新業(yè)務邏輯的運行記錄初始化成功后發(fā)送所述資源準備請求。
由于是兩階段事務,可以簡單理解為兩階段事務的處理過程是由兩次獨立的請求才能完成的。本實施例中初始化運行記錄,就是在第一個請求過程中記錄下來我做了什么操作。第二個請求到來時查詢出第一個請求保存下來的記錄,就知道上一個請求做了什么,下面就可以接著繼續(xù)處理,提高和保障處理效率。
本申請?zhí)峁┑乃龇椒ǖ钠渌麑嵤├?,發(fā)送所述業(yè)務的提交請求之前,所述方法還包括:
校驗所述舊業(yè)務邏輯和新業(yè)務邏輯的運行記錄;
相應的,所述發(fā)送所述業(yè)務的提交請求包括:在確定所述舊業(yè)務邏輯和新業(yè)務邏輯的運行記錄校驗成功后發(fā)送所述業(yè)務提交請求。
本申請?zhí)峁┑乃龇椒ǖ钠渌麑嵤├?,發(fā)送所述業(yè)務的處理資源回滾請求之前,所述方法還包括:
校驗所述舊業(yè)務邏輯和新業(yè)務邏輯的運行記錄;
相應的,所述發(fā)送所述業(yè)務的處理資源回滾請求包括:在確定所述舊業(yè)務邏輯和新業(yè)務邏輯的運行記錄校驗成功后發(fā)送處理資源回滾請求。
上述實施例應用場景所示的實施方案,通過在系統(tǒng)例如系統(tǒng)a內部設計事務引擎,將改造范圍和風險降到了最小,僅在內部解決。最壞情況下,若系統(tǒng)a改造出現(xiàn)問題,也可以快速回滾系統(tǒng)a,而非傳統(tǒng)方案連帶回滾一系列外圍b、c、d系統(tǒng),造成大面積產(chǎn)品不可用影響。同時系統(tǒng)a改造后,外部其它依賴系統(tǒng)a數(shù)據(jù)的應用b、c、d不受影響,就好像a從未發(fā)生過變更一樣。從而保障了整個產(chǎn)品線的穩(wěn)定性。
本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理方法,基于分布式事務在系統(tǒng)進行邏輯和存儲改造過程中,通過設計內部兩階段事務引擎實現(xiàn)數(shù)據(jù)雙寫。由于改造前后類型數(shù)據(jù)庫中均有業(yè)務數(shù)據(jù)寫入,故報表、文件生成等第三方系統(tǒng)在業(yè)務系統(tǒng)改造過程中可持續(xù)從類型關系數(shù)據(jù)庫讀取數(shù)據(jù)而不受影響,保障業(yè)務數(shù)據(jù)高可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。與此同時可以將改造系統(tǒng)風險控制在改造的單個系統(tǒng)范圍內,保障了業(yè)務系統(tǒng)乃至依賴于該系統(tǒng)數(shù)據(jù)的外部應用的穩(wěn)定性。
基于本申請所述的業(yè)務數(shù)據(jù)的處理方法,本申請還提供一種業(yè)務數(shù)據(jù)的處理裝置。圖11是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置的一個實施例模塊結構示意圖,如圖11所示,所述裝置可以包括:
資源準備模塊101,可以用于基于接收到的業(yè)務的處理請求向舊業(yè)務邏輯和設置的新業(yè)務邏輯發(fā)送資源準備請求,以使所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源;
提交處理模塊102,可以用于在接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息后,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的提交請求;
結果處理模塊103,可以用于在接收到所述舊業(yè)務邏輯返回的所述業(yè)務提交成功的第三消息和所述新業(yè)務邏輯返回的所述業(yè)務提交成功的第四消息后,確認所述業(yè)務提交成功。
本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置,在系統(tǒng)進行邏輯和存儲改造過程中,通過設計內部兩階段事務引擎實現(xiàn)數(shù)據(jù)雙寫。由于改造前后類型數(shù)據(jù)庫中均有業(yè)務數(shù)據(jù)寫入,故報表、文件生成等第三方系統(tǒng)在業(yè)務系統(tǒng)改造過程中可持續(xù)從類型關系數(shù)據(jù)庫讀取數(shù)據(jù)而不受影響,保障業(yè)務數(shù)據(jù)高可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。與此同時可以將改造系統(tǒng)風險控制在改造的單個系統(tǒng)范圍內,保障了業(yè)務系統(tǒng)乃至依賴于該系統(tǒng)數(shù)據(jù)的外部應用的穩(wěn)定性。
圖12是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置另一個實施例模塊結構示意圖。如前述所述,所述裝置的另一種實施例中,所述裝置還可以包括:
回滾處理模塊104,可以用于在滿足下述任意一個條件時,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的處理資源回滾請求:
在預定響應時間內沒有接收到所述第一消息和第二消息;
接收到所述舊業(yè)務邏輯和新業(yè)務邏輯中的至少一個發(fā)送來的所述處理資源準備失敗的答復消息。
圖13是本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置另一個實施例模塊結構示意圖。如前述所述,所述裝置的另一種實施例中,所述裝置還可以包括:
重提交模塊105,可以用于在滿足下述任意一個條件時,啟動定時任務,所述定時任務被設置成在延遲預定時間后重新向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務提交請求:
在預定響應時間內沒有接收到所述第三消息和第四消息;
接收到所述舊業(yè)務邏輯和新業(yè)務邏輯中的至少一個發(fā)送來的所述業(yè)務提交失敗的答復消息。
上述所述裝置的具體實現(xiàn)邏輯實現(xiàn)方式與方法相似,可以參照前述方法相關描述,在此不做贅述。
本申請?zhí)峁┑囊环N業(yè)務數(shù)據(jù)的處理裝置,基于分布式事務在系統(tǒng)進行邏輯和存儲改造過程中,通過設計內部兩階段事務引擎實現(xiàn)數(shù)據(jù)雙寫。由于改造前后類型數(shù)據(jù)庫中均有業(yè)務數(shù)據(jù)寫入,故報表、文件生成等第三方系統(tǒng)在業(yè)務系統(tǒng)改造過程中可持續(xù)從類型關系數(shù)據(jù)庫讀取數(shù)據(jù)而不受影響,保障業(yè)務數(shù)據(jù)高可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。與此同時可以將改造系統(tǒng)風險控制在改造的單個系統(tǒng)范圍內,保障了業(yè)務系統(tǒng)乃至依賴于該系統(tǒng)數(shù)據(jù)的外部應用的穩(wěn)定性。
前述所述方法或裝置,可以用于各種升級改造過程中的業(yè)務系統(tǒng),以保障業(yè)務系統(tǒng)內部邏輯或數(shù)據(jù)存儲結構改造升級等變更時的業(yè)務數(shù)據(jù)高可用,使消費數(shù)據(jù)的第三方系統(tǒng)業(yè)務持續(xù)可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。因此,本申請還提供一種業(yè)務系統(tǒng),包括:存儲器、處理器以及存儲在存儲器上并可在處理器上運行的計算機指令,
所述計算機指令被處理器執(zhí)行時實現(xiàn)以下步驟:
基于接收到的業(yè)務的處理請求向舊業(yè)務邏輯和設置的新業(yè)務邏輯發(fā)送資源準備請求,以使所述舊業(yè)務邏輯和新業(yè)務邏輯準備對應于所述資源準備請求的處理資源;
在接收到所述舊業(yè)務邏輯返回的所述處理資源準備成功的第一消息和所述新業(yè)務邏輯返回的所述處理資源準備成功的第二消息后,向所述舊業(yè)務邏輯和新業(yè)務邏輯發(fā)送所述業(yè)務的提交請求;
在接收到所述舊業(yè)務邏輯返回的所述業(yè)務提交成功的第三消息和所述新業(yè)務邏輯返回的所述業(yè)務提交成功的第四消息后,確認所述業(yè)務提交成功。
本申請還提供另一種業(yè)務系統(tǒng),包括舊業(yè)務邏輯實現(xiàn)模塊、舊數(shù)據(jù)存儲模塊、新業(yè)務邏輯實現(xiàn)模塊、新數(shù)據(jù)存儲模塊、處理器以及用于存儲處理器可執(zhí)行指令的存儲器,
其中,所述處理器被配置成,可以用于接收到的業(yè)務的處理請求時,按照舊數(shù)據(jù)存儲模塊中設定的舊數(shù)據(jù)格式從舊數(shù)據(jù)庫中讀取數(shù)據(jù),準備對應于所述業(yè)務的舊業(yè)務邏輯處理資源,以及,按照新數(shù)據(jù)存儲模塊中設定的新數(shù)據(jù)格式從新數(shù)據(jù)庫中讀取數(shù)據(jù),準備對應于所述業(yè)務的新業(yè)務邏輯處理資源;還用于在確認所述舊業(yè)務邏輯處理資源和所述新業(yè)務邏輯處理資源準備成功后,使用所述舊業(yè)務邏輯實現(xiàn)模塊和新業(yè)務邏輯實現(xiàn)模塊對所述業(yè)務進行提交處理;還用于所述業(yè)務在所述舊業(yè)務邏輯實現(xiàn)模塊和所述新業(yè)務邏輯實現(xiàn)模塊中提交成功后,確認所述業(yè)務提交成功。
圖14是本申請?zhí)峁┮环N業(yè)務系統(tǒng)一種實施例的構架結構示意圖。
本申請目的在于提供一種業(yè)務數(shù)據(jù)的處理方法、裝置及系統(tǒng),可以在對業(yè)務系統(tǒng)進行改造的過程中,確保業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù)高可用,使消費數(shù)據(jù)的報表、文件生成等第三方系統(tǒng)業(yè)務持續(xù)可用,提高業(yè)務系統(tǒng)的可靠性,降低改造風險、難度和實施成本。
盡管本申請內容中提到設計新舊兩個業(yè)務的實現(xiàn)邏輯、基于應答的消息確認、邏輯運行記錄的校驗和初始化、新舊數(shù)據(jù)庫的雙寫等之類的不同事物參與者定義、業(yè)務處理邏輯實現(xiàn)方式、信息交互、計算、判斷等描述,但是,本申請并不局限于必須是符合行業(yè)通信標準、標準數(shù)據(jù)/函數(shù)結構、標準設計語言處理方法或本申請實施例所描述的情況。某些行業(yè)標準或者使用自定義方式或實施例描述的實施基礎上略加修改后的實施方案也可以實現(xiàn)上述實施例相同、等同或相近、或變形后可預料的實施效果。應用這些修改或變形后的數(shù)據(jù)定義、存儲、判斷、設置方式等獲取的實施例,仍然可以屬于本申請的可選實施方案范圍之內。
在20世紀90年代,對于一個技術的改進可以很明顯地區(qū)分是硬件上的改進(例如,對二極管、晶體管、開關等電路結構的改進)還是軟件上的改進(對于方法流程的改進)。然而,隨著技術的發(fā)展,當今的很多方法流程的改進已經(jīng)可以視為硬件電路結構的直接改進。設計人員幾乎都通過將改進的方法流程編程到硬件電路中來得到相應的硬件電路結構。因此,不能說一個方法流程的改進就不能用硬件實體模塊來實現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設計人員自行編程來把一個數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請芯片制造廠商來設計和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來實現(xiàn),它與程序開發(fā)撰寫時所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當?shù)姆绞綄崿F(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲可由該(微)處理器執(zhí)行的計算機可讀程序代碼(例如軟件或固件)的計算機可讀介質、邏輯門、開關、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲器控制器還可以被實現(xiàn)為存儲器的控制邏輯的一部分。本領域技術人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)控制器以外,完全可以通過將方法步驟進行邏輯編程來使得控制器以邏輯門、開關、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種控制器可以被認為是一種硬件部件,而對其內包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內的結構?;蛘呱踔?,可以將用于實現(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部件內的結構。
上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或實體實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設備為計算機。具體的,計算機例如可以為個人計算機、膝上型計算機、車載人機交互設備、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導航設備、電子郵件設備、游戲控制臺、平板計算機、可穿戴設備或者這些設備中的任何設備的組合。
雖然本申請?zhí)峁┝巳鐚嵤├蛄鞒虉D所述的方法操作步驟,但基于常規(guī)或者無創(chuàng)造性的手段可以包括更多或者更少的操作步驟。實施例中列舉的步驟順序僅僅為眾多步驟執(zhí)行順序中的一種方式,不代表唯一的執(zhí)行順序。在實際中的裝置或終端產(chǎn)品執(zhí)行時,可以按照實施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境,甚至為分布式數(shù)據(jù)處理環(huán)境)。術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、產(chǎn)品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、產(chǎn)品或者設備所固有的要素。在沒有更多限制的情況下,并不排除在包括所述要素的過程、方法、產(chǎn)品或者設備中還存在另外的相同或等同要素。
為了描述的方便,描述以上裝置時以功能分為各種模塊分別描述。當然,在實施本申請時可以把各模塊的功能在同一個或多個軟件和/或硬件中實現(xiàn),也可以將實現(xiàn)同一功能的模塊由多個子模塊或子單元的組合實現(xiàn)等。以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
本領域技術人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)控制器以外,完全可以通過將方法步驟進行邏輯編程來使得控制器以邏輯門、開關、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種控制器可以被認為是一種硬件部件,而對其內部包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內的結構?;蛘呱踔?,可以將用于實現(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部件內的結構。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或閃存(flashram)。內存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitorymedia),如調制的數(shù)據(jù)信號和載波。
本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。