亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

訂單信息采集方法及裝置與流程

文檔序號:11627920閱讀:314來源:國知局
訂單信息采集方法及裝置與流程

本公開涉及互聯(lián)網(wǎng)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種訂單信息采集方法和裝置。



背景技術(shù):

隨著互聯(lián)網(wǎng)應(yīng)用的普及,對海量數(shù)據(jù)的存儲和訪問需求日益迫切。在一個為游戲玩家提供在線支付功能的應(yīng)用場景,采用分布式存儲系統(tǒng)將訂單信息分散存儲在不同的數(shù)據(jù)庫和訂單表中,減輕每個數(shù)據(jù)庫處理訂單信息的壓力,能實時處理多個用戶集中于同一時間段下發(fā)的訂單信息,且能夠根據(jù)系統(tǒng)的承載能力和當(dāng)前負(fù)載情況來隨時擴容數(shù)據(jù)庫。如需查詢分布式存儲系統(tǒng)存儲的訂單信息,需要將分布式存儲系統(tǒng)存儲的訂單信息導(dǎo)出,然后將導(dǎo)出的訂單信息導(dǎo)入到一張訂單統(tǒng)計表中,通過對該訂單統(tǒng)計表的訪問實現(xiàn)對訂單信息的查詢。

在現(xiàn)有技術(shù)中,如需采集分布式存儲系統(tǒng)存儲的訂單信息,需要將分布式存儲系統(tǒng)存儲的訂單信息導(dǎo)出,然后將導(dǎo)出的訂單信息導(dǎo)入到一張訂單統(tǒng)計表中。當(dāng)分布式存儲系統(tǒng)存儲的訂單信息數(shù)據(jù)量變得非常大,由于難以對大數(shù)據(jù)量的訂單信息進(jìn)行頻繁的導(dǎo)入、導(dǎo)出操作,將導(dǎo)致不能對訂單信息進(jìn)行實時采集。



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

為了解決相關(guān)技術(shù)中存在的由于難以對大數(shù)據(jù)量的訂單信息進(jìn)行頻繁的導(dǎo)入、導(dǎo)出操作,導(dǎo)致不能對訂單信息進(jìn)行實時采集的問題。本公開提供了一種訂單信息采集方法和裝置。

一種訂單信息采集方法,所述方法包括:

為接收的訂單信息分配訂單號,將所述訂單信息存入到對應(yīng)所述訂單號數(shù)據(jù)庫和訂單表中;

在訂單事務(wù)表中添加對應(yīng)所述訂單信息的訂單事務(wù)記錄;

根據(jù)所述訂單事務(wù)記錄,將對應(yīng)所述訂單信息復(fù)制到訂單統(tǒng)計表中。

在其中一個示例性實施例中,所述在訂單事務(wù)表中添加對應(yīng)所述訂單信息

的訂單事務(wù)記錄,還包括步驟:

通過所述訂單信息的訂單號,獲取所述訂單事務(wù)記錄的事務(wù)號。

在其中一個示例性實施例中,所述根據(jù)所述訂單事務(wù)記錄,將對應(yīng)所述訂

單信息復(fù)制到訂單統(tǒng)計表中,包括步驟:

將所述訂單信息添加到消息隊列中;

根據(jù)所述訂單事務(wù)記錄,讀取所述消息隊列中的所述訂單信息;

將讀取的所述訂單信息復(fù)制到訂單統(tǒng)計庫中。

在其中一個示例性實施例中,所述根據(jù)所述訂單事務(wù)記錄,讀取所述消息

隊列中的所述訂單信息,包括步驟:

讀取對應(yīng)所述訂單信息的所述訂單事務(wù)記錄;

根據(jù)讀取到的所述訂單事務(wù)記錄為未處理記錄,讀取所述消息隊列中的所述訂單信息。

在其中一個示例性實施例中,所述將讀取的所述訂單信息復(fù)制到訂單統(tǒng)計

庫中,包括步驟:

獲取訂單信息和查詢維度索引信息各自對應(yīng)的訂單事務(wù)處理記錄;

根據(jù)所述訂單事務(wù)處理記錄,分別將訂單信息和查詢維度索引信息復(fù)制到

訂單統(tǒng)計庫中;

更新所述訂單事務(wù)處理記錄。

一種訂單信息采集裝置,包括:

存儲模塊,用于為接收的訂單信息分配訂單號,將所述訂單信息存入到對應(yīng)所述訂單號數(shù)據(jù)庫和訂單表中;

同步處理模塊,用于在訂單事務(wù)表中添加對應(yīng)所述訂單信息的訂單事務(wù)記錄;

異步處理模塊,用于根據(jù)所述訂單事務(wù)記錄,將對應(yīng)所述訂單信息復(fù)制到訂單統(tǒng)計表中。

在其中一個示例性實施例中,所述同步處理模塊,還包括:

事務(wù)號獲取單元,用于通過所述訂單信息的訂單號,獲取所述訂單事務(wù)記

