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