一種基于緩存機制的數(shù)據(jù)交換系統(tǒng)和方法
【專利摘要】本發(fā)明提出一種基于緩存機制的數(shù)據(jù)交換系統(tǒng)和方法,其中系統(tǒng)包括:上游業(yè)務系統(tǒng),用于向緩存系統(tǒng)寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài);緩存系統(tǒng),用于保存所述數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵;并保存所述任務主鍵的狀態(tài);數(shù)據(jù)中心,用于從所述緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);還用于將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),并刪除緩存系統(tǒng)中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。本發(fā)明能夠在上游業(yè)務系統(tǒng)與下游系統(tǒng)之間設置緩存余地,減輕接口的業(yè)務復雜度高,從而提高交換成功率。
【專利說明】一種基于緩存機制的數(shù)據(jù)交換系統(tǒng)和方法
【技術領域】
[0001]本發(fā)明涉及計算機互聯(lián)網(wǎng)【技術領域】,尤其涉及一種基于緩存機制的數(shù)據(jù)交換系統(tǒng)和方法。
【背景技術】
[0002]在目前的電子商務平臺上,上游業(yè)務系統(tǒng)向下游系統(tǒng)交換數(shù)據(jù)時一般采用調用網(wǎng)頁服務(Webservice)接口的方式,如圖1所示,Webservice接口的處理包括三大步驟:
[0003]第一,解析數(shù)據(jù)量大的XML報文,其中報文的大小不固定,幾K到幾百K不等;
[0004]第二,處理業(yè)務數(shù)據(jù)拼裝實體參數(shù),調用外部接口處理復雜業(yè)務邏輯等;
[0005]第三,數(shù)據(jù)庫操作處理,插入業(yè)務數(shù)據(jù)庫,持久化數(shù)據(jù)。
[0006]可見,現(xiàn)有方式中上游業(yè)務系統(tǒng)與下游系統(tǒng)之間沒有緩存余地,二者之間的數(shù)據(jù)必須一次性傳輸,并且接口的業(yè)務復雜度高,容易交換失敗。
【發(fā)明內容】
[0007]本發(fā)明提供了一種基于緩存機制的數(shù)據(jù)交換系統(tǒng),能夠在上游業(yè)務系統(tǒng)與下游系統(tǒng)之間設置緩存余地,減輕接口的業(yè)務復雜度高,從而提高交換成功率。
[0008]本發(fā)明還提供了一種基于緩存機制的數(shù)據(jù)交換方法,能夠在上游業(yè)務系統(tǒng)與下游系統(tǒng)之間設置緩存余地,減輕接口的業(yè)務復雜度高,從而提高交換成功率。
[0009]本發(fā)明的技術方案是這樣實現(xiàn)的:
[0010]—種基于緩存機制的數(shù)據(jù)交換系統(tǒng),包括:
[0011]上游業(yè)務系統(tǒng),用于向緩存系統(tǒng)寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài);
[0012]緩存系統(tǒng),用于保存所述數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵;并保存所述任務主鍵的狀態(tài);
[0013]數(shù)據(jù)中心,用于從所述緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);還用于將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),并刪除緩存系統(tǒng)中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。
[0014]上述系統(tǒng)中,上游業(yè)務系統(tǒng)可以將數(shù)據(jù)報文對應的任務類型作為鍵(Key),將數(shù)據(jù)報文對應的業(yè)務主鍵作為域(Field),將數(shù)據(jù)報文作為值(Value),并將Key、Field和Value的對應關系寫入緩存系統(tǒng);并將Field的狀態(tài)設置為待處理狀態(tài)。
[0015]上述系統(tǒng)中,緩存系統(tǒng)可以包括:
[0016]Redis緩存,用于保存所述Key、Field和Value的對應關系;
[0017]數(shù)據(jù)庫,用于保存Field的狀態(tài);
[0018]云存儲系統(tǒng),用于當所述Redis緩存出現(xiàn)故障時,保存上游業(yè)務系統(tǒng)所寫入的Key、Field和Value的對應關系。[0019]上述數(shù)據(jù)中心可以包括:
[0020]異步任務調度模塊,用于從所述數(shù)據(jù)庫獲取待處理狀態(tài)的業(yè)務主鍵,根據(jù)該業(yè)務主鍵與已知的任務類型,從所述Redis緩存或云存儲系統(tǒng)獲取對應的數(shù)據(jù)報文,如果獲取成功,則調度數(shù)據(jù)加工模塊對所述數(shù)據(jù)報文進行校驗,并將數(shù)據(jù)庫中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除Redis緩存或云存儲系統(tǒng)中所保存的該任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系;
[0021]數(shù)據(jù)加工模塊,用于在所述異步任務調度模塊的調度下,對異步任務調度模塊獲取的數(shù)據(jù)報文進行校驗,將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊;
[0022]存儲模塊,用于保存任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系。
[0023]上述異步任務調度模塊還可以用于,調度所述數(shù)據(jù)加工模塊對存儲模塊存儲的數(shù)據(jù)報文進行組裝;
[0024]數(shù)據(jù)加工模塊還可以用于,在異步任務調度模塊的調度下,將存儲模塊存儲的數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)保存入存儲模塊,并將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);
[0025]所述存儲模塊,還可以用于存儲數(shù)據(jù)加工模塊組裝完畢的數(shù)據(jù)。
[0026]上述異步任務調度模塊還可以用于,實時掃描所述存儲模塊保存的內容,如果出現(xiàn)異常則重新調度;
[0027]所述異步任務調度模塊還可以用于,在數(shù)據(jù)加工模塊將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊之前,判斷存儲模塊中是否已存有該業(yè)務主鍵,如果沒有,則指令數(shù)據(jù)加工模塊將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊。
[0028]上述上游業(yè)務系統(tǒng)還可以用于,向緩存系統(tǒng)寫入數(shù)據(jù)報文、對應的任務類型和業(yè)務主鍵之前,判斷緩存系統(tǒng)中是否已存有該業(yè)務主鍵,如果沒有,則向緩存系統(tǒng)寫入數(shù)據(jù)報文、對應的任務類型和業(yè)務主鍵。
[0029]上述系統(tǒng)還可以包括監(jiān)控系統(tǒng),用于監(jiān)控上游業(yè)務系統(tǒng)寫入內容及數(shù)據(jù)中心讀取內容時的響應時間及狀態(tài),還用于監(jiān)控數(shù)據(jù)中心保存的數(shù)據(jù)報文的數(shù)據(jù)量。
[0030]—種基于緩存機制的數(shù)據(jù)交換方法,包括:
[0031]上游業(yè)務系統(tǒng)向緩存系統(tǒng)寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài);
[0032]數(shù)據(jù)中心從所述緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);并將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除緩存系統(tǒng)中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。
[0033]上述方法中,上游業(yè)務系統(tǒng)向緩存系統(tǒng)寫入數(shù)據(jù)報文、數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài)的方式可以為:
[0034]上游業(yè)務系統(tǒng)將數(shù)據(jù)報文對應的任務類型作為鍵Key,將數(shù)據(jù)報文對應的業(yè)務主鍵作為域Field,將數(shù)據(jù)報文作為值Value,并將Key、Field和Value的對應關系寫入緩存系統(tǒng);并將Field的狀態(tài)設置為待處理狀態(tài)。[0035]數(shù)據(jù)中心從緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文的方式可以為:
[0036]從緩存系統(tǒng)獲取待處理狀態(tài)的業(yè)務主鍵,根據(jù)該業(yè)務主鍵與已知的任務類型,從所述緩存系統(tǒng)獲取對應的數(shù)據(jù)報文,如果獲取成功,則對所述數(shù)據(jù)報文進行校驗,保存校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系,并將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除緩存系統(tǒng)中所保存的該任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系O
[0037]可見,本發(fā)明提出的基于緩存機制的數(shù)據(jù)交換系統(tǒng)和方法,通過在上游業(yè)務系統(tǒng)與下游系統(tǒng)之間設置緩存系統(tǒng)和數(shù)據(jù)中心,實現(xiàn)了在為數(shù)據(jù)交換提供緩沖緩存機制,并減小接口粒度,降低接口的業(yè)務復雜度,從而提高交換成功率。
【專利附圖】
【附圖說明】
[0038]圖1為現(xiàn)有技術中上游業(yè)務系統(tǒng)與下游系統(tǒng)的接口結構不意圖;
[0039]圖2為本發(fā)明提出的基于緩存機制的數(shù)據(jù)交換系統(tǒng)結構示意圖;
[0040]圖3為本發(fā)明實施例一的結構示意圖;
[0041]圖4為實施例一中數(shù)據(jù)中心的結構及與緩存池的連接關系示意圖。
【具體實施方式】
[0042]本發(fā)明提出一種基于緩存機制的數(shù)據(jù)交換系統(tǒng),如圖2為該系統(tǒng)的結構示意圖,包括:
[0043]上游業(yè)務系統(tǒng)210,用于向緩存系統(tǒng)220寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài);
[0044]緩存系統(tǒng)220,用于保存所述數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵;并保存所述任務主鍵的狀態(tài);
[0045]數(shù)據(jù)中心230,用于從所述緩存系統(tǒng)220讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);還用于將緩存系統(tǒng)220中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),并刪除緩存系統(tǒng)220中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。
[0046]上述系統(tǒng)中,上游業(yè)務系統(tǒng)210可以將數(shù)據(jù)報文對應的任務類型作為鍵(Key),將數(shù)據(jù)報文對應的業(yè)務主鍵作為域(Field),將數(shù)據(jù)報文作為值(Value),并將Key、Field和Value的對應關系寫入緩存系統(tǒng)220 ;并將Field的狀態(tài)設置為待處理狀態(tài)。
[0047]上述緩存系統(tǒng)220可以包括:
[0048]Redis緩存221,用于保存所述Key、Field和Value的對應關系;
[0049]數(shù)據(jù)庫222,用于保存Field的狀態(tài);
[0050]云存儲系統(tǒng)223,用于當所述Redis緩存221出現(xiàn)故障時,保存上游業(yè)務系統(tǒng)210所寫入的Key、Field和Value的對應關系。
[0051]上述系統(tǒng)中,數(shù)據(jù)中心230可以包括:
[0052]異步任務調度模塊231,用于從所述數(shù)據(jù)庫222獲取待處理狀態(tài)的業(yè)務主鍵,根據(jù)該業(yè)務主鍵與已知的任務類型,從所述Redis緩存221或云存儲系統(tǒng)223獲取對應的數(shù)據(jù)報文,如果獲取成功,則調度數(shù)據(jù)加工模塊232對所述數(shù)據(jù)報文進行校驗,并將數(shù)據(jù)庫222中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除Redis緩存221或云存儲系統(tǒng)223中所保存的該任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系;
[0053]數(shù)據(jù)加工模塊232,用于在所述異步任務調度模塊231的調度下,對異步任務調度模塊231獲取的數(shù)據(jù)報文進行校驗,將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊233 ;
[0054]存儲模塊233,用于保存任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系。
[0055]上述系統(tǒng)中,異步任務調度模塊231還可以用于,調度所述數(shù)據(jù)加工模塊232對存儲模塊233存儲的數(shù)據(jù)報文進行組裝;
[0056]數(shù)據(jù)加工模塊232還可以用于,在所述異步任務調度模塊231的調度下,將存儲模塊233存儲的數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)保存入存儲模塊233,并將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);
[0057]所述存儲模塊233,還可以用于存儲所述數(shù)據(jù)加工模塊232組裝完畢的數(shù)據(jù)。
[0058]上述系統(tǒng)中,異步任務調度模塊231還可以用于,實時掃描所述存儲模塊233保存的內容,如果出現(xiàn)異常則重新調度;
[0059]異步任務調度模塊231還可以用于,在數(shù)據(jù)加工模塊232將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊233之前,判斷存儲模塊233中是否已存有該業(yè)務主鍵,如果沒有,則指令數(shù)據(jù)加工模塊232將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊233。
[0060]上述系統(tǒng)中,上游業(yè)務系統(tǒng)210還可以用于,向緩存系統(tǒng)220寫入數(shù)據(jù)報文、對應的任務類型和業(yè)務主鍵之前,判斷緩存系統(tǒng)220中是否已存有該業(yè)務主鍵,如果沒有,則向緩存系統(tǒng)220寫入數(shù)據(jù)報文、對應的任務類型和業(yè)務主鍵。
[0061 ] 上述系統(tǒng)還可以包括監(jiān)控系統(tǒng)240,用于監(jiān)控上游業(yè)務系統(tǒng)210寫入內容及數(shù)據(jù)中心230讀取內容時的響應時間及狀態(tài),還用于監(jiān)控數(shù)據(jù)中心230保存的數(shù)據(jù)報文的數(shù)據(jù)量。
[0062]以下結合附圖舉具體的實施例詳細介紹。
[0063]實施例一:
[0064]本實施例介紹一個具體的基于緩存機制的數(shù)據(jù)交換系統(tǒng)。如圖3為該數(shù)據(jù)交換系統(tǒng)的結構示意圖,在上游業(yè)務系統(tǒng)與下游系統(tǒng)之間設置緩存池和數(shù)據(jù)中心。其中,在緩存池中,Redis緩存作為主要的緩存設備,云存儲作為備份的緩存設備;當Redis緩存正常工作時,上游業(yè)務系統(tǒng)將數(shù)據(jù)報文寫入Redis緩存;當Redis緩存出現(xiàn)故障時,上游業(yè)務系統(tǒng)將數(shù)據(jù)報文寫入云存儲。
[0065]應用圖3所示的系統(tǒng),上游業(yè)務系統(tǒng)向下游系統(tǒng)交換數(shù)據(jù)的過程包括以下幾個部分:
[0066]第一部分:
[0067]上游業(yè)務系統(tǒng)調用上傳(Upload)接口向Redis緩存寫入數(shù)據(jù)報文,Upload接口只負責數(shù)據(jù)報文的寫入。
[0068]在寫入數(shù)據(jù)報文時,將數(shù)據(jù)報文作為值(Value),并需要按照數(shù)據(jù)報文對應的任務類型設計對應的鍵(Key),按照數(shù)據(jù)報文所包含數(shù)據(jù)所對應的業(yè)務主鍵設計對應的域(Field)。可以采用如下命令寫入Redis緩存:
[0069]Redis Commond:HSF,T (Key, Field, Value)
[0070]如果Redis緩存出現(xiàn)故障,則上游業(yè)務系統(tǒng)調用Upload接口向云存儲寫入數(shù)據(jù)報文。
[0071]同時,上游業(yè)務系統(tǒng)調用上傳Upload接口將Field寫入一個數(shù)據(jù)庫,該數(shù)據(jù)庫為每個Field保存一個版本字段,用于表示該Field的狀態(tài)。例如,版本字段為O時,表示對應Field的狀態(tài)為待處理狀態(tài);版本字段為I時,表示對應Field的狀態(tài)為已處理狀態(tài)。初始狀態(tài)下,上游業(yè)務系統(tǒng)向數(shù)據(jù)庫寫入Field時,將每個Field的狀態(tài)均設置為待處理狀態(tài)(也就是將對應的版本字段設置為O)。
[0072]第二部分:
[0073]數(shù)據(jù)中心調用下載(Download)接口從Redis緩存或云存儲讀取數(shù)據(jù)報文。
[0074]如圖4為本實施例中數(shù)據(jù)中心的結構及與緩存池的連接關系示意圖,其中,數(shù)據(jù)中心包括:異步任務調度模塊、數(shù)據(jù)加工模塊和存儲模塊。以下結合圖4詳細介紹數(shù)據(jù)中心從Redis緩存讀取數(shù)據(jù)報文的具體方式。從云存儲讀取數(shù)據(jù)報文的具體方式與此類似。
[0075]首先,數(shù)據(jù)中心的異步任務調度模塊調用Download接口,從上述數(shù)據(jù)庫中提取待處理狀態(tài)的Field (即版本字段為O的Field);
[0076]接著,異步任務調度模塊將待處理狀態(tài)的Field與已知的Key結合,從Redis緩存讀取對應的數(shù)據(jù)報文,可以采用多線程方式讀取。讀取的命令可以具體為:
[0077]Redis Commond:HGET(Key, Field)
[0078]如果讀取成功,則異步任務調度模塊將數(shù)據(jù)庫中該Field的狀態(tài)修改為已處理狀態(tài)(也就是將Field的版本字段修改為0),同時刪除Redis緩存中的該數(shù)據(jù)報文;如果沒有讀取成功,則不會更新Field的狀態(tài),而是由異步任務調度模塊繼續(xù)輪詢等待待處理狀態(tài)的Field,再次讀取未讀取成功的數(shù)據(jù)報文。
[0079]最后,在異步任務調度模塊的調度下,數(shù)據(jù)中心的數(shù)據(jù)加工模塊對讀取的數(shù)據(jù)報文進行解析,校驗數(shù)據(jù)報文的準確性和完整性,將符合業(yè)務邏輯的數(shù)據(jù)報文保存入數(shù)據(jù)中心的存儲模塊,存儲的形式與在Redis緩存中的存儲形式相同,即按照任務類型及業(yè)務主鍵以對象(Object)形式存儲。
[0080]第三部分:
[0081]在異步任務調度模塊的調度下,數(shù)據(jù)加工模塊提取存儲模塊中的數(shù)據(jù)報文,將數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),所述的組裝包括調用外部系統(tǒng)的接口、對數(shù)據(jù)進行轉換等。前述過程采用單線程取數(shù)、多線程處理的方式。
[0082]之后,將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng)。
[0083]上述即為上游業(yè)務系統(tǒng)向下游系統(tǒng)交換數(shù)據(jù)報文的具體方式。本實施例提供的系統(tǒng)還能夠實現(xiàn)任務補償防重及容災處理,具體可以包括:異步任務調度模塊實時掃描數(shù)據(jù)中心的數(shù)據(jù),只要有異常數(shù)據(jù)就不斷重試;在向數(shù)據(jù)中心寫入數(shù)據(jù)報文及同步數(shù)據(jù)庫時,首先校驗業(yè)務主鍵是否已經(jīng)存在,如果已經(jīng)存在則停止寫入;上游業(yè)務系統(tǒng)向Redis緩存寫入數(shù)據(jù)報文時,如果不成功,則自動切換向云存儲寫入數(shù)據(jù)報文,同時,數(shù)據(jù)中心在取數(shù)時優(yōu)先下載云存儲的數(shù)據(jù)。
[0084]此外,本實施例還設置監(jiān)控系統(tǒng),如圖3所示,對上游業(yè)務系統(tǒng)向緩存池寫入內容以及數(shù)據(jù)中心從緩存池下載內容時做響應時間監(jiān)控及異常監(jiān)控,并對數(shù)據(jù)中心的數(shù)據(jù)報文做數(shù)據(jù)量監(jiān)控。
[0085]應用上述系統(tǒng),本發(fā)明還提出一種基于緩存機制的數(shù)據(jù)交換方法,包括:
[0086]上游業(yè)務系統(tǒng)向緩存系統(tǒng)寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài);
[0087]數(shù)據(jù)中心從所述緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);并將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除緩存系統(tǒng)中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。
[0088]上述方法中,上游業(yè)務系統(tǒng)向緩存系統(tǒng)寫入數(shù)據(jù)報文、數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài)的方式可以為:
[0089]上游業(yè)務系統(tǒng)將數(shù)據(jù)報文對應的任務類型作為Key,將數(shù)據(jù)報文對應的業(yè)務主鍵作為Field,將數(shù)據(jù)報文作為Value,并將Key、Field和Value的對應關系寫入緩存系統(tǒng);并將Field的狀態(tài)設置為待處理狀態(tài)。
[0090]數(shù)據(jù)中心從緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文的方式可以為:
[0091]從緩存系統(tǒng)獲取待處理狀態(tài)的業(yè)務主鍵,根據(jù)該業(yè)務主鍵與已知的任務類型,從所述緩存系統(tǒng)獲取對應的數(shù)據(jù)報文,如果獲取成功,則對所述數(shù)據(jù)報文進行校驗,保存校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系,并將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除緩存系統(tǒng)中所保存的該任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系O
[0092]綜上可見,本發(fā)明提出的基于緩存機制的數(shù)據(jù)交換系統(tǒng)和方法,利用Redis支持哈希(Hash)數(shù)據(jù)類型的特點,合理設計哈希表的鍵(Key)與域(Field),將異步任務存入Redis隊列,結合傳統(tǒng)異步任務調度模式,合理劃分隊列,高效地處理數(shù)據(jù)及解決重試容災等問題。本發(fā)明使用Redis緩存與云存儲結合,給大數(shù)據(jù)提供緩沖緩存機制;降低接口復雜度,采取Upload/Download與異步重試提高接口成功率;減輕接口業(yè)務復雜度,減小接口粒度,提高了大數(shù)據(jù)交換對接口處理能力吞吐能力,解決大數(shù)據(jù)量帶來的接口響應時間瓶頸。
[0093]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內。
【權利要求】
1.一種基于緩存機制的數(shù)據(jù)交換系統(tǒng),其特征在于,所述系統(tǒng)包括: 上游業(yè)務系統(tǒng),用于向緩存系統(tǒng)寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài); 緩存系統(tǒng),用于保存所述數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵;并保存所述任務主鍵的狀態(tài); 數(shù)據(jù)中心,用于從所述緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);還用于將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),并刪除緩存系統(tǒng)中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。
2.根據(jù)權利要求1所述的系統(tǒng),其特征在于,所述上游業(yè)務系統(tǒng)將數(shù)據(jù)報文對應的任務類型作為鍵Key,將數(shù)據(jù)報文對應的業(yè)務主鍵作為域Field,將數(shù)據(jù)報文作為值Value,并將Key、Field和Value的對應關系寫入緩存系統(tǒng);并將Field的狀態(tài)設置為待處理狀態(tài)。
3.根據(jù)權利要求2所述的系統(tǒng),其特征在于,所述緩存系統(tǒng)包括: Redis緩存,用于保存所述Key、Field和Value的對應關系; 數(shù)據(jù)庫,用于保存Field的狀態(tài); 云存儲系統(tǒng),用于當所述Redis緩存出現(xiàn)故障時,保存上游業(yè)務系統(tǒng)所寫入的Key、Field和Value的對應關系。
4.根據(jù)權利要求3所述的系統(tǒng),其特征在于,所述數(shù)據(jù)中心包括: 異步任務調度模塊,用于從所述數(shù)據(jù)庫獲取待處理狀態(tài)的業(yè)務主鍵,根據(jù)該業(yè)務主鍵與已知的任務類型,從所述Redis緩存或云存儲系統(tǒng)獲取對應的數(shù)據(jù)報文,如果獲取成功,則調度數(shù)據(jù)加工模塊對所述數(shù)據(jù)報文進行校驗,并將數(shù)據(jù)庫中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除Redis緩存或云存儲系統(tǒng)中所保存的該任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系; 數(shù)據(jù)加工模塊,用于在所述異步任務調度模塊的調度下,對異步任務調度模塊獲取的數(shù)據(jù)報文進行校驗,將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲豐吳塊; 存儲模塊,用于保存任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系。
5.根據(jù)權利要求4所述的系統(tǒng),其特征在于,所述異步任務調度模塊還用于,調度所述數(shù)據(jù)加工模塊對存儲模塊存儲的數(shù)據(jù)報文進行組裝; 所述數(shù)據(jù)加工模塊還用于,在所述異步任務調度模塊的調度下,將存儲模塊存儲的數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)保存入存儲模塊,并將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng); 所述存儲模塊,還用于存儲所述數(shù)據(jù)加工模塊組裝完畢的數(shù)據(jù)。
6.根據(jù)權利要求4或5所述的系統(tǒng),其特征在于,所述異步任務調度模塊還用于,實時掃描所述存儲模塊保存的內容,如果出現(xiàn)異常則重新調度; 所述異步任務調度模塊還用于,在數(shù)據(jù)加工模塊將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊之前,判斷存儲模塊中是否已存有該業(yè)務主鍵,如果沒有,則指令數(shù)據(jù)加工模塊將校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵的對應關系保存入存儲模塊。
7.根據(jù)權利要求1所述的系統(tǒng),其特征在于,所述上游業(yè)務系統(tǒng)還用于,向緩存系統(tǒng)寫入數(shù)據(jù)報文、對應的任務類型和業(yè)務主鍵之前,判斷緩存系統(tǒng)中是否已存有該業(yè)務主鍵,如果沒有,則向緩存系統(tǒng)寫入數(shù)據(jù)報文、對應的任務類型和業(yè)務主鍵。
8.根據(jù)權利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括監(jiān)控系統(tǒng),用于監(jiān)控上游業(yè)務系統(tǒng)寫入內容及數(shù)據(jù)中心讀取內容時的響應時間及狀態(tài),還用于監(jiān)控數(shù)據(jù)中心保存的數(shù)據(jù)報文的數(shù)據(jù)量。
9.一種基于緩存機制的數(shù)據(jù)交換方法,應用于權利要求1所述的系統(tǒng),其特征在于,所述方法包括: 上游業(yè)務系統(tǒng)向緩存系統(tǒng)寫入數(shù)據(jù)報文、所述數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài); 數(shù)據(jù)中心從所述緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文,將該數(shù)據(jù)報文組裝成下游系統(tǒng)所需的數(shù)據(jù),將組裝完畢的數(shù)據(jù)同步至下游系統(tǒng);并將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除緩存系統(tǒng)中保存的該數(shù)據(jù)報文及對應的任務類型和業(yè)務主鍵。
10.根據(jù)權利要求9所述的方法,其特征在于,所述上游業(yè)務系統(tǒng)向緩存系統(tǒng)寫入數(shù)據(jù)報文、數(shù)據(jù)報文對應的任務類型和業(yè)務主鍵,并將業(yè)務主鍵的狀態(tài)設置為待處理狀態(tài)的方式為: 上游業(yè)務系統(tǒng)將數(shù)據(jù)報文對應的任務類型作為鍵Key,將數(shù)據(jù)報文對應的業(yè)務主鍵作為域Field,將數(shù)據(jù)報文作為值Value,并將Key、Field和Value的對應關系寫入緩存系統(tǒng);并將Field的狀態(tài)設置為待處理狀態(tài)。
11.根據(jù)權利要求10所 述的方法,其特征在于,所述數(shù)據(jù)中心從緩存系統(tǒng)讀取并保存待處理狀態(tài)的業(yè)務主鍵所對應的數(shù)據(jù)報文的方式為: 從緩存系統(tǒng)獲取待處理狀態(tài)的業(yè)務主鍵,根據(jù)該業(yè)務主鍵與已知的任務類型,從所述緩存系統(tǒng)獲取對應的數(shù)據(jù)報文,如果獲取成功,則對所述數(shù)據(jù)報文進行校驗,保存校驗完成的數(shù)據(jù)報文及與任務類型和業(yè)務主鍵 的對應關系,并將緩存系統(tǒng)中該業(yè)務主鍵的狀態(tài)修改為已處理狀態(tài),刪除緩存系統(tǒng)中所保存的該任務類型、業(yè)務主鍵和數(shù)據(jù)報文的對應關系。
【文檔編號】G06F12/08GK103888378SQ201410140626
【公開日】2014年6月25日 申請日期:2014年4月9日 優(yōu)先權日:2014年4月9日
【發(fā)明者】陸祎辰 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿易有限公司