錄的事務(wù)號。

在其中一個示例性實施例中,所述異步處理模塊,包括:

消息添加單元,用于將所述訂單信息添加到消息隊列中;

消息讀取單元,用于根據(jù)所述訂單事務(wù)記錄,讀取所述消息隊列中的所述訂單信息;

消息處理單元,用于將讀取的所述訂單信息復(fù)制到訂單統(tǒng)計庫中。

在其中一個示例性實施例中,所述消息讀取單元,包括:

訂單事務(wù)記錄讀取子單元,用于讀取對應(yīng)所述訂單信息的所述訂單事務(wù)記錄;

訂單信息讀取子單元,用于根據(jù)讀取到的所述訂單事務(wù)記錄為未處理記錄,讀取所述消息隊列中的所述訂單信息。

在其中一個示例性實施例中,所述消息處理單元,包括:

獲取子單元,用于獲取訂單信息和查詢維度索引信息各自對應(yīng)的訂單事務(wù)

處理記錄;

處理子單元,用于根據(jù)所述訂單事務(wù)處理記錄,分別將訂單信息和查詢維

度索引信息復(fù)制到訂單統(tǒng)計庫中;

更新子單元,用于更新所述訂單事務(wù)處理記錄。

本公開的實施例提供的技術(shù)方案可以包括以下有益效果:為接收的訂單信息分配訂單號,將訂單信息存入到對應(yīng)訂單號數(shù)據(jù)庫和訂單表中。在訂單事務(wù)表中添加對應(yīng)訂單信息的訂單事務(wù)記錄,根據(jù)訂單事務(wù)記錄,將對應(yīng)訂單信息復(fù)制到訂單統(tǒng)計表中。通過對每一個成功接收的訂單信息,都根據(jù)對應(yīng)訂單信息的訂單事務(wù)記錄處理該訂單信息,即時將訂單信息復(fù)制到訂單統(tǒng)計表中,使得通過訂單統(tǒng)計表采集得到的訂單信息具有較好實時性。

應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本公開。

附圖說明

此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并于說明書一起用于解釋本發(fā)明的原理。

圖1是一示例性實施例示出的一種訂單信息采集方法的流程圖。

圖2是圖1對應(yīng)實施例示出的方法中步驟150的一種具體實現(xiàn)流程圖。

圖3是圖2對應(yīng)實施例示出的方法中步驟153的一種具體實現(xiàn)流程圖。

圖4是圖2對應(yīng)實施例示出的方法中步驟155的一種具體實現(xiàn)流程圖。

圖5是另一示例性實施例示出的一種訂單信息采集方法的流程圖。

圖6是另一示例性實施例示出的一種訂單信息采集方法的流程圖。

圖7是另一示例性實施例示出的一種訂單信息采集方法的流程圖。

圖8是一個示例性實施例示出的訂單信息采集裝置的框圖。

圖9是根據(jù)圖7對應(yīng)實施例的異步處理模塊650在一個實施例的框圖。

圖10是根據(jù)圖9對應(yīng)實施例的消息讀取單元653在一個實施例的框圖。

圖11是根據(jù)圖9對應(yīng)實施例的消息處理單元655在一個實施例的框圖。

具體實施方式

這里將詳細(xì)地對示例性實施例執(zhí)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。

圖1是根據(jù)一示例性實施例示出的訂單信息采集方法的流程圖。如圖1所示,該方法包括以下步驟:

在步驟110中,為接收的訂單信息分配訂單號,按照訂單號將訂單信息存入對應(yīng)訂單號數(shù)據(jù)庫的訂單表中。

通過對接收到的訂單信息分配不同的訂單號,訂單信息通過訂單號和分布式存儲系統(tǒng)中的數(shù)據(jù)庫和訂單表建立一一對應(yīng)的映射關(guān)系。按照訂單號將訂單信息存入到對應(yīng)訂單號數(shù)據(jù)庫的訂單表中。通過訂單信息的訂單號,即可查詢訂單信息存儲于分布式存儲系統(tǒng)的具體位置。

分布式存儲系統(tǒng),是指一種訂單信息的接收存儲系統(tǒng),該系統(tǒng)將訂單信息分散存儲在不同的數(shù)據(jù)庫和訂單表中,以減輕每個數(shù)據(jù)庫處理訂單信息的壓力。

在一個具體的實施例中,對接收到的每個訂單信息隨機分配一個5位隨機數(shù),該隨機數(shù)位于10000和99999之間。通過對該隨機數(shù)進(jìn)行一系列的求余運算,得到一組分庫分表信息,然后將隨機數(shù)和分庫分表信息組合而成訂單號。通過該訂單號,建立訂單信息和對應(yīng)數(shù)據(jù)庫的訂單表的映射關(guān)系。

具體的,由該隨機數(shù)的前三位組成的數(shù)字對64求余運算,得到分庫信息,通過對隨機數(shù)對10求余運算,得到分表信息。

