分布式隊(duì)列處理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種分布式隊(duì)列處理方法及系統(tǒng)。
【背景技術(shù)】
[0002] 分布式隊(duì)列是廣泛應(yīng)用于互聯(lián)網(wǎng)中的消息異步處理機(jī)制,其運(yùn)行在網(wǎng)絡(luò)的一個(gè)或 多個(gè)節(jié)點(diǎn)之中,維護(hù)一組數(shù)據(jù)結(jié)構(gòu)作為消息的存儲、交換格式,并且提供了相應(yīng)的消息管 理、訪問等功能。消息發(fā)送者將消息發(fā)出,消息傳輸至隊(duì)列并駐留在隊(duì)列中,直到消息接收 者接收,從而保證了消息傳輸?shù)目煽啃?。分布式?duì)列對復(fù)雜的系統(tǒng)進(jìn)行了解耦,發(fā)送者與接 收者無需建立直接聯(lián)系,只要消息的數(shù)據(jù)結(jié)構(gòu)不變,任何一方的變動(dòng)將不會(huì)影響另一方。
[0003] 目前對于分布式隊(duì)列中消息的處理,通常由業(yè)務(wù)程序直接從分布式隊(duì)列下載數(shù)據(jù) 并處理,業(yè)務(wù)程序與分布式隊(duì)列屬于緊耦合。然而,由于沒有存儲處理數(shù)據(jù),當(dāng)數(shù)據(jù)處理失 敗時(shí),需要發(fā)送方重新向隊(duì)列推送數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0004] 本申請實(shí)施例提供一種分布式隊(duì)列處理方法,用于解決當(dāng)數(shù)據(jù)處理失敗時(shí),需要 發(fā)送方重新向隊(duì)列推送數(shù)據(jù)的問題。
[0005] 本申請實(shí)施例還提供一種分布式隊(duì)列處理系統(tǒng),用于解決當(dāng)數(shù)據(jù)處理失敗時(shí),需 要發(fā)送方重新向隊(duì)列推送數(shù)據(jù)的問題。
[0006] 為解決上述技術(shù)問題,本申請實(shí)施例提供:
[0007] -種分布式隊(duì)列處理方法,包括:
[0008] 從隊(duì)列服務(wù)器讀取數(shù)據(jù);
[0009] 處理所述數(shù)據(jù);
[0010] 若所述數(shù)據(jù)處理失敗,存儲所述數(shù)據(jù)至重處理數(shù)據(jù)存儲裝置,供重新處理。
[0011] -種分布式隊(duì)列處理系統(tǒng),包括:
[0012] 數(shù)據(jù)讀取裝置,用于從隊(duì)列服務(wù)器讀取數(shù)據(jù);
[0013] 數(shù)據(jù)處理裝置,用于處理所述數(shù)據(jù);
[0014] 重處理數(shù)據(jù)存儲裝置,用于當(dāng)所述數(shù)據(jù)處理失敗時(shí),存儲所述數(shù)據(jù),供重新處理。
[0015] 與現(xiàn)有技術(shù)相比,本申請實(shí)施例具有以下有益效果:
[0016] 本申請實(shí)施例中,通過系統(tǒng)本身實(shí)現(xiàn)對處理失敗的數(shù)據(jù)進(jìn)行存儲,供后續(xù)重新處 理。因此,避免當(dāng)數(shù)據(jù)處理失敗時(shí),需要發(fā)送方重新向隊(duì)列推送數(shù)據(jù)的發(fā)生,進(jìn)一步保證系 統(tǒng)的安全可靠,且減少與發(fā)送方的交互。
【附圖說明】
[0017] 此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申 請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
[0018] 圖1是本申請實(shí)施例提供的一種分布式隊(duì)列處理方法的流程示意圖;
[0019] 圖2是本申請實(shí)施例提供的一種分布式隊(duì)列處理系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖;
[0020] 圖3是本申請實(shí)施例提供的另一種分布式隊(duì)列處理系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖;
[0021] 圖4是本申請實(shí)施例提供的一種分布式隊(duì)列處理方法的流程詳解圖;
[0022] 圖5是本申請實(shí)施例提供的一種分布式隊(duì)列處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0023] 圖6是本申請實(shí)施例提供的另一種分布式隊(duì)列處理方法的流程詳解圖;
[0024] 圖7是本申請實(shí)施例提供的另一種分布式隊(duì)列處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0025] 圖8是本申請實(shí)施例提供的另一種分布式隊(duì)列處理方法的流程詳解圖;
[0026] 圖9是本申請實(shí)施例提供的另一種分布式隊(duì)列處理系統(tǒng)的結(jié)構(gòu)示意圖;
[0027] 圖10是本申請實(shí)施例提供的另一種分布式隊(duì)列處理方法的流程詳解圖;
[0028] 圖11是本申請實(shí)施例提供的另一種分布式隊(duì)列處理系統(tǒng)的結(jié)構(gòu)示意圖。 具體實(shí)施例
[0029]為使本申請的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請具體實(shí)施例及 相應(yīng)的附圖對本申請技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請一 部分實(shí)施例,而不是全部的實(shí)施例。基于本申請中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做 出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
[0030] 圖1是本申請實(shí)施例提供的一種分布式隊(duì)列處理方法的流程示意圖。
[0031] 所述分布式隊(duì)列處理方法的具體包括以下步驟:
[0032]SlOl :從隊(duì)列服務(wù)器讀取數(shù)據(jù)。
[0033] 本實(shí)施例中,執(zhí)行主體可以為隊(duì)列處理器。所述隊(duì)列處理器從隊(duì)列服務(wù)器讀取數(shù) 據(jù)。
[0034] S102:處理所述數(shù)據(jù)。
[0035] 所述隊(duì)列處理器處理從隊(duì)列服務(wù)器讀取到的數(shù)據(jù)。
[0036] S103:若所述數(shù)據(jù)處理失敗,存儲所述數(shù)據(jù)至重處理數(shù)據(jù)存儲裝置,供重新處理。
[0037] 所述隊(duì)列處理器包括重處理數(shù)據(jù)存儲裝置,一種實(shí)施例中,所述重處理數(shù)據(jù)存儲 裝置可以為重處理數(shù)據(jù)存儲目錄。若數(shù)據(jù)處理失敗,所述隊(duì)列處理器將處理失敗的數(shù)據(jù)存 儲至重處理數(shù)據(jù)存儲裝置中,供重新處理。
[0038] 進(jìn)一步的,對從隊(duì)列服務(wù)器讀取數(shù)據(jù)進(jìn)行說明。從隊(duì)列服務(wù)器讀取數(shù)據(jù)至待處理 數(shù)據(jù)存儲裝置。所述分布式隊(duì)列處理方法還包括:在所述數(shù)據(jù)處理成功后或所述數(shù)據(jù)存儲 至重處理數(shù)據(jù)存儲裝置后,刪除所述待處理數(shù)據(jù)存儲裝置中的所述數(shù)據(jù)。
[0039] 所述隊(duì)列處理器包括待處理數(shù)據(jù)存儲裝置,一種實(shí)施例中,所述待處理數(shù)據(jù)存儲 裝置可以為待處理數(shù)據(jù)存儲目錄。所述隊(duì)列處理器從隊(duì)列服務(wù)器讀取數(shù)據(jù)至待處理數(shù)據(jù)存 儲裝置。在數(shù)據(jù)處理成功后或數(shù)據(jù)存儲至重處理數(shù)據(jù)存儲裝置后,刪除待處理數(shù)據(jù)存儲裝 置中的數(shù)據(jù)。
[0040] 進(jìn)一步的,所述分布式隊(duì)列處理方法還包括:在從所述隊(duì)列服務(wù)器讀取數(shù)據(jù)前,訪 問所述重處理數(shù)據(jù)存儲裝置。若所述重處理數(shù)據(jù)存儲裝置中有數(shù)據(jù),從所述重處理數(shù)據(jù)存 儲裝置讀取數(shù)據(jù)。對若所述數(shù)據(jù)處理失敗,存儲所述數(shù)據(jù)至重處理數(shù)據(jù)存儲裝置,供重新處 理進(jìn)行說明。若所述數(shù)據(jù)處理失敗,存儲所述數(shù)據(jù)至處理失敗數(shù)據(jù)存儲裝置,再將所述數(shù)據(jù) 從所述處理失敗數(shù)據(jù)存儲裝置轉(zhuǎn)存至所述重處理數(shù)據(jù)存儲裝置。
[0041] 所述隊(duì)列處理器優(yōu)先訪問重處理數(shù)據(jù)存儲裝置,若所述重處理數(shù)據(jù)存儲裝置中有 數(shù)據(jù),從所述重處理數(shù)據(jù)存儲裝置讀取數(shù)據(jù),而不再從所述隊(duì)列服務(wù)器讀取數(shù)據(jù)。若所述重 處理數(shù)據(jù)存儲裝置中沒有數(shù)據(jù),再從所述隊(duì)列服務(wù)器讀取數(shù)據(jù)。所述隊(duì)列處理器包括處理 失敗數(shù)據(jù)存儲裝置,一種實(shí)施例中,所述處理失敗數(shù)據(jù)存儲裝置為日志目錄。若所述數(shù)據(jù)處 理失敗,所述隊(duì)列處理器將處理失敗的數(shù)據(jù)存儲至處理失敗數(shù)據(jù)存儲裝置,一定時(shí)間后,通 過人工或自動(dòng)方式,再將處理失敗的數(shù)據(jù)從處理失敗數(shù)據(jù)存儲裝置轉(zhuǎn)存至重處理數(shù)據(jù)存儲 裝直。
[0042] 進(jìn)一步的,對從隊(duì)列服務(wù)器讀取數(shù)據(jù)進(jìn)行說明。從隊(duì)列服務(wù)器讀取數(shù)據(jù)至重處理 數(shù)據(jù)存儲裝置。所述分布式隊(duì)列處理方法還包括:在所述數(shù)據(jù)處理完成后,若所述數(shù)據(jù)處理 成功,刪除所述重處理數(shù)據(jù)存儲裝置中的所述數(shù)據(jù);若所述數(shù)據(jù)處理失敗,將所述數(shù)據(jù)存儲 在所述重處理數(shù)據(jù)存儲裝置中。
[0043] 所述隊(duì)列處理器包括重處理數(shù)據(jù)存儲裝置,一種實(shí)施例中,所述重處理數(shù)據(jù)存儲 裝置可以為重處理數(shù)據(jù)存儲目錄、重處理數(shù)據(jù)服務(wù)器等。所述隊(duì)列處理器從隊(duì)列服務(wù)器讀 取數(shù)據(jù)至重處理數(shù)據(jù)存儲裝置。在所述數(shù)據(jù)處理完成后,若數(shù)據(jù)處理成功,刪除重處理數(shù)據(jù) 存儲裝置中的數(shù)據(jù);若數(shù)據(jù)處理失敗,將數(shù)據(jù)存儲在重處理數(shù)據(jù)存儲裝置中。一定時(shí)間后, 所述隊(duì)列處理器通過人工或自動(dòng)方式執(zhí)行重處理數(shù)據(jù)存儲裝置中存儲的處理失敗的數(shù)據(jù)。
[0044] 進(jìn)一步的,所述分布式隊(duì)列處理方法還包括:在處理所述數(shù)據(jù)后,將所述數(shù)據(jù)傳送 至數(shù)據(jù)同步服務(wù)器;定時(shí)訪問所述數(shù)據(jù)同步服務(wù)器