數據處理方法和裝置的制造方法
【技術領域】
[0001 ]本發明涉及計算機技術領域,具體涉及一種數據處理方法和裝置。
【背景技術】
[0002]隨著計算機技術的飛速發展,在許多應用領域,存在越來越多的需要管理的數據,諸如用戶信息數據、系統日志數據等。通常采用數據庫對這些數據進行管理。在通過對數據庫中的數據進行操作來完成某種任務時,如果操作失敗的話會產生任務失敗數據。例如,如果期望為某個用戶增加經驗值,則需要更新數據庫中存儲的該用戶的經驗值數據。在更新用戶的經驗值數據時,如果由于某些原因導致更新操作失敗,也就是增加經驗值的任務失敗,則可以產生一條關于為該用戶增加經驗值的任務失敗的記錄,該記錄即上述任務失敗數據。通常將任務失敗數據寫入消息隊列中,消費者會不斷輪詢該消息隊列,從消息隊列中取出并處理任務失敗數據。正常情況下失敗任務的數量比較少,但是在數據庫出現故障,無法進行數據寫入操作的情況下,會產生大量任務失敗數據。大量的任務失敗數據涌入消息隊列會給消息隊列帶來巨大壓力,很有可能導致消息隊列崩潰。
【發明內容】
[0003]鑒于上述問題,提出了本發明以便提供一種至少部分地解決上述問題的數據處理方法和裝置。
[0004]根據本發明一個方面,提供一種數據處理方法。該數據處理方法包括:接收任務失敗數據并對其進行分類,其中,所述任務失敗數據用于指示與數據庫中的數據操作相關的失敗任務;將所述任務失敗數據分別存儲到與其所屬類別相對應的消息隊列中;以及利用與每個消息隊列相對應的消費者進程消費并處理該消息隊列中的任務失敗數據。
[0005]根據本發明另一個方面,提供一種數據處理裝置。該數據處理裝置包括分類模塊、存儲模塊和處理模塊。分類模塊用于接收任務失敗數據并對其進行分類,其中,所述任務失敗數據用于指示與數據庫中的數據操作相關的失敗任務。存儲模塊用于將所述任務失敗數據分別存儲到與其所屬類別相對應的消息隊列中。處理模塊用于利用與每個消息隊列相對應的消費者進程消費并處理該消息隊列中的任務失敗數據。
[0006]根據本發明實施例的數據處理方法和裝置,將任務失敗數據進行分類,由與任務失敗數據所屬類別相對應的消費者進程處理任務失敗數據,這樣可以提高對任務失敗數據的處理速度,避免任務失敗數據長期留存在消息隊列中,從而可以緩解消息隊列的存儲壓力。
[0007]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0008]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0009]圖1示出根據本發明一個實施例的數據處理方法的流程示意圖;
[0010]圖2示出根據本發明另一個實施例的數據處理方法的流程示意圖;
[0011]圖3示出根據本發明另一個實施例的數據處理方法的流程示意圖;
[0012]圖4示出根據本發明另一個實施例的數據處理方法的流程示意圖;以及
[0013]圖5示出根據本發明一個實施例的數據處理裝置的示意性框圖。
【具體實施方式】
[0014]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0015]根據本發明的一個方面,提供一種數據處理方法。圖1示出根據本發明一個實施例的數據處理方法的流程示意圖。
[0016]如圖1所示,數據處理方法100包括以下步驟。
[0017]在步驟S110,接收任務失敗數據并對其進行分類,其中,所述任務失敗數據用于指示與數據庫中的數據操作相關的失敗任務。
[0018]消息隊列可以存儲任務失敗數據。任務失敗數據可以是在對數據庫進行數據操作時任務失敗所產生的記錄。例如,如果為用戶增加經驗值的任務失敗,即對數據庫中存儲的某用戶的經驗值數據的更新操作沒有成功,則可以生成任務失敗數據。可以將這些任務失敗數據寫入消息隊列。
[0019]示例性地,所述消息隊列可以設置于內存中。內存的讀寫速度快,響應時間短,非常適于進行數據的臨時緩存和中轉,因此可以使用內存存儲消息隊列。
[0020]可以建立不同的消息隊列,每個消息隊列用于存儲某種類別的任務失敗數據。因此,在接收到任務失敗數據時,可以對接收到的任務失敗數據進行分類,以確定其應當存儲于哪個消息隊列中。
[0021]例如,可以針對為用戶增加經驗值的任務、為用戶分配特權的任務以及記錄用戶的任務完成狀態的任務分別建立三個消息隊列:消息隊列A、消息隊列B和消息隊列C。消息隊列A用于存儲在為用戶增加經驗值的任務執行失敗時產生的任務失敗數據,消息隊列B用于存儲在為用戶分配特權的任務執行失敗時產生的任務失敗數據,消息隊列C用于存儲在記錄用戶的任務完成狀態的任務執行失敗時產生的任務失敗數據。為了描述方便,在下文的示例中將沿用本示例中關于消息隊列A、消息隊列B和消息隊列C的設定,本領域技術人員可以理解,這些僅是示例而非對本發明的限制。
[0022]在步驟S120,將所述任務失敗數據分別存儲到與其所屬類別相對應的消息隊列中。
[0023]可以根據步驟SllO的分類結果將任務失敗數據存儲到對應的消息隊列中。例如,可以將為用戶增加經驗值的任務執行失敗時產生的任務失敗數據存儲到消息隊列A中,將為用戶分配特權的任務執行失敗時產生的任務失敗數據存儲到消息隊列B中,將記錄用戶的任務完成狀態的任務執行失敗時產生的任務失敗數據存儲到消息隊列C中。
[0024]在步驟S130,利用與每個消息隊列相對應的消費者進程消費并處理該消息隊列中的任務失敗數據。
[0025]可以利用消費者進程輪詢消息隊列,以在消息隊列中消費任務失敗數據。每個消息隊列具有各自對應的消費者進程。例如,消息隊列A中的任務失敗數據可以利用消費者進程a處理,消息隊列B中的任務失敗數據可以利用消費者進程b處理,消息隊列C中的任務失敗數據可以利用消費者進程c處理。
[0026]通常存儲數據的數據庫可以是分布式部署的,例如,存儲經驗值數據的數據庫與存儲特權數據的數據庫可以位于不同的機房中,因此當某個機房出現故障時,針對該機房的數據庫的數據操作可能大部分會失敗,而其他機房是可以正常工作的。因此消費者進程無需大規模輪詢針對其他機房的數據庫的數據操作所產生的任務失敗數據。因此,將任務失敗數據按照失敗任務的類型進行分類并利用專用的消息隊列和消費者進程進行處理是一種高效的數據處理方式,這可以加快數據處理速度,并且有助于有針對性地提高特定類別的任務失敗數據的處理能力。
[0027]總之,與由同一消息隊列存儲任務失敗數據并由消費者進程統一消費和處理該消息隊列中的任務失敗數據不同,根據本發明實施例,對消息隊列和消費者進程進行區分,不同的消費者進程處理不同的消息隊列中的任務失敗數據,這樣,消費者進程可以互不影響,對任務失敗數據的處理將更為靈活高效,可以有效緩解消息隊列的存儲壓力。
[0028]根據本發明實施例的數據處理方法,將任務失敗數據進行分類,由與任務失敗數據所屬類別相對應的消費者進程處理任務失敗數據,這樣可以提高對任務失敗數據的處理速度,避免任務失敗數據長期留存在消息隊列中,從而可以緩解消息隊列的存儲壓力。
[0029]圖2示出根據本發明另一個實施例的數據處理方法200的流程示意圖。圖2所示的數據處理方法200的步驟3210、3220和3240分別與圖1所示的數據處理方法100的步驟3110至S130相對應。本領域技術人員根據圖1和上文的描述可以理解圖2中的上述步驟,為了簡潔,在此不再贅述。根據本實施例,在步驟S240之前,數據處理方法200可以進一步包括步驟S230o
[0030]在步驟S230,為消息隊列平均分配消費者進程。
[0031]如上文所述,可以將為用戶增加經驗值的任務執行失敗時產生的任務失敗數據存儲到消息隊列A中,將為用戶分配特權的任務執行失敗時產生的任務失敗數據存儲到消息隊列B中,將記錄用戶的任務完成狀態的任務執行失敗時產生的任務失敗數據存儲到消息隊列C中。
[0032]可以采用平均分配方式為消息隊列A、消息隊列B和消息隊列C分配消費者進程,例如,可以為每個消息隊列分配10個消費者進程,也就是說,這三個消息隊列分配到的消費者進程的數目相同。平均分配是一種對計算資源的均衡處理方式,可以在初始啟用消息隊列時采用這種方式分配消費者進程。
[0033]雖然圖2中示出步驟S230在步驟S220之后實施,但是可以理