更進(jìn)一步,分布式存儲系統(tǒng)共分為8個數(shù)據(jù)庫,其中每個數(shù)據(jù)庫中又包含10個訂單表。8個數(shù)據(jù)庫分別為:db1、db2、…、db8,每個數(shù)據(jù)庫中的10個表分別為:order_01、order_02、order_03、…、order_10。通過對該隨機數(shù)進(jìn)行一系列求余運算后,得到的一組分庫分表信息為0108。將得到的分庫分表信息0108和隨機數(shù)組合而成訂單號。根據(jù)該訂單號,將訂單信息存入到數(shù)據(jù)庫db1中的表order_08中。

在一個具體的實施例中,分布式存儲系統(tǒng)由mysql數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)。

由于計算分庫信息采用了對64求余運算的方式,分布式存儲規(guī)則能夠兼容當(dāng)系統(tǒng)擴容為16個數(shù)據(jù)庫、32個數(shù)據(jù)庫或者64個數(shù)據(jù)庫的應(yīng)用。

通過分庫分表的方式存儲不同的訂單信息,能夠減輕每個數(shù)據(jù)庫處理訂單信息的壓力,并能根據(jù)系統(tǒng)的承載能力和當(dāng)前負(fù)載情況來隨時擴容數(shù)據(jù)庫。同時,由于單獨的一臺服務(wù)器的硬件資源有限,采取分布式存儲可以將不同的數(shù)據(jù)庫置于不同的服務(wù)器上,提高了系統(tǒng)整體業(yè)務(wù)承載能力。

在步驟130中,在訂單事務(wù)表中添加對應(yīng)訂單信息的訂單事務(wù)記錄。

在訂單事務(wù)表中添加對應(yīng)訂單信息的訂單事務(wù)記錄,根據(jù)添加成功的訂單事務(wù)記錄,向用戶返回下單成功信息。此時,即該訂單信息已經(jīng)被成功接收。

訂單事務(wù)記錄,是指對接收和采集訂單信息的過程進(jìn)行記錄和追蹤的記錄信息。每一條被成功接收的訂單信息都有一條對應(yīng)的訂單事務(wù)記錄,通過訂單事務(wù)記錄對訂單信息接收和采集的過程進(jìn)行記錄和追蹤,保證了每個被成功接收的訂單信息都會被準(zhǔn)確的采集到訂單統(tǒng)計表中,而不會被重復(fù)采集或者遺漏采集。

訂單事務(wù)表,是指存儲訂單事務(wù)記錄的一張數(shù)據(jù)表。對應(yīng)訂單信息的訂單事務(wù)表和訂單信息存儲于同一個數(shù)據(jù)庫。對應(yīng)每一條被成功接收的訂單信息都將在訂單事務(wù)表中添加一條訂單事務(wù)記錄。

事務(wù),是指數(shù)據(jù)庫管理系統(tǒng)運行過程中由一系列操作構(gòu)成的一個邏輯工作單元。作為單個邏輯工作單元執(zhí)行的一系列操作,要么完全地執(zhí)行,要么完全地不執(zhí)行。通過將一組相關(guān)操作組合為一個要么全部成功,要么全部失敗的單元,可以控制和維護(hù)事務(wù)中每個操作的一致性和完整性。如果事務(wù)中的某個操作失敗,則對數(shù)據(jù)庫的所有更新都可以回滾到事務(wù)開始之前的狀態(tài)。

為了保證每次存儲一條訂單信息的同時,都會在訂單事務(wù)表中添加一條對應(yīng)訂單信息的訂單事務(wù)記錄。需要將接收訂單信息的操作和添加訂單事務(wù)記錄的操作,作為一個數(shù)據(jù)庫的事務(wù)進(jìn)行處理。保證每存儲一條訂單信息到數(shù)據(jù)庫的訂單表中,必然會添加一條對應(yīng)訂單信息的訂單事務(wù)記錄到訂單事務(wù)表中。

在一個具體的實施例中,通過mysql數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn)接收訂單信息的分布式存儲系統(tǒng)。mysql關(guān)系型數(shù)據(jù)庫管理系統(tǒng)將一系列操作作為一個完整的事務(wù)統(tǒng)一提交或回滾,即對包含在事務(wù)中的多個操作要么全執(zhí)行,要么全部不執(zhí)行。當(dāng)將接收的訂單信息存儲到數(shù)據(jù)庫的訂單表中,必然會添加一條訂單事務(wù)記錄到該數(shù)據(jù)庫中的訂單事務(wù)表中。

接收用戶下發(fā)的訂單信息并向用戶返回下單成功信息的過程中,可能會因計算機斷電、網(wǎng)絡(luò)中斷等故障因素導(dǎo)致存儲訂單信息的操作成功,但添加對應(yīng)訂單信息的訂單事務(wù)記錄到訂單事務(wù)表的操作失敗。

在訂單事務(wù)表中添加對應(yīng)訂單信息的訂單事務(wù)記錄,只有接收訂單信息的操作和添加訂單事務(wù)記錄的操作都成功,系統(tǒng)才會向用戶返回下單成功信息。即保證了每存儲一條訂單信息,都會在訂單事務(wù)表中添加一條訂單事務(wù)記錄。

在步驟150中,根據(jù)訂單事務(wù)記錄,將訂單信息復(fù)制到訂單統(tǒng)計表中。

根據(jù)訂單事務(wù)記錄,將對應(yīng)訂單信息復(fù)制到訂單統(tǒng)計表中。為保證每條成功接收的訂單信息,都能復(fù)制到訂單統(tǒng)計表中,需要根據(jù)訂單事務(wù)記錄追蹤和記錄訂單信息被采集處理的過程。通過讀取訂單事務(wù)記錄,如果讀取的對應(yīng)訂單信息的訂單事務(wù)記錄為未處理記錄,即將訂單信息復(fù)制到訂單統(tǒng)計表中。

訂單統(tǒng)計庫,是指存儲于服務(wù)器上的一張數(shù)據(jù)表,通過將被成功接收的訂單信息復(fù)制到該數(shù)據(jù)表中,實現(xiàn)對訂單信息的采集。通過訪問訂單統(tǒng)計庫即可查詢訂單信息。

在一個具體的為游戲用戶提供在線支付功能的應(yīng)用場景,系統(tǒng)需要實時處理大量用戶集中于同一時間段下發(fā)訂單信息。為了查詢接收并存儲的訂單信息,需要將訂單信息寫入到訂單統(tǒng)計庫中。由于用戶查詢訂單信息可以容忍比較大的時間延遲,因此可以將已經(jīng)接收的用戶下單的訂單信息作為消息放入消息隊列中。當(dāng)系統(tǒng)處于能夠處理訂單信息的空閑狀態(tài)再去處理這些位于消息隊列中的訂單信息,并將訂單信息復(fù)制到訂單統(tǒng)計庫中。

由于每條被成功接收的訂單信息都被立即采集,使得采集的訂單信息具有很高的實時性。同時,通過訂單事務(wù)記錄對每條被成功接收的訂單信息的后續(xù)采集處理過程進(jìn)行追蹤和記錄,保證每條訂單信息都被復(fù)制到訂單統(tǒng)計表中。使得被成功接收訂單信息和通過訂單統(tǒng)計表采集得到的訂單信息具有很高的數(shù)據(jù)一致性,且不需要對大數(shù)據(jù)量訂單信息進(jìn)行頻繁的導(dǎo)入、導(dǎo)出操作。

一示例性實施例示出的一種訂單信息采集方法,在步驟130中還包括步驟131。

在步驟131中,通過訂單信息的訂單號,獲取訂單事務(wù)記錄的事務(wù)號。

事務(wù)號,是指用來標(biāo)記訂單事務(wù)記錄一個代碼信息,通過該事務(wù)號將訂單事務(wù)記錄和對應(yīng)訂單信息建立一一對應(yīng)關(guān)系。

將接收的訂單信息存儲到數(shù)據(jù)庫中的訂單表,必然會添加一條訂單事務(wù)記

錄到訂單事務(wù)表中。根據(jù)訂單信息的訂單號,獲取對應(yīng)訂單號的訂單事務(wù)記錄的事務(wù)號。

具體的,通過直接復(fù)制訂單信息的訂單號得到訂單事務(wù)記錄的事務(wù)號,并采用該事務(wù)號來標(biāo)識訂單事務(wù)記錄對應(yīng)的訂單信息。

圖2是對應(yīng)圖1中一示例性實施例示出的對步驟150的細(xì)節(jié)進(jìn)行描述。

在步驟151中,將訂單信息添加到消息隊列中。

消息隊列,是指在消息的傳輸過程中保存消息的容器,消息隊列中可以放入多個消息。消息隊列的主要目的是為消息的傳遞提供路由功能并保證消息的傳遞。如果難以立即對消息進(jìn)行處理,消息隊列提供的異步處理機制允許把一個消息放入隊列,但并不立即處理。例如,如果發(fā)送消息時接收者處于不可接收狀態(tài),消息隊列會保留該消息,直到可以成功地傳遞它。

將訂單信息添加到消息隊列中進(jìn)行數(shù)據(jù)持久化保存,系統(tǒng)可以選擇在非繁忙時段處理消息隊列中的訂單信息,避免了對大數(shù)據(jù)量訂單信息進(jìn)行頻繁的導(dǎo)入、導(dǎo)出處操作。

在步驟153中,根據(jù)訂單事務(wù)記錄,讀取消息隊列中的訂單信息。

將被成功接收的訂單信息存儲到分布式存儲系統(tǒng)的數(shù)據(jù)庫和訂單表中,并添加一條訂單事務(wù)記錄到該數(shù)據(jù)庫中的訂單事務(wù)表中。為保證所有成功接收的訂單信息都會被處理,需要根據(jù)訂單事務(wù)記錄,讀取消息隊列中的訂單信息。

只有當(dāng)訂單信息對應(yīng)的訂單事務(wù)記錄為未處理記錄,才需要從消息隊列中讀取的該訂單信息。

如果訂單信息對應(yīng)的訂單事務(wù)記錄為已處理記錄,則說明該訂單信息已經(jīng)被處理過,此時,不需要讀取位于消息隊列中的該訂單信息。

如果訂單信息對應(yīng)的訂單事務(wù)記錄為空記錄,則說明該訂單信息沒有被成功接收,或者,該訂單信息是垃圾信息。此時,系統(tǒng)直接跳過該條訂單信息,讀取位于消息隊列中該訂單信息的下一條訂單信息。

在步驟155中,將讀取的訂單信息復(fù)制到訂單統(tǒng)計庫中。

將訂單信息添加到消息隊列中,根據(jù)訂單事務(wù)記錄,讀取消息隊列中的當(dāng)前的訂單信息,如果讀取的訂單事務(wù)記錄是未處理記錄,將讀取的訂單信息復(fù)制到訂單統(tǒng)計庫中。使得未采集處理的訂單信息都將會被復(fù)制到訂單統(tǒng)計庫,而已經(jīng)處理的訂單信息不會被重復(fù)處理。

在一個具體的實施例中,通過消息隊列將訂單信息進(jìn)行數(shù)據(jù)持久化,在把一個訂單信息從消息隊列中刪除之前,需要明確的指出該消息是否已經(jīng)被處理。為確保訂單信息被安全的保存在消息隊里中直到使用完畢,只有當(dāng)前訂單信息已經(jīng)被完全處理才會啟動下一條訂單信息。

圖3是圖2對應(yīng)實施例示出的方法中步驟153的細(xì)節(jié)進(jìn)行描述。

在步驟531中,讀取對應(yīng)訂單信息的訂單事務(wù)記錄。

當(dāng)將接收的訂單信息存儲到數(shù)據(jù)庫的訂單表中,必然會添加一條訂單事務(wù)記錄到該數(shù)據(jù)庫中的訂單事務(wù)表中。

如果讀取到的訂單事務(wù)記錄為空記錄,則該訂單信息沒有對應(yīng)的訂單事務(wù)記錄,為保證通過訂單統(tǒng)計表查詢到訂單信息和成功接收的訂單信息具有很好的一致性,將讀取到的對應(yīng)的訂單事務(wù)記錄為空記錄的訂單信息作為垃圾信息從消息隊列中丟棄。

如果讀取到的訂單事務(wù)記錄為已處理記錄,則說明對應(yīng)訂單事務(wù)記錄的訂單信息已經(jīng)被處理。或者,已經(jīng)復(fù)制到訂單統(tǒng)計庫。為避免重復(fù)處理訂單信息,需要忽略消息隊列中的當(dāng)前訂單信息,轉(zhuǎn)而啟動處理消息隊列中位于訂單信息之后的下一條訂單信息。

在一個具體的實施例中,通過讀取訂單事務(wù)記錄的處理標(biāo)記位,根據(jù)讀該處理標(biāo)記位,判斷對應(yīng)訂單事務(wù)記錄的訂單信息是否已經(jīng)被處理。如果訂單事務(wù)記錄的處理標(biāo)記位為1,則訂單事務(wù)記錄為已處理記錄。如果訂單事務(wù)記錄的處理標(biāo)記位為0,則訂單事務(wù)記錄為未處理記錄。

在步驟533中,根據(jù)讀取到的訂單事務(wù)記錄為未處理記錄,讀取消息隊列中的訂單信息。

為保證通過訂單統(tǒng)計表查詢到訂單信息和分布式存儲系統(tǒng)存儲的訂單信息具有很好的一致性,需根據(jù)訂單事務(wù)記錄處理消息隊列中的訂單信息。通過讀取訂單事務(wù)記錄的處理標(biāo)記位,根據(jù)讀取處理標(biāo)記位,判斷對應(yīng)訂單事務(wù)記錄的訂單信息是否已經(jīng)被處理。

如果讀取到的訂單事務(wù)記錄為未處理記錄,則說明對應(yīng)訂單事務(wù)記錄的訂單信息沒有被處理,此時啟動讀取消息隊列中的當(dāng)前的訂單信息。

根據(jù)訂單事務(wù)記錄讀取消息隊列中的訂單信息,能夠?qū)⑽刺幚淼挠唵涡?/p>

息從消息隊列中讀取出來,而忽略消息隊列中的垃圾信息或者已經(jīng)被處理過的訂單信息。

圖4是圖2對應(yīng)實施例示出的方法中步驟155的細(xì)節(jié)進(jìn)行描述。

在步驟551中,獲取訂單信息和查詢維度索引信息各自對應(yīng)的訂單事務(wù)處

理記錄。

訂單事務(wù)處理記錄,是指對查詢維度索引信息和訂單信息的采集過程進(jìn)行

追蹤和記錄的記錄信息。該記錄信息被存儲于訂單事務(wù)處理記錄表中。每一條被成功接收的訂單信息都對應(yīng)一條訂單事務(wù)記錄,而每一條訂單事務(wù)記錄對應(yīng)多條訂單事務(wù)處理記錄。如果訂單事務(wù)處理記錄表中包括對應(yīng)訂單信息的全部訂單事務(wù)處理記錄,則該訂單信息采集過程已經(jīng)全部完成。此時,將對應(yīng)訂單信息的訂單事務(wù)記錄設(shè)置為已處理記錄。

訂單事務(wù)處理記錄表,是指存儲訂單事務(wù)處理記錄的數(shù)據(jù)表,訂單事務(wù)處理記錄表和訂單事務(wù)表存儲于同一個數(shù)據(jù)庫中。

通過訂單事務(wù)處理記錄來追蹤和記錄對每一條查詢維度索引信息和訂單信息的采集。先通過獲取訂單信息和查詢維度索引信息各自對應(yīng)的訂單事務(wù)處理記錄,再根據(jù)訂單事務(wù)處理記錄,分別將查詢維度索引信息和訂單信息復(fù)制到訂單統(tǒng)計庫中。

在一個具體的實施例中,通過獲取得到了查詢維度索引信息對應(yīng)的訂單事務(wù)處理記錄。此時,訂單事務(wù)處理記錄表中不存在對應(yīng)訂單信息的訂單事務(wù)處理記錄。通過將訂單信息復(fù)制到訂單統(tǒng)計庫中,并根據(jù)被復(fù)制的訂單信息,在訂單事務(wù)處理記錄表中添加對應(yīng)訂單信息的訂單事務(wù)處理記錄。

如果訂單信息中僅包含了訂單號,僅能通過訂單號查詢訂單信息。為實現(xiàn)通過不同的查詢維度查詢訂單信息,需要在將每個訂單信息復(fù)制到訂單統(tǒng)計表的同時,向訂單統(tǒng)計表中寫入多個查詢維度索引信息。

查詢維度索引信息,是指同時包含有訂單號和對應(yīng)查詢維度的查詢號的索引信息。訂單信息的訂單號和一個或者多個查詢號具有一一對應(yīng)的映射關(guān)系。通過查詢維度索引信息中的查詢號即可獲得訂單信息的訂單號,從而實現(xiàn)對訂單信息的查詢。

查詢維度,是指在訂單信息產(chǎn)生和存儲的過程中,和訂單信息唯一相關(guān)的一組查詢號。例如,下單用戶的用戶id號、商戶接收訂單信息而生產(chǎn)的外部訂單號或者商戶id號。通過將某個查詢維度和訂單號之間建立索引信息,即得到該查詢維度索引信息。

在一個具體的實施例中,在某條查詢維度索引信息中,不但包含有訂單信息的訂單號,還包含有外部訂單號、用戶id號,還包括有游戲提供商的商戶id等。查詢維度索引信息通過建立用戶id號、外部訂單號和商戶id等多個查詢維度與訂單號之間的一一映射關(guān)系,為查詢訂單信息提供多個查詢維度的查詢方式。

在一個為游戲提供商提供在線支付功能的支付平臺應(yīng)用場景中,用戶在游戲中選定道具并提交購買道具的虛擬訂單給游戲服務(wù)器。游戲服務(wù)器生成對應(yīng)游戲自身的外部訂單和外部訂單號,并將包含外部訂單號的外部訂單返回給游戲客戶端。游戲客戶端根據(jù)外部訂單請求支付平臺生成訂單信息,用戶根據(jù)生成的訂單信息完成支付流程,支付平臺調(diào)用分布式存儲系統(tǒng)存儲該訂單信息。

用戶需要通過用戶id號查詢訂單信息,游戲提供商需要通過外部訂單號查詢訂單信息。如果支付平臺為多個游戲提供商提供支付功能,還可能需要通過各個游戲提供商的商戶id號查詢訂單信息。

在步驟553中,根據(jù)訂單事務(wù)處理記錄,分別將訂單信息和查詢維度索引

信息復(fù)制到訂單統(tǒng)計庫中。

根據(jù)查詢維度索引信息和訂單信息各自對應(yīng)的訂單事務(wù)處理記錄,分別將

查詢維度索引信息和訂單信息復(fù)制到訂單統(tǒng)計庫中,然后更新訂單事務(wù)處理記錄。

具體的,每復(fù)制一條查詢維度索引信息或者訂單信息到訂單統(tǒng)計表,都在訂單事務(wù)處理記錄表中添加一條對應(yīng)的訂單事務(wù)處理記錄。根據(jù)全部的訂單事務(wù)處理記錄來設(shè)置訂單事務(wù)記錄。當(dāng)訂單事務(wù)記錄被設(shè)置為已處理記錄時,所有的查詢維度索引信息或者訂單信息都已經(jīng)被準(zhǔn)確的復(fù)制到了訂單統(tǒng)計表中。

在一個具體的實施例中,對一個被成功接收的訂單信息,需要完成三個不同的采集處理操作。該三個采集處理操作分別為:復(fù)制第一查詢維度索引信到訂單統(tǒng)計庫;復(fù)制訂單信息到訂單統(tǒng)計庫;復(fù)制第二查詢維度索引信到訂單統(tǒng)計庫。每處理完一個采集操作后,即在訂單事務(wù)處理記錄表中添加一條對應(yīng)的訂單事務(wù)處理記錄。

在一個具體的實施例中,通過守護(hù)進(jìn)程異步處理消息隊列中的訂單信息,

根據(jù)寫入的多個查詢維度索引信息和訂單信息,分別將對應(yīng)各個查詢維度索引信息和訂單信息的訂單事務(wù)處理記錄添加到訂單事務(wù)處理表中。守護(hù)進(jìn)程處理一個訂單信息,需要完成添加多個查詢維度索引信息到訂單統(tǒng)計庫,以及添加訂單信息到訂單統(tǒng)計庫等多個操作。每處理完一個操作后在訂單事務(wù)表對應(yīng)的訂單事務(wù)處理記錄表中添加一條訂單事務(wù)處理記錄。根據(jù)訂單事務(wù)處理記錄,將所有被成功接收的訂單信息都復(fù)制到訂單統(tǒng)計表。

守護(hù)進(jìn)程,是指運行在后臺的一種特殊進(jìn)程。它獨立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。守護(hù)進(jìn)程能脫離于終端并且在后臺運行,它從被執(zhí)行的時候開始運轉(zhuǎn),直到整個系統(tǒng)關(guān)閉才退出。

如果訂單事務(wù)處理記錄表中包括了對應(yīng)全部采集處理操作的訂單事務(wù)處理記錄,則已經(jīng)將訂單信息和查詢維度索引信息都復(fù)制到了訂單統(tǒng)計表。使得被成功接收的訂單信息和通過訂單統(tǒng)計表采集得到的訂單信息高度的數(shù)據(jù)一致性,并且采集得到的訂單信息可以通過多個查詢維度進(jìn)行查詢。

在步驟555中,更新訂單事務(wù)處理記錄。

讀取查詢維度索引信息和訂單信息各自對應(yīng)的訂單事務(wù)處理記錄,分別將

查詢維度索引信息和訂單信息復(fù)制到訂單統(tǒng)計庫中,然后更新訂單事務(wù)處理記錄。

具體的,基于不同查詢維度的查詢維度索引信息可能具有多條,為保證全部查詢維度索引信息和訂單信息都被準(zhǔn)確復(fù)制到訂單統(tǒng)計表中,需要每完成一次對查詢維度索引信息或者訂單信息的采集處理操作,都在訂單事務(wù)處理記錄表中添加一條對應(yīng)的訂單事務(wù)處理記錄,最后根據(jù)更新后的訂單事務(wù)處理記錄來設(shè)置訂單事務(wù)記錄。

如果全部的訂單事務(wù)處理記錄都被添加到了訂單事務(wù)處理記錄表,則將訂單事務(wù)記錄被設(shè)置為已處理記錄。此時,所有的查詢維度索引信息或者訂單信息都已經(jīng)被準(zhǔn)確的復(fù)制到了訂單統(tǒng)計表中。保證了被成功接收的訂單信息和通過訂單統(tǒng)計表采集得到的訂單信息的具有較高的數(shù)據(jù)一致性。同時,使得通過訂單統(tǒng)計表采集得到的訂單信息,可以通過多個查詢維度進(jìn)行查詢。

在一個具體的應(yīng)用場景中,分布式存儲系統(tǒng)為接收的訂單信息分配訂單號的流程圖如圖5所示。分布式存儲系統(tǒng)接收訂單信息并為接收的該訂單信息分配隨機數(shù)95277。通過對該隨機數(shù)進(jìn)行一系列求余運算后,得到的一組分庫分表信息為5708。該分庫分表信息和隨機數(shù)組合而成該訂單信息的訂單號。對應(yīng)該分庫分表信,將該訂單信息存入到數(shù)據(jù)庫db1中的訂單表order_08中。

在一個具體的應(yīng)用場景中,分布式存儲系統(tǒng)接收訂單信息并通過添加訂單事務(wù)記錄而返回下單成功信息的流程圖如圖6所示。

通過對數(shù)據(jù)庫中的訂單事務(wù)表添加對應(yīng)訂單信息的訂單事務(wù)記錄,并根據(jù)添加成功的訂單事務(wù)記錄而返回下單成功信息。接收用戶下發(fā)訂單信息,校驗用戶的用戶名和密碼并判斷用戶名和密碼是否正確。如果用戶名和密碼正確,則開啟mysql事務(wù)。將訂單信息存入分布式存儲系統(tǒng),并判斷存入訂單信息是否成功。如果存入訂單信息成功,將訂單事務(wù)記錄添加到訂單事務(wù)表中并判斷添加訂單事務(wù)記錄是否成功。如果添加訂單事務(wù)記錄是否成功,則提交mysql事務(wù)并將訂單信息添加到消息隊列中。如果失敗,mysql事務(wù)回滾,創(chuàng)建訂單失敗,返回錯誤信息給用戶。對于從開啟mysql事務(wù)到提交mysql事務(wù)的過程中,將訂單信息存入分布式存儲系統(tǒng)的操作和添加訂單事務(wù)記錄操作為一個mysql事務(wù)處理,保證了訂單信息存入分布式存儲系統(tǒng)必然會在訂單事務(wù)表中添加一條訂單事務(wù)記錄。

在一個具體的應(yīng)用場景中,通過守護(hù)進(jìn)程處理消息隊列中的訂單信息的流程圖如圖7所示。

守護(hù)進(jìn)程調(diào)取消息隊列中的訂單信息進(jìn)行處理,判斷是否存在對應(yīng)的訂單事務(wù)記錄。如果不存在,將訂單信息作為垃圾信息丟棄。判斷訂單事務(wù)處理記錄表中是否存在訂單事務(wù)處理記錄1,如果不存在,即將訂單信息寫入到訂單統(tǒng)計庫,并將對應(yīng)第一維度索引信息的訂單事務(wù)處理記錄1添加到訂單事務(wù)處理表中。查詢訂單事務(wù)處理記錄表中是否存在訂單事務(wù)處理記錄2,如果不存在,即將訂單信息寫入到訂單統(tǒng)計庫,并將訂單事務(wù)處理記錄3添加到訂單事務(wù)處理表中。查詢訂單事務(wù)處理記錄表中是否存在訂單事務(wù)處理記錄3,如果不存在,即將第二查詢維度索引信息寫入到訂單統(tǒng)計庫,并將訂單事務(wù)處理記錄3添加到訂單事務(wù)處理表中。通過判斷訂單事務(wù)處理記錄數(shù)是否為3,設(shè)置訂單事務(wù)記錄成功標(biāo)識為1,開啟處理消隊列中的下一條訂單信息。

圖8是一示例性實施例示出的一種訂單信息采集裝置的框圖。如圖5所示,該裝置包括但不限于:存儲模塊610,同步處理模塊630,異步處理模塊650。

存儲模塊610,用于為接收的訂單信息分配訂單號,將所述訂單信息存入到對應(yīng)所述訂單號數(shù)據(jù)庫和訂單表中;

同步處理模塊630,用于在訂單事務(wù)表中添加對應(yīng)訂單信息的訂單事務(wù)記錄;

異步處理模塊650,用于根據(jù)訂單事務(wù)記錄,將訂單信息復(fù)制到訂單統(tǒng)計表中。

根據(jù)圖8對應(yīng)實施例的訂單處理裝置,所述同步處理模塊,還包括事務(wù)號

獲取單元。

事務(wù)號獲取單元用于通過訂單信息的訂單號,獲取訂單事務(wù)記錄的事務(wù)號。

圖9是根據(jù)圖8對應(yīng)實施例的同步處理模塊在一個實施例的框圖。如圖8所示,該裝置包括但不限于:消息添加單元651,消息讀取單元653,消息處理單元655。

消息添加單元651,用于將訂單信息添加到消息隊列中;

消息讀取單元653,用于根據(jù)訂單事務(wù)記錄,讀取消息隊列中的訂單信息;

消息處理單元655,用于將讀取的訂單信息復(fù)制到訂單統(tǒng)計庫中。

圖10是根據(jù)圖9對應(yīng)實施例的消息讀取單元653在一個實施例的框圖。如圖10所示,該裝置包括但不限于:訂單事務(wù)記錄讀取子單元731,訂單信息讀取子單元733。

訂單事務(wù)記錄讀取子單元731,用于讀取對應(yīng)訂單信息的訂單事務(wù)記錄;

訂單信息讀取子單元733,用于根據(jù)讀取到的訂單事務(wù)記錄為未處理記錄,讀取消息隊列中的訂單信息。

圖11是是根據(jù)圖9對應(yīng)實施例的消息處理單元655在一個實施例的框圖。如圖11所示,該消息處理單元655包括但不限于:獲取子單元951,處理子單元953,更新子單元955。

獲取子單元951,用于獲取訂單信息和查詢維度索引信息各自對應(yīng)的訂單事

務(wù)處理記錄;

處理子單元953,用于根據(jù)所述訂單事務(wù)處理記錄,分別將訂單信息和查詢

維度索引信息復(fù)制到訂單統(tǒng)計庫中;

更新子單元955,用于更新所述訂單事務(wù)處理記錄。

應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍執(zhí)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。

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