本申請(qǐng)涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤指一種數(shù)據(jù)處理方法及裝置、資訊處理系統(tǒng)。
背景技術(shù):
網(wǎng)絡(luò)中,資訊處理系統(tǒng)之間業(yè)務(wù)數(shù)據(jù)的實(shí)時(shí)交互傳遞一般采用異步交互方式。
相關(guān)技術(shù)中,資訊處理系統(tǒng)與外部系統(tǒng)異步交互的過程是,當(dāng)前節(jié)點(diǎn)的應(yīng)用系統(tǒng)層接收業(yè)務(wù)請(qǐng)求,將請(qǐng)求處理的業(yè)務(wù)數(shù)據(jù)投入到當(dāng)前節(jié)點(diǎn)上操作系統(tǒng)層已有的線程池或操作系統(tǒng)層新起的線程上,由操作系統(tǒng)層的線程池或新起的線程對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行處理,雖然實(shí)現(xiàn)了異步處理,但需要管理線程池的資源和運(yùn)行調(diào)度,或?qū)χ骶€程外的新線程進(jìn)行管理,系統(tǒng)復(fù)雜度高,處理效率低,且不能有效利用資訊處理系統(tǒng)中的其他節(jié)點(diǎn)資源,發(fā)生問題時(shí)還需要人工排查,系統(tǒng)維護(hù)成本也比較高。
綜上,在實(shí)現(xiàn)本申請(qǐng)的過程中,發(fā)明人發(fā)現(xiàn),對(duì)于業(yè)務(wù)處理的異步交互中系統(tǒng)復(fù)雜度高、不能有效利用其他節(jié)點(diǎn)資源以及系統(tǒng)維護(hù)成本高的問題,目前還沒有好的解決方案。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問題,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)處理方法及裝置、資訊處理系統(tǒng)。
一方面,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)處理方法,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),包括:
接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;
將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
向所述集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,以便所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象進(jìn)行處理。
其中,在將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中之前,還包括:
為所述第一數(shù)據(jù)對(duì)象設(shè)置第一狀態(tài)標(biāo)識(shí),所述第一狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為待處理的狀態(tài);
在所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,還包括:
為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。
其中,在將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息之后,還包括:
發(fā)送第一響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第一響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已收到。
其中,在接收所述數(shù)據(jù)處理請(qǐng)求之后,生成任務(wù)消息之前,還包括:
驗(yàn)證所述數(shù)據(jù)庫中是否已存儲(chǔ)有所述數(shù)據(jù)處理請(qǐng)求中待處理的第一數(shù)據(jù)對(duì)象;
如果是,則從所述數(shù)據(jù)庫中查詢所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí),根據(jù)所述任務(wù)標(biāo)識(shí)提取所述第一數(shù)據(jù)對(duì)象,為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài),并對(duì)所述第一數(shù)據(jù)對(duì)象進(jìn)行處理;
如果不是,則創(chuàng)建任務(wù)流水,將所述任務(wù)流水的任務(wù)標(biāo)識(shí)與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)后存儲(chǔ)到所述集群的數(shù)據(jù)庫中。
另一方面,本申請(qǐng)還提供了一種數(shù)據(jù)處理方法,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn);包括:
所述節(jié)點(diǎn)接收任務(wù)消息,所述任務(wù)消息攜帶有與待處理的第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
其中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,所述進(jìn)行處理之前,還包括:
所述節(jié)點(diǎn)為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。
其中,從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象,包括:
在確定所述第一數(shù)據(jù)對(duì)象被設(shè)置為第二狀態(tài)標(biāo)識(shí)時(shí),從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象。
其中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,還包括:
所述節(jié)點(diǎn)為所述第一數(shù)據(jù)對(duì)象設(shè)置第四狀態(tài)標(biāo)識(shí)或第五狀態(tài)標(biāo)識(shí),所述第四狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理失敗的狀態(tài),所述第五狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理成功的狀態(tài)。
其中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,還包括:
所述節(jié)點(diǎn)將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群的數(shù)據(jù)庫中。
其中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,還包括:
所述節(jié)點(diǎn)將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群外的數(shù)據(jù)庫中,以供展示時(shí)使用。
其中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,還包括:
發(fā)送第二響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第二響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已處理完成。
一方面,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)處理裝置,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn);包括:
第一接收單元,用于接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;
第一處理單元,用于將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
發(fā)布單元,用于向所述集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,以便所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象進(jìn)行處理。
其中,所述第一處理單元,還用于在將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中之前,為所述第一數(shù)據(jù)對(duì)象設(shè)置第一狀態(tài)標(biāo)識(shí),所述第一狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為待處理的狀態(tài);以及,用于在根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。
其中,還包括:第一發(fā)送單元,用于發(fā)送第一響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第一響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已收到。
另一方面,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,包括處理器和存儲(chǔ)器;其特征在于,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn);所述存儲(chǔ)器用于存儲(chǔ)用于數(shù)據(jù)處理的程序;所述用于數(shù)據(jù)處理的程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:
接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;
將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
向所述集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,以便所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象進(jìn)行處理。
一方面,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),所述數(shù)據(jù)處理裝置應(yīng)用于所述節(jié)點(diǎn),包括:
第二接收單元,用于接收任務(wù)消息,所述任務(wù)消息攜帶有與待處理的第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
第二處理單元,用于根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
其中,所述第二處理單元,還用于在從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,所述進(jìn)行處理之前,為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。
其中,所述第二處理單元,用于在確定所述第一數(shù)據(jù)對(duì)象被設(shè)置為第二狀態(tài)標(biāo)識(shí)時(shí),從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象。
其中,所述第二處理單元,還用于從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,為所述第一數(shù)據(jù)對(duì)象設(shè)置第四狀態(tài)標(biāo)識(shí)或第五狀態(tài)標(biāo)識(shí),所述第四狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理失敗的狀態(tài),所述第五狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理成功的狀態(tài)。
其中,所述第二處理單元,還用于從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群的數(shù)據(jù)庫中。
其中,所述第二處理單元,還用于從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群外的數(shù)據(jù)庫中,以供展示時(shí)使用。
其中,還包括:第二發(fā)送單元,用于在所述第二處理單元對(duì)所述第一數(shù)據(jù)對(duì)象處理完成之后,發(fā)送第二響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第二響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已處理完成。
另一方面,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,包括處理器和存儲(chǔ)器;其特征在于,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),所述數(shù)據(jù)處理裝置應(yīng)用于所述節(jié)點(diǎn);所述存儲(chǔ)器用于存儲(chǔ)用于數(shù)據(jù)處理的程序;所述用于數(shù)據(jù)處理的程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:
接收任務(wù)消息,所述任務(wù)消息攜帶有與待處理的第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
另一方面,本申請(qǐng)還提供了一種資訊處理系統(tǒng),應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),所述多個(gè)節(jié)點(diǎn)包括:第一節(jié)點(diǎn)和第二節(jié)點(diǎn);其中,
所述第一節(jié)點(diǎn),用于接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;并用于將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);以及,用于向所述集群中的多個(gè)所述第二節(jié)點(diǎn)發(fā)布所述任務(wù)消息;
所述第二節(jié)點(diǎn),用于接收所述第一節(jié)點(diǎn)發(fā)布的所述任務(wù)消息;并用于根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
本申請(qǐng)包括以下優(yōu)點(diǎn):
本申請(qǐng)通過集群中的不同節(jié)點(diǎn)執(zhí)行或同一節(jié)點(diǎn)在不同時(shí)刻執(zhí)行數(shù)據(jù)的處理,不僅實(shí)現(xiàn)了數(shù)據(jù)的異步處理,同時(shí)避免了新起線程池和線程隊(duì)列的使用,降低了復(fù)雜度,提升了處理效率,也優(yōu)化清晰了數(shù)據(jù)處理流程,且能夠充分利用集群中的閑置節(jié)點(diǎn)資源,避免資源浪費(fèi)。
當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說明
附圖用來提供對(duì)本申請(qǐng)技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本申請(qǐng)的實(shí)施例一起用于解釋本申請(qǐng)的技術(shù)方案,并不構(gòu)成對(duì)本申請(qǐng)技術(shù)方案的限制。
圖1為本申請(qǐng)一種數(shù)據(jù)處理方法的流程圖;
圖2為本申請(qǐng)一種數(shù)據(jù)處理裝置的組成結(jié)構(gòu)示意圖;
圖3為本申請(qǐng)另一種數(shù)據(jù)處理方法的流程圖;
圖4為本申請(qǐng)另一種數(shù)據(jù)處理裝置的組成結(jié)構(gòu)示意圖;
圖5為本申請(qǐng)資訊處理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖6為本申請(qǐng)實(shí)施例接收數(shù)據(jù)處理請(qǐng)求到的發(fā)布任務(wù)消息的數(shù)據(jù)處理流程示意圖;
圖7為本申請(qǐng)實(shí)施例發(fā)布任務(wù)消息之后數(shù)據(jù)處理的流程示意圖;
圖8為本申請(qǐng)實(shí)施例新聞相關(guān)的數(shù)據(jù)處理流程示意圖。
具體實(shí)施方式
為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對(duì)本申請(qǐng)的實(shí)施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
在本申請(qǐng)一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
實(shí)施例一
如圖1所示,本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)處理方法,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),可包括:
步驟101,接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;
步驟102,將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
步驟103,向所述集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,以便所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象進(jìn)行處理。
在一種實(shí)現(xiàn)方式中,可在將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中之前,為所述第一數(shù)據(jù)對(duì)象設(shè)置第一狀態(tài)標(biāo)識(shí),所述第一狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為待處理的狀態(tài);在所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,還可為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。如此,可通過狀態(tài)標(biāo)識(shí)來標(biāo)識(shí)第一數(shù)據(jù)對(duì)象的處理狀態(tài),便于在處理時(shí)可通過識(shí)別第一數(shù)據(jù)對(duì)象的狀態(tài)決定是否繼續(xù)處理。
在一種實(shí)現(xiàn)方式中,所述任務(wù)標(biāo)識(shí)可以是任務(wù)流水號(hào)。
在一種實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)對(duì)象可以是資訊。例如,所述第一數(shù)據(jù)對(duì)象可以是新聞、供求、動(dòng)態(tài)、技術(shù)、政策、評(píng)論、觀點(diǎn)和學(xué)術(shù)等類型的資訊。
在一種實(shí)現(xiàn)方式中,可以在將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息之后,發(fā)送第一響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第一響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已收到。如此,可以及時(shí)將第一數(shù)據(jù)對(duì)象的處理情況反饋給請(qǐng)求方。
相關(guān)技術(shù)中,應(yīng)用B與應(yīng)用A建立鏈接,獲取待處理的數(shù)據(jù)對(duì)象,在數(shù)據(jù)處理完成之后才會(huì)返回響應(yīng)消息給應(yīng)用A,這樣的話,在數(shù)據(jù)處理過程中應(yīng)用B與應(yīng)用A之間的鏈接將會(huì)一直處于被占用的狀態(tài)。對(duì)于資訊的處理來講,處理時(shí)間較長,在這較長的時(shí)間內(nèi)一直占用鏈接,必將會(huì)造成通信資源的浪費(fèi)。
本申請(qǐng)中,獲取待處理的第一數(shù)據(jù)對(duì)象之后即刻回復(fù)響應(yīng)消息給請(qǐng)求方,請(qǐng)求方收到響應(yīng)消息之后,可將相關(guān)鏈接斷開。如此,在數(shù)據(jù)處理的長時(shí)間內(nèi)不會(huì)一直占用鏈接,節(jié)省了通信資源。
在一種實(shí)現(xiàn)方式中,在接收所述數(shù)據(jù)處理請(qǐng)求之后,生成任務(wù)消息之前,還可以驗(yàn)證所述數(shù)據(jù)處理請(qǐng)求中的第一數(shù)據(jù)對(duì)象是否為重復(fù)接收,也就是說,驗(yàn)證所述數(shù)據(jù)庫中是否已存儲(chǔ)有所述第一數(shù)據(jù)對(duì)象;如果是(即之前收到過所述第一數(shù)據(jù)對(duì)象),從所述數(shù)據(jù)庫中查詢所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí),根據(jù)所述任務(wù)標(biāo)識(shí)提取所述第一數(shù)據(jù)對(duì)象,為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài),并對(duì)所述第一數(shù)據(jù)對(duì)象進(jìn)行處理;如果不是(即之前沒有收到過所述第一數(shù)據(jù)對(duì)象),創(chuàng)建任務(wù)流水,將所述任務(wù)流水的任務(wù)標(biāo)識(shí)與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)后存儲(chǔ)到所述集群的數(shù)據(jù)庫中。
如圖2所示,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn);包括:
第一接收單元21,用于接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;
第一處理單元22,用于將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
發(fā)布單元23,用于向所述集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,以便所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象進(jìn)行處理。
在一種實(shí)現(xiàn)方式中,所述第一處理單元還可用于在將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中之前,為所述第一數(shù)據(jù)對(duì)象設(shè)置第一狀態(tài)標(biāo)識(shí),所述第一狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為待處理的狀態(tài);以及,還可用于在根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。
在一種實(shí)現(xiàn)方式中,所述數(shù)據(jù)處理裝置還可包括:第一發(fā)送單元24,用于發(fā)送第一響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第一響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已收到。
實(shí)際應(yīng)用中,第一接收單元21、第一處理單元22、發(fā)布單元23以及第一發(fā)送單元24分別可以是軟件、硬件或兩者的結(jié)合。所述第一接收單元21可以通過信號(hào)接收器或類似設(shè)備實(shí)現(xiàn);所述第一處理單元22可以通過數(shù)據(jù)處理器、CPU或類似設(shè)備實(shí)現(xiàn);所述發(fā)布單元23和/或第一發(fā)送單元24可以通過信號(hào)發(fā)射器或類似設(shè)備實(shí)現(xiàn)。上述數(shù)據(jù)處理裝置可以是信號(hào)接收器、數(shù)據(jù)處理器以及信號(hào)發(fā)射器組成的設(shè)備,也可以是具有上述第一接收單元21、第一處理單元22、發(fā)布單元23以及第一發(fā)送單元24相應(yīng)功能的服務(wù)器或計(jì)算設(shè)備。
在一種實(shí)現(xiàn)方式中,上述數(shù)據(jù)處理裝置應(yīng)用于所述集群中的節(jié)點(diǎn)上,所述節(jié)點(diǎn)可以是服務(wù)器或計(jì)算設(shè)備。
在一種實(shí)現(xiàn)方式中,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,包括處理器和存儲(chǔ)器;應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn);所述存儲(chǔ)器用于存儲(chǔ)用于數(shù)據(jù)處理的程序;所述用于數(shù)據(jù)處理的程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:
接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;
將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
向所述集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,以便所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí)從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象進(jìn)行處理。
需要說明的是,所述用于數(shù)據(jù)處理的程序在被所述處理器讀取執(zhí)行時(shí)還可執(zhí)行圖1所示方法的所有操作,具體可參考上文相關(guān)說明。
此外,本申請(qǐng)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令被執(zhí)行時(shí)實(shí)現(xiàn)所述數(shù)據(jù)處理方法。
實(shí)施例二
如圖3所示,本申請(qǐng)還提供了另一種數(shù)據(jù)處理方法,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn);包括:
所述節(jié)點(diǎn)接收任務(wù)消息,所述任務(wù)消息攜帶有與待處理的第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
所述節(jié)點(diǎn)根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
在一種實(shí)現(xiàn)方式中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,所述進(jìn)行處理之前,所述節(jié)點(diǎn)還可為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。如此,可根據(jù)第一數(shù)據(jù)對(duì)象的狀態(tài)進(jìn)行后續(xù)處理。
在一種實(shí)現(xiàn)方式中,可在確定所述第一數(shù)據(jù)對(duì)象被設(shè)置為第二狀態(tài)標(biāo)識(shí)時(shí),從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象。如此,便于識(shí)別需要處理的第一數(shù)據(jù)對(duì)象,也便于在處理過程中基于處理進(jìn)度更新第一數(shù)據(jù)對(duì)象的處理狀態(tài)。
在一種實(shí)現(xiàn)方式中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,所述節(jié)點(diǎn)可以為所述第一數(shù)據(jù)對(duì)象設(shè)置第四狀態(tài)標(biāo)識(shí)或第五狀態(tài)標(biāo)識(shí),所述第四狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理失敗的狀態(tài),所述第五狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理成功的狀態(tài)。如此,可以通過標(biāo)識(shí)第一數(shù)據(jù)對(duì)象的處理狀態(tài),便于后續(xù)通知請(qǐng)求方相應(yīng)第一數(shù)據(jù)對(duì)象的處理狀態(tài)。
在一種實(shí)現(xiàn)方式中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,所述節(jié)點(diǎn)可將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群的數(shù)據(jù)庫中。以便在需要時(shí)從集群的數(shù)據(jù)庫中查詢第一數(shù)據(jù)對(duì)象是否被處理過以及處理的狀態(tài)等。
在一種實(shí)現(xiàn)方式中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,所述節(jié)點(diǎn)可將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群外的數(shù)據(jù)庫中,以供展示時(shí)使用。如此,以便在應(yīng)用中展示第一數(shù)據(jù)對(duì)象時(shí)可直接從相應(yīng)的數(shù)據(jù)庫中讀取。
在一種實(shí)現(xiàn)方式中,從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,還可發(fā)送第二響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第二響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已處理完成。如此,可將第一數(shù)據(jù)對(duì)象的處理結(jié)果同時(shí)給請(qǐng)求方,以便請(qǐng)求方將該處理結(jié)果反饋給所述第一數(shù)據(jù)對(duì)象的發(fā)布應(yīng)用,該發(fā)布應(yīng)用可基于第一數(shù)據(jù)對(duì)象的處理結(jié)果確定是否需要向當(dāng)前應(yīng)用重新發(fā)布。例如,所述第一數(shù)據(jù)對(duì)象可以是資訊,所述發(fā)布應(yīng)用可以是發(fā)布該資訊的應(yīng)用,所述當(dāng)前應(yīng)用可以是從所述發(fā)布應(yīng)用獲取資訊加工之后再展示的應(yīng)用。
如圖4所示,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),所述數(shù)據(jù)處理裝置應(yīng)用于所述節(jié)點(diǎn),包括:
第二接收單元41,用于接收任務(wù)消息,所述任務(wù)消息攜帶有與待處理的第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
第二處理單元42,用于根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
在一種實(shí)現(xiàn)方式中,所述第二處理單元42,還可用于在從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象之后,所述進(jìn)行處理之前,為所述第一數(shù)據(jù)對(duì)象設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理中的狀態(tài)。
在一種實(shí)現(xiàn)方式中,所述第二處理單元42,可用于在確定所述第一數(shù)據(jù)對(duì)象被設(shè)置為第二狀態(tài)標(biāo)識(shí)時(shí),從所述數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象。
在一種實(shí)現(xiàn)方式中,所述第二處理單元42,還可用于從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,為所述第一數(shù)據(jù)對(duì)象設(shè)置第四狀態(tài)標(biāo)識(shí)或第五狀態(tài)標(biāo)識(shí),所述第四狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理失敗的狀態(tài),所述第五狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述第一數(shù)據(jù)對(duì)象為處理成功的狀態(tài)。
在一種實(shí)現(xiàn)方式中,所述第二處理單元,還可用于從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群的數(shù)據(jù)庫中。
在一種實(shí)現(xiàn)方式中,所述第二處理單元42,還可用于從數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理之后,將處理完成的所述第一數(shù)據(jù)對(duì)象保存到所述集群外的數(shù)據(jù)庫中,以供展示時(shí)使用。
在一種實(shí)現(xiàn)方式中,還包括:第二發(fā)送單元43,用于在所述第二處理單元42對(duì)所述第一數(shù)據(jù)對(duì)象處理完成之后,發(fā)送第二響應(yīng)消息給所述第一數(shù)據(jù)對(duì)象的請(qǐng)求方,所述第二響應(yīng)消息用于指示所述第一數(shù)據(jù)對(duì)象已處理完成。
實(shí)際應(yīng)用中,第二接收單元41、第二處理單元42以及第二發(fā)送單元43分別可以是軟件、硬件或兩者的結(jié)合。所述第二接收單元41可以通過信號(hào)接收器或類似設(shè)備實(shí)現(xiàn);所述第二處理單元42可以通過數(shù)據(jù)處理器、CPU或類似設(shè)備實(shí)現(xiàn);所述第二發(fā)送單元43可以通過信號(hào)發(fā)射器或類似設(shè)備實(shí)現(xiàn)。上述數(shù)據(jù)處理裝置可以是信號(hào)接收器、數(shù)據(jù)處理器以及信號(hào)發(fā)射器組成的設(shè)備,也可以是具有上述二接收單元41、第二處理單元42以及第二發(fā)送單元43相應(yīng)功能的服務(wù)器或計(jì)算設(shè)備。
在一種實(shí)現(xiàn)方式中,上述數(shù)據(jù)處理裝置應(yīng)用于所述集群中的節(jié)點(diǎn)上,所述節(jié)點(diǎn)可以是服務(wù)器或計(jì)算設(shè)備。
在一種實(shí)現(xiàn)方式中,本申請(qǐng)還提供了一種數(shù)據(jù)處理裝置,包括處理器和存儲(chǔ)器;應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),所述數(shù)據(jù)處理裝置應(yīng)用于所述節(jié)點(diǎn);所述存儲(chǔ)器用于存儲(chǔ)用于數(shù)據(jù)處理的程序;所述用于數(shù)據(jù)處理的程序在被所述處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:
接收任務(wù)消息,所述任務(wù)消息攜帶有與待處理的第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);
根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
需要說明的是,所述用于數(shù)據(jù)處理的程序在被所述處理器讀取執(zhí)行時(shí)還可執(zhí)行圖3所示方法的所有操作,具體可參考上文相關(guān)說明。
此外,本申請(qǐng)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令被執(zhí)行時(shí)實(shí)現(xiàn)所述數(shù)據(jù)處理方法。
實(shí)施例三
如圖5所示,本申請(qǐng)還提供了一種資訊處理系統(tǒng),應(yīng)用于集群,所述集群包括多個(gè)節(jié)點(diǎn),所述多個(gè)節(jié)點(diǎn)至少包括:第一節(jié)點(diǎn)51和第二節(jié)點(diǎn)52;其中,
所述第一節(jié)點(diǎn)51,用于接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;并用于將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);以及,用于向所述集群中的多個(gè)所述第二節(jié)點(diǎn)發(fā)布所述任務(wù)消息;
所述第二節(jié)點(diǎn)52,用于接收所述第一節(jié)點(diǎn)發(fā)布的所述任務(wù)消息;并用于根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
本實(shí)施例中,所述第一節(jié)點(diǎn)51還可以用于接收所述第一節(jié)點(diǎn)發(fā)布的所述任務(wù)消息;并用于根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。所述第二節(jié)點(diǎn)52也可用于接收數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求中包括待處理的第一數(shù)據(jù)對(duì)象;并用于將所述第一數(shù)據(jù)對(duì)象存儲(chǔ)到所述集群的數(shù)據(jù)庫中,生成任務(wù)消息,所述任務(wù)消息中攜帶有與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí);以及,用于向所述集群中的多個(gè)所述第二節(jié)點(diǎn)發(fā)布所述任務(wù)消息。也就是說,實(shí)際應(yīng)用中,集群中可以是同一節(jié)點(diǎn)發(fā)布并接收任務(wù)消息,也可以是不同節(jié)點(diǎn)執(zhí)行任務(wù)消息的發(fā)布和接收。
所述第二節(jié)點(diǎn),用于接收所述第一節(jié)點(diǎn)發(fā)布的所述任務(wù)消息;并用于根據(jù)所述任務(wù)標(biāo)識(shí),從所述集群的數(shù)據(jù)庫中提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理
相關(guān)技術(shù)中的異步處理是:集群中的一個(gè)節(jié)點(diǎn)接收到數(shù)據(jù)處理請(qǐng)求之后,將其中待處理的數(shù)據(jù)對(duì)象保存到數(shù)據(jù)庫,然后在該節(jié)點(diǎn)上新起線程或使用已有的線程池中線程隊(duì)列,從數(shù)據(jù)庫中撈取所述數(shù)據(jù)對(duì)象進(jìn)行處理。在數(shù)據(jù)對(duì)象處理完成之后,再反饋響應(yīng)消息給發(fā)出上述數(shù)據(jù)處理請(qǐng)求的請(qǐng)求方。
本申請(qǐng)中,集群中的節(jié)點(diǎn)接收數(shù)據(jù)處理請(qǐng)求,將其中待處理的數(shù)據(jù)對(duì)象保存到數(shù)據(jù)庫;然后,生成任務(wù)消息,在該任務(wù)消息中攜帶所述數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí),將所述任務(wù)消息發(fā)布出去以便集群中的其他節(jié)點(diǎn)可接收所述任務(wù)消息。在將任務(wù)消息發(fā)布之后,所述節(jié)點(diǎn)反饋第一響應(yīng)消息給發(fā)出所述數(shù)據(jù)處理請(qǐng)求的請(qǐng)求方。集群中的任意節(jié)點(diǎn)接收所述任務(wù)消息,根據(jù)其中的任務(wù)標(biāo)識(shí)從第一數(shù)據(jù)庫中提取所述數(shù)據(jù)對(duì)象進(jìn)行處理,在處理完成后,反饋第二相應(yīng)消息給所述請(qǐng)求方,該第二響應(yīng)消息中包含所述數(shù)據(jù)對(duì)象的處理結(jié)果。如此,本申請(qǐng)利用消息機(jī)制,將數(shù)據(jù)處理解耦為兩步,通過集群中的不同節(jié)點(diǎn)執(zhí)行或同一節(jié)點(diǎn)在不同時(shí)刻執(zhí)行,不僅實(shí)現(xiàn)了數(shù)據(jù)的異步處理,而且避免了新起線程池和線程隊(duì)列的使用,降低了集群系統(tǒng)的復(fù)雜度,提升了處理效率,也優(yōu)化清晰了數(shù)據(jù)處理流程,且能夠充分利用集群中的閑置節(jié)點(diǎn)資源,避免資源浪費(fèi)。
在一些實(shí)現(xiàn)方式中,集群可通過調(diào)用消息中間件來實(shí)現(xiàn)所述任務(wù)消息在發(fā)布和接收之間的傳遞。具體的,可在消息中間件中預(yù)配置對(duì)應(yīng)所述任務(wù)消息的主題,并配置集群中全部或部分節(jié)點(diǎn)為該主題的訂閱者和發(fā)布者。集群中的節(jié)點(diǎn)發(fā)布任務(wù)消息之后,消息中間件接收所述任務(wù)消息并將該任務(wù)消息投遞出去,作為該任務(wù)消息訂閱者的節(jié)點(diǎn)接收所述任務(wù)消息,根據(jù)其中的任務(wù)標(biāo)識(shí)從集群的數(shù)據(jù)庫中提取數(shù)據(jù)對(duì)象進(jìn)行處理。例如,可以在消息中間件的服務(wù)器上可以定義對(duì)應(yīng)所述任務(wù)消息的第一主題,并配置所述第一主題的發(fā)布者和訂閱者為集群中的全部或部分節(jié)點(diǎn)(兩個(gè)或兩個(gè)以上的節(jié)點(diǎn))。集群中的節(jié)點(diǎn)根據(jù)所述第一主題生成所述任務(wù)消息并發(fā)布,消息中間件接收所述任務(wù)消息,并向所述第一主題的訂閱者投遞所述任務(wù)消息,集群中的多個(gè)節(jié)點(diǎn)作為所述訂閱者將會(huì)接收到所述任務(wù)消息,該任務(wù)消息中包含所述任務(wù)流水號(hào)。如此,通過消息中間件實(shí)現(xiàn)任務(wù)消息在發(fā)布和接收之間的傳遞,可實(shí)現(xiàn)所述任務(wù)消息的可靠傳遞,可以降低集群中節(jié)點(diǎn)之間的耦合度,提高所述集群的吞吐量、可擴(kuò)展性和高可用性。
在一些實(shí)現(xiàn)方式中,在集群中所述任務(wù)消息的發(fā)布與接收之間的傳遞過程,可以通過如下方式實(shí)現(xiàn):
在第一服務(wù)器和集群中所有節(jié)點(diǎn)上預(yù)配置對(duì)應(yīng)所述任務(wù)消息的第一消息類型,并在所述第一服務(wù)器配置所述第一消息類型的發(fā)送端地址列表和接收端地址列表,將集群所有節(jié)點(diǎn)的地址同時(shí)寫入所述第一消息類型的所述發(fā)送端地址列表和接收端地址列表;
集群中的第一節(jié)點(diǎn)接收數(shù)據(jù)處理請(qǐng)求之后,將所述數(shù)據(jù)處理請(qǐng)求中待處理的第一數(shù)據(jù)對(duì)象存儲(chǔ)到集群的數(shù)據(jù)庫中,基于預(yù)配置的所述第一消息類型生成所述任務(wù)消息,該任務(wù)消息的內(nèi)容包含與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí)(如任務(wù)流水號(hào)等),并將該任務(wù)消息發(fā)布;在發(fā)布所述任務(wù)消息時(shí),還攜帶集群中節(jié)點(diǎn)的地址;
所述第一服務(wù)器接收所述任務(wù)消息,根據(jù)所述任務(wù)消息所對(duì)應(yīng)第一消息類型的接收端地址列表將所述任務(wù)消息投遞出去;
集群中的第二節(jié)點(diǎn)接收所述第一服務(wù)器投遞的任務(wù)消息,根據(jù)所述任務(wù)消息中的任務(wù)標(biāo)識(shí)從集群的數(shù)據(jù)庫提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
其中,所述第一服務(wù)器可以是具有消息傳遞功能的服務(wù)器,例如:可以是消息中間件的服務(wù)器等。所述第一消息類型可由主題(TOPIC)/事件編碼(eventcode)唯一標(biāo)識(shí)。
示例一
如圖6所示,從接收數(shù)據(jù)處理請(qǐng)求到發(fā)布任務(wù)消息的數(shù)據(jù)處理過程可以包括:
步驟601,應(yīng)用A發(fā)布新聞,將新發(fā)布的新聞發(fā)送給應(yīng)用B;
步驟602,應(yīng)用B中的網(wǎng)關(guān)服務(wù)器接收所述新聞,對(duì)所述新聞驗(yàn)簽;
具體的,驗(yàn)簽可以包括:驗(yàn)證所述新聞是否合法,如果合法,則對(duì)所述新聞進(jìn)行報(bào)文解析,如果不合法,則驗(yàn)簽失敗,可以返回驗(yàn)簽失敗的響應(yīng)消息給所述應(yīng)用A,本流程結(jié)束。
步驟603,驗(yàn)簽成功,網(wǎng)關(guān)服務(wù)器向資訊處理集群發(fā)送數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求包含所述新聞;
步驟604,資訊處理集群中一個(gè)節(jié)點(diǎn)接收所述數(shù)據(jù)處理請(qǐng)求,驗(yàn)證所述新聞是否接收過,如果是則繼續(xù)步驟612,如果沒有接收過,則繼續(xù)步驟605;
實(shí)際應(yīng)用中,應(yīng)用A會(huì)將同一新聞重復(fù)發(fā)送,相應(yīng)的,網(wǎng)關(guān)服務(wù)器也會(huì)以不同的數(shù)據(jù)處理請(qǐng)求發(fā)送同一新聞,因此,在本示例中先驗(yàn)證是否之前收到過所述新聞,如果收到過(即重收)則可以就進(jìn)入步驟612,如果之前沒有收到過(也就是說非重復(fù)接收)再繼續(xù)步驟605,為該新聞創(chuàng)建任務(wù)流水。如此,可避免為同一新聞重復(fù)創(chuàng)建任務(wù)流水,一方面減少冗余,防止對(duì)同一新聞進(jìn)行多次重復(fù)處理;另一方面也可避免同一新聞在數(shù)據(jù)庫重復(fù)存儲(chǔ)而占用存儲(chǔ)空間。
一種實(shí)現(xiàn)方式中,驗(yàn)證是否為重發(fā)可以通過如下方式實(shí)現(xiàn):驗(yàn)證數(shù)據(jù)庫是否已存在與其中待處理的新聞相關(guān)聯(lián)的任務(wù)流水,如果已存在與其中待處理的新聞相關(guān)聯(lián)的任務(wù)流水,則所述新聞為重發(fā),如果不存在與其中待處理的新聞相關(guān)聯(lián)的任務(wù)流水,則所述新聞為非重發(fā)。
一種實(shí)現(xiàn)方式中,驗(yàn)證是否為重發(fā)還可以通過如下方式實(shí)現(xiàn):驗(yàn)證數(shù)據(jù)庫是否已存在與所述數(shù)據(jù)處理請(qǐng)求中的新聞相匹配的新聞,如果已存在,則所述新聞為重發(fā),如果不存在,則所述新聞為非重發(fā)。
步驟605,所述節(jié)點(diǎn)為所述數(shù)據(jù)處理請(qǐng)求創(chuàng)建異步處理任務(wù)的任務(wù)流水,該任務(wù)流水與所述數(shù)據(jù)處理請(qǐng)求中攜帶的新聞相關(guān)聯(lián),并將其中待處理的新聞存儲(chǔ)到資訊處理集群的數(shù)據(jù)庫中;
步驟606,驗(yàn)證是否創(chuàng)建任務(wù)流水成功;
步驟607,如果創(chuàng)建任務(wù)流水成功,則并為所述新聞設(shè)置第一狀態(tài)標(biāo)識(shí),所述第一狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述新聞為待處理的狀態(tài);
步驟608,如果創(chuàng)建任務(wù)流水失敗,則為所述新聞設(shè)置第三狀態(tài)標(biāo)識(shí),所述第三狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)任務(wù)執(zhí)行失敗的狀態(tài);在一些實(shí)現(xiàn)方式中,創(chuàng)建任務(wù)流水失敗可以是所述新聞的任務(wù)流水在執(zhí)行過程中的某個(gè)環(huán)節(jié)執(zhí)行失敗,例如,可以是如下的一項(xiàng)或幾項(xiàng):任務(wù)流水號(hào)生成失?。粚⑷蝿?wù)流水寫入數(shù)據(jù)庫時(shí)失敗(例如,寫入的格式不符合預(yù)定要求);在將任務(wù)流水與所述新聞的圖片和/或文本進(jìn)行關(guān)聯(lián)時(shí)執(zhí)行失??;在為所述新聞設(shè)置狀態(tài)標(biāo)識(shí)時(shí)執(zhí)行失敗。
也就是說,在任務(wù)流水的執(zhí)行過程中失敗,則將所述新聞設(shè)置為第一狀態(tài)標(biāo)識(shí)。
在一些實(shí)現(xiàn)方式中,步驟608之后可直接結(jié)束當(dāng)前流程,也可以返回步驟605重新建立任務(wù)流水,還可以直接進(jìn)入圖7所示的數(shù)據(jù)處理流程。
步驟609,所述節(jié)點(diǎn)生成任務(wù)消息并向資訊處理集群中的多個(gè)節(jié)點(diǎn)發(fā)布所述任務(wù)消息,所述任務(wù)消息中攜帶有與所述任務(wù)流水的任務(wù)流水號(hào),通知資訊處理集群中其他節(jié)點(diǎn)處理任務(wù),以便其他節(jié)點(diǎn)根據(jù)所述任務(wù)流水號(hào)從所述數(shù)據(jù)庫中提取所述新聞進(jìn)行處理;
步驟610,所述節(jié)點(diǎn)發(fā)出第一響應(yīng)消息給網(wǎng)關(guān)服務(wù)器,所述第一響應(yīng)消息用于指示所述數(shù)據(jù)處理請(qǐng)求受理成功;
步驟611,網(wǎng)關(guān)服務(wù)器將所述第一響應(yīng)消息進(jìn)行報(bào)文組裝、簽名等處理后轉(zhuǎn)發(fā)給所述應(yīng)用A,通知應(yīng)用A所述新聞已受理成功;
在一些實(shí)現(xiàn)方式中,應(yīng)用A在接收所述第一響應(yīng)消息之后,還可以將自身與應(yīng)用B中網(wǎng)關(guān)服務(wù)器之間的鏈接斷開或者將該鏈接設(shè)置為休眠狀態(tài),如此,在處理新聞的過程中應(yīng)用之間的鏈接不會(huì)一直處于被占用的狀態(tài),能夠節(jié)省網(wǎng)絡(luò)資源,避免網(wǎng)絡(luò)資源的浪費(fèi)。
此后,應(yīng)用A與應(yīng)用B之間鏈接可暫時(shí)斷開。
步驟612,所述節(jié)點(diǎn)在第一數(shù)據(jù)庫中查詢所述新聞相關(guān)聯(lián)的任務(wù)流水,以獲取所述新聞的流水信息;
步驟613,所述節(jié)點(diǎn)為所述新聞設(shè)置第二狀態(tài)標(biāo)識(shí),所述第二狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述新聞為處理中的狀態(tài);
步驟614,對(duì)所述任務(wù)流水進(jìn)行處理,進(jìn)入圖7所示的數(shù)據(jù)處理流程。
示例二
如圖7所示,在發(fā)布任務(wù)消息之后,數(shù)據(jù)處理的流程可以包括如下步驟:
步驟701,資訊處理集群中節(jié)點(diǎn)接收任務(wù)消息,根據(jù)所述任務(wù)消息中的任務(wù)流水號(hào)加載相應(yīng)的異步處理任務(wù),從第一數(shù)據(jù)庫中查詢?nèi)蝿?wù)流水信息;
步驟702,確定所述任務(wù)流水信息相關(guān)聯(lián)的新聞被設(shè)置為第二狀態(tài)標(biāo)識(shí),(即確定所述新聞為處理中的狀態(tài)),從所述第一數(shù)據(jù)庫中提取所述新聞;
在一種實(shí)現(xiàn)方式中,在提取任務(wù)流水信息和所述新聞之前,還根據(jù)所述任務(wù)流水號(hào)查詢所述第一數(shù)據(jù)庫中所述新聞是否被設(shè)置為第二狀態(tài)標(biāo)識(shí)或第一狀態(tài)標(biāo)識(shí),如果所述新聞被設(shè)置為第二狀態(tài)標(biāo)識(shí),則直接從所述第一數(shù)據(jù)庫中提取所述新聞,并開始執(zhí)行業(yè)務(wù)處理。如果所述新聞被設(shè)置為第一狀態(tài)標(biāo)識(shí),則可以先將所述新聞設(shè)置為第二狀態(tài)標(biāo)識(shí),在確定所述新聞被設(shè)置為第二狀態(tài)標(biāo)識(shí)時(shí)從所述第一數(shù)據(jù)庫中提取所述新聞。如果所述新聞不是被設(shè)置第二狀態(tài)標(biāo)識(shí)和第一狀態(tài)標(biāo)識(shí),則可以直接跳轉(zhuǎn)到步驟712,并在所述第二響應(yīng)消息中所述新聞的處理結(jié)果為處理失??;或者,可以直接結(jié)束當(dāng)前流程。
步驟703,轉(zhuǎn)換新聞數(shù)據(jù),如果轉(zhuǎn)換成功,則繼續(xù)步驟704,如果異常,則繼續(xù)步驟709;
步驟704,進(jìn)行安全掃描,如果安全掃描成功,則繼續(xù)步驟705,如果異常,則繼續(xù)步驟709;
步驟705,保存新聞圖片,如果保存新聞成功,則繼續(xù)步驟706,如果異常,則繼續(xù)步驟709;
步驟706,替換所述新聞中正文圖片中的imgkey為CDN路徑,如果成功,則繼續(xù)步驟707,如果異常,則繼續(xù)步驟709;
步驟707,將處理后的新聞寫入第一數(shù)據(jù)庫,如果成功,則繼續(xù)步驟708,如果異常,則繼續(xù)步驟709;
步驟708,將處理后的新聞寫入第二數(shù)據(jù)庫,如果成功,則繼續(xù)步驟710,如果異常,則繼續(xù)步驟709;
步驟709,為所述新聞設(shè)置第四狀態(tài)標(biāo)識(shí),所述第四狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述新聞為處理錯(cuò)誤的狀態(tài),繼續(xù)步驟712;
步驟710,所述節(jié)點(diǎn)對(duì)所述新聞進(jìn)行文本去重;
步驟711,所述節(jié)點(diǎn)為所述新聞設(shè)置第五狀態(tài)標(biāo)識(shí),所述第五狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述新聞為處理成功的狀態(tài);
步驟712,所述節(jié)點(diǎn)發(fā)送第二響應(yīng)消息給網(wǎng)關(guān)服務(wù)器,所述第二響應(yīng)消息用于指示所述新聞的處理結(jié)果;
其中,如果所述新聞最終被設(shè)置為第五狀態(tài)標(biāo)識(shí),則所述第二響應(yīng)消息中指示所述新聞的處理結(jié)果為處理成功;如果所述新聞最終被設(shè)置為第四狀態(tài)標(biāo)識(shí)或者在步驟702中確定所述新聞不是被設(shè)置第二狀態(tài)標(biāo)識(shí)和第一狀態(tài)標(biāo)識(shí)(例如,被設(shè)置為第三狀態(tài)標(biāo)識(shí)),則所述第二響應(yīng)消息中指示所述新聞的處理結(jié)果為處理異常(即處理失敗)。
步驟713,網(wǎng)關(guān)服務(wù)器將所述第二響應(yīng)消息進(jìn)行報(bào)文組裝、簽名等處理后轉(zhuǎn)發(fā)給所述應(yīng)用A,通知應(yīng)用A所述新聞已處理完成。
在一些實(shí)現(xiàn)方式中,網(wǎng)關(guān)服務(wù)器接收所述第二響應(yīng)消息之后,如果與應(yīng)用A之間的鏈接已斷開,可先與應(yīng)用A建立鏈接,如果與應(yīng)用A之間的鏈接已休眠,可先將該鏈接激活,然后通過新建立的鏈接或激活的鏈接將所述第二響應(yīng)消息轉(zhuǎn)發(fā)給應(yīng)用A。如此,只在傳送消息時(shí)占用應(yīng)用之間的鏈接,使得網(wǎng)絡(luò)資源得到了充分利用,避免了網(wǎng)絡(luò)資源的浪費(fèi),節(jié)省了網(wǎng)絡(luò)資源。
步驟714,應(yīng)用A接收所述第二響應(yīng)消息,并記錄所述新聞的處理結(jié)果。
在一些實(shí)現(xiàn)方式,應(yīng)用A在接收到所述第二響應(yīng)消息之后,解析獲得新聞的處理結(jié)果并記錄。對(duì)于處理錯(cuò)誤的新聞,應(yīng)用A還可以將所述新聞重發(fā)給應(yīng)用B的網(wǎng)關(guān)服務(wù)器,由網(wǎng)關(guān)服務(wù)器再重發(fā)數(shù)據(jù)處理請(qǐng)求給資訊處理集群,以便資訊處理集群對(duì)所述新聞再次進(jìn)行處理,如此,可避免某些新聞被漏處理,提升新聞處理的準(zhǔn)確率,以便應(yīng)用B將更全面的資訊展示給用戶,提升用戶體驗(yàn)。
需要說明的是,圖7所示流程中步驟703至步驟708的執(zhí)行順序可根據(jù)實(shí)際需要調(diào)整。步驟710也可以在步驟703之前,也可以設(shè)置在步驟703與步驟708之間,對(duì)此也可根據(jù)實(shí)際需要調(diào)整,本文不做限制。
在一些實(shí)現(xiàn)方式中,圖7所示流程中步驟703至步驟708的新聞數(shù)據(jù)處理過程中,如其中部分步驟在執(zhí)行時(shí)出現(xiàn)異常,其他步驟仍可執(zhí)行,也可停止執(zhí)行,可直接進(jìn)入步驟709,將所述新聞的狀態(tài)標(biāo)識(shí)更新為狀態(tài)標(biāo)識(shí)U,即處理錯(cuò)誤,并在步驟712中的第二響應(yīng)消息中包含處理失敗的結(jié)果。
示例三
如圖8所示,數(shù)據(jù)處理的過程可以包括:
步驟801,應(yīng)用A發(fā)布新聞,將新發(fā)布的新聞發(fā)送給應(yīng)用B;
其中,所述新聞可以包括標(biāo)題、正文和圖片。
步驟802-804,應(yīng)用B的網(wǎng)關(guān)服務(wù)器接收所述新聞,對(duì)所述新聞進(jìn)行驗(yàn)簽和報(bào)文解析后,向資訊處理集群發(fā)送數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求包含所述新聞;
這里,所述數(shù)據(jù)處理請(qǐng)求可以是HTTP請(qǐng)求,可以包含所述新聞的數(shù)據(jù)和事先約定的加密密文(以防止網(wǎng)絡(luò)劫持篡改)。該數(shù)據(jù)處理請(qǐng)求可以通過HTTP方式傳遞。
在一些實(shí)現(xiàn)方式中,應(yīng)用A和應(yīng)用B之間交互也可以為通過HTTP方式。
步驟805,資訊處理集群的第一節(jié)點(diǎn)接收所述數(shù)據(jù)處理請(qǐng)求,創(chuàng)建與其中的新聞相關(guān)聯(lián)的任務(wù)流水,生成任務(wù)消息,并將所述新聞與所述任務(wù)流水的信息對(duì)應(yīng)存儲(chǔ)到第一數(shù)據(jù)庫中,所述任務(wù)消息攜帶有所述任務(wù)流水的任務(wù)流水號(hào);
在一些實(shí)現(xiàn)方式中,接收所述數(shù)據(jù)處理請(qǐng)求之后,還可以驗(yàn)證是否為重發(fā),具體實(shí)現(xiàn)過程可參照上文中步驟604的相關(guān)記載,不再贅述。
在一些實(shí)現(xiàn)方式中,還可以驗(yàn)證所述任務(wù)流水是否創(chuàng)建成功,具體實(shí)現(xiàn)過程可參照上文步驟606至步驟608的相關(guān)記載,不再贅述。
在一些實(shí)現(xiàn)方式中,所述任務(wù)流水表示新聞的處理進(jìn)程,任務(wù)流水通過任務(wù)流水號(hào)標(biāo)識(shí),該任務(wù)流水號(hào)與所述新聞相關(guān)聯(lián)。
在一些實(shí)現(xiàn)方式中,將所述新聞及其相關(guān)聯(lián)的任務(wù)流水的信息對(duì)應(yīng)存儲(chǔ)到第一數(shù)據(jù)庫可以通過如下方式實(shí)現(xiàn):保存時(shí),對(duì)接收到的“新聞數(shù)據(jù)”進(jìn)行分類,將所述新聞的正文和圖片分開存放到第一數(shù)據(jù)庫中;同時(shí),在第一數(shù)據(jù)庫中寫入一條任務(wù)流水信息,并將該任務(wù)流水信息與所述新聞的正文和圖片關(guān)聯(lián)起來,所述任務(wù)流水信息中包含所述新聞相關(guān)聯(lián)的任務(wù)流水號(hào)和為所述新聞設(shè)置的狀態(tài)標(biāo)識(shí)。
在一些實(shí)現(xiàn)方式中,所述任務(wù)流水信息可以包括如下字段:任務(wù)流水號(hào)、狀態(tài)標(biāo)識(shí)和新聞ID;其中,新聞ID字段用于記錄相關(guān)聯(lián)新聞的ID;狀態(tài)標(biāo)識(shí)字段用于記錄為新聞設(shè)置的狀態(tài)標(biāo)識(shí),所述狀態(tài)標(biāo)識(shí)用于標(biāo)識(shí)所述新聞的處理狀態(tài)(即所述新聞處理到了哪個(gè)環(huán)節(jié));任務(wù)流水號(hào)字段用于記錄任務(wù)流水號(hào)。
在一些實(shí)現(xiàn)方式中,將任務(wù)流水與新聞進(jìn)行關(guān)聯(lián)的方式可以是:將新聞存儲(chǔ)在新聞表中,該新聞表中設(shè)置新聞ID字段,該新聞ID字段記錄有新聞的ID;將任務(wù)流水的任務(wù)流水號(hào)存儲(chǔ)在任務(wù)流水信息中,并在任務(wù)流水信息中設(shè)置新聞ID字段,該新聞ID字段也記錄新聞的ID,如此,通過新聞的ID可將新聞表與任務(wù)流水信息相關(guān)聯(lián),也就是將新聞與任務(wù)流水關(guān)聯(lián)。
在一些實(shí)現(xiàn)方式中,所述任務(wù)流水號(hào)可以是時(shí)間戳,該時(shí)間戳為所述任務(wù)流水的建立時(shí)間,該時(shí)間戳的精確度可以到毫秒級(jí),因此,通過任務(wù)流水號(hào)即可區(qū)分不同的任務(wù)流水。
本實(shí)施例中,所述新聞相關(guān)聯(lián)的狀態(tài)標(biāo)識(shí)可以包括如下類型:
I-初始化:標(biāo)識(shí)所述新聞為待處理的狀態(tài),也就是說“剛收到新聞,任務(wù)剛剛創(chuàng)建,還沒執(zhí)行”;
F-任務(wù)執(zhí)行失?。簶?biāo)識(shí)所述新聞為處理失敗的狀態(tài),也就是說“新聞在某環(huán)節(jié)處理失敗,不符合業(yè)務(wù)要求”;例如,任務(wù)流水號(hào)生成失?。晃茨艹晒⑷蝿?wù)流水寫入數(shù)據(jù)庫或?qū)懭氲母袷讲环项A(yù)定要求;在將任務(wù)流水與所述新聞的圖片和/或文本進(jìn)行關(guān)聯(lián)時(shí)執(zhí)行失敗;在為所述新聞設(shè)置狀態(tài)標(biāo)識(shí)時(shí)執(zhí)行失?。恢T如此類。在任務(wù)流水的執(zhí)行過程中失敗時(shí)將所述新聞設(shè)置為狀態(tài)標(biāo)識(shí)F。
P-處理中:標(biāo)識(shí)所述新聞為處理中的狀態(tài),也就是說“收到新聞了,任務(wù)開始執(zhí)行,但尚未執(zhí)行完成”;
U-處理發(fā)生了錯(cuò)誤:標(biāo)識(shí)所述新聞為處理失敗的狀態(tài),也就是說“新聞在某環(huán)節(jié)處理時(shí)發(fā)生了錯(cuò)誤”;例如,在對(duì)所述新聞進(jìn)行數(shù)據(jù)轉(zhuǎn)換、安全掃描、圖片的保存和路徑替換、處理后的新聞數(shù)據(jù)寫入數(shù)據(jù)庫等操作中發(fā)生錯(cuò)誤。此時(shí),為所述新聞設(shè)置狀態(tài)標(biāo)識(shí)U。
S-成功:標(biāo)識(shí)所述新聞為處理成功的狀態(tài),也就是說“任務(wù)處理成功,新聞可成功放開,外部用戶可見”。
在本步驟中,還為所述新聞設(shè)置狀態(tài)標(biāo)識(shí)I,該狀態(tài)標(biāo)識(shí)I用于標(biāo)識(shí)所述新聞為待處理的狀態(tài)。具體的,設(shè)置狀態(tài)標(biāo)識(shí)I的方式可以是:在資訊處理集群數(shù)據(jù)中將所述新聞相關(guān)聯(lián)的任務(wù)流水信息中狀態(tài)標(biāo)識(shí)字段設(shè)置為狀態(tài)標(biāo)識(shí)“I”。
在一些實(shí)現(xiàn)方式中,如果本步驟中出現(xiàn)了任務(wù)執(zhí)行失敗的情況,則可重新執(zhí)行本步驟,直到任務(wù)流水信息成功寫入數(shù)據(jù)庫并與所述新聞成功建立關(guān)聯(lián);或者,可以將所述新聞設(shè)置為狀態(tài)標(biāo)識(shí)F,并直接跳轉(zhuǎn)到步驟818;或者,在有任務(wù)流水號(hào)的情況下,仍生成攜帶該任務(wù)流水號(hào)的任務(wù)消息,并將所述新聞設(shè)置為狀態(tài)標(biāo)識(shí)F;或者,可以直接結(jié)束本流程。
步驟806,資訊處理集群的第一節(jié)點(diǎn)發(fā)布所述任務(wù)消息,通知資訊處理集群中其他節(jié)點(diǎn)處理任務(wù),使得資訊處理集群中的所有節(jié)點(diǎn)都可以從所述第一數(shù)據(jù)庫中提取所述新聞進(jìn)行處理;
步驟807,資訊處理集群的第一節(jié)點(diǎn)返回受理成功消息給網(wǎng)關(guān)服務(wù)器;
步驟808,網(wǎng)關(guān)服務(wù)器將所述受理成功消息轉(zhuǎn)發(fā)給應(yīng)用A;
其中,所述受理成功消息為上文中第一響應(yīng)消息的一個(gè)示例,表示所述新聞已被受理成功。
在一些實(shí)現(xiàn)方式中,應(yīng)用A在接收所述受理成功消息之后,還可以將自身與應(yīng)用B中網(wǎng)關(guān)服務(wù)器之間的鏈接斷開或者將該鏈接設(shè)置為休眠狀態(tài),如此,在處理新聞的過程中應(yīng)用之間的鏈接不會(huì)一直處于被占用的狀態(tài),能夠節(jié)省網(wǎng)絡(luò)資源,避免網(wǎng)絡(luò)資源的浪費(fèi)。
步驟809,資訊處理集群中的節(jié)點(diǎn)(可以是上文中的第一節(jié)點(diǎn),也可以是資訊處理集群中除所述第一節(jié)點(diǎn)之外的其他節(jié)點(diǎn))接收所述任務(wù)消息;
步驟810,資訊處理集群中的節(jié)點(diǎn)根據(jù)所述任務(wù)消息中的任務(wù)流水號(hào),從第一數(shù)據(jù)庫中提取任務(wù)流水信息和所述新聞,開始執(zhí)行業(yè)務(wù)處理;
此時(shí),還為所述新聞設(shè)置狀態(tài)標(biāo)識(shí)P,該狀態(tài)標(biāo)識(shí)P表示所述新聞處于處理中的狀態(tài)。具體的,設(shè)置狀態(tài)標(biāo)識(shí)P的方式可以是:將所述新聞相關(guān)聯(lián)的任務(wù)流水信息中“狀態(tài)標(biāo)識(shí)”的字段設(shè)置為狀態(tài)標(biāo)識(shí)“P”。
在一些實(shí)現(xiàn)方式中,提取任務(wù)流水信息和所述新聞時(shí),還可根據(jù)所述任務(wù)流水號(hào)查詢所述第一數(shù)據(jù)庫中所述新聞是否被設(shè)置為狀態(tài)標(biāo)識(shí)P或狀態(tài)標(biāo)識(shí)I,如果所述新聞被設(shè)置為狀態(tài)標(biāo)識(shí)P,則直接從所述第一數(shù)據(jù)庫中提取任務(wù)流水信息和所述新聞,并開始執(zhí)行業(yè)務(wù)處理。如果所述新聞被設(shè)置為狀態(tài)標(biāo)識(shí)I,則可以先將所述新聞設(shè)置為狀態(tài)標(biāo)識(shí)P,再從所述第一數(shù)據(jù)庫中提取任務(wù)流水信息和所述新聞,并開始執(zhí)行業(yè)務(wù)處理。如果所述新聞不是被設(shè)置狀態(tài)標(biāo)識(shí)P和狀態(tài)標(biāo)識(shí)I(例如,被設(shè)置為狀態(tài)標(biāo)識(shí)F),則不執(zhí)行業(yè)務(wù)處理,可以直接進(jìn)入步驟818或步驟819,或者直接結(jié)束當(dāng)前流程。所述新聞不是被設(shè)置狀態(tài)標(biāo)識(shí)P和狀態(tài)標(biāo)識(shí)I之后的執(zhí)行過程為可選,因此,未在圖8中示出。
步驟811,資訊處理集群中的節(jié)點(diǎn)通過安全掃描系統(tǒng)對(duì)所述新聞進(jìn)行安全掃描;
在一些實(shí)現(xiàn)方式中,需要通過與文本安全掃描系統(tǒng)交互來實(shí)現(xiàn)所述安全掃描。例如,可以將新聞發(fā)送給文本安全掃描系統(tǒng),由文本安全掃描系統(tǒng)對(duì)所述新聞進(jìn)行安全掃描之后再將所述新聞返回給資訊處理集群中的所述節(jié)點(diǎn)。實(shí)際應(yīng)用中,安全掃描的功能也可內(nèi)置在資訊處理集群的節(jié)點(diǎn)中,由節(jié)點(diǎn)直接進(jìn)行安全掃描。
在一些實(shí)現(xiàn)方式中,安全掃描具體可以是掃描有無違禁詞。
步驟812,資訊處理集群中的節(jié)點(diǎn)將所述新聞中的圖片保存到CDN;
在一些實(shí)現(xiàn)方式中,保存圖片到CDN是將所述新聞的圖片放到專門保存圖片的服務(wù)器(如CDN)上;
具體的,資訊處理集群中的節(jié)點(diǎn)在將圖片保存到CDN之后,還記錄所述圖片的CDN路徑。
步驟813,資訊處理集群中的節(jié)點(diǎn)替換所述新聞中正文部分的圖片標(biāo)簽;
在一些實(shí)現(xiàn)方式中,替換所述新聞中正文部分的圖片標(biāo)簽具體可以是:把所述新聞中正文部分的圖片標(biāo)簽替換為資訊處理集群識(shí)別的標(biāo)簽,例如,替換所述所述新聞中正文圖片的imgkey為CND路徑。
步驟814,資訊處理集群中的節(jié)點(diǎn)對(duì)所述新聞的正文數(shù)據(jù)進(jìn)行文本去重處理;
在一些實(shí)現(xiàn)方式中,文本去重處理可以是驗(yàn)證當(dāng)前新聞與其他新聞是否重復(fù)。
步驟815,資訊處理集群中的節(jié)點(diǎn)對(duì)所述新聞進(jìn)行新聞模型轉(zhuǎn)換;
在一些實(shí)現(xiàn)方式中,轉(zhuǎn)換新聞模型可以是對(duì)所述新聞重新排版;也就是說,將所述新聞按照應(yīng)用B預(yù)定的模式重新排版。
步驟816,資訊處理集群中的節(jié)點(diǎn)將處理后的新聞插入第一數(shù)據(jù)庫的新聞表中;
在一些實(shí)現(xiàn)方式中,第一數(shù)據(jù)庫中的新聞表用于搜索使用??赏ㄟ^搜索第一數(shù)據(jù)庫中的新聞表提取新聞進(jìn)行處理,或者在進(jìn)行上述新聞處理的過程中需要查詢新聞數(shù)據(jù)時(shí)可通過搜索第一數(shù)據(jù)庫中的新聞表實(shí)現(xiàn)。
在一些實(shí)現(xiàn)方式中,第一數(shù)據(jù)庫通過新聞表保存新聞,并將新聞表與所述新聞相關(guān)聯(lián)的任務(wù)流水信息相關(guān)聯(lián)。實(shí)際應(yīng)用中,可以使用一張“新聞表”記錄一條“新聞”的數(shù)據(jù),也可以使用一張“新聞表”記錄多個(gè)不同“新聞”的數(shù)據(jù)。在上述新聞表的不同行或不同列中記錄所述新聞的正文和圖片,并以“新聞ID”標(biāo)識(shí)新聞與具體數(shù)據(jù)之間的關(guān)系,如此,可將所述新聞的正文和圖片分開存儲(chǔ),有利于提升數(shù)據(jù)的處理效率。
步驟817,資訊處理集群中的節(jié)點(diǎn)將處理后的新聞插入第二數(shù)據(jù)庫的新聞表中,便于應(yīng)用B的展示系統(tǒng)從所述第二數(shù)據(jù)庫讀取所述新聞并展示;
其中,第二數(shù)據(jù)庫中也可以通過新聞表的形式記錄所述新聞第二數(shù)據(jù)庫中的新聞表為用戶可看的數(shù)據(jù)表,也就是說,第二數(shù)據(jù)庫中存儲(chǔ)的新聞是可以直接展示的,第二數(shù)據(jù)庫中存儲(chǔ)的新聞是已經(jīng)處理完成并且處理成功的新聞。在mobilem中新聞表存儲(chǔ)所述新聞的方式與第一數(shù)據(jù)庫相同,不再贅述。
步驟818,資訊處理集群中的節(jié)點(diǎn)更新第一數(shù)據(jù)庫中所述新聞相關(guān)聯(lián)的狀態(tài)標(biāo)識(shí),也就是說,更新與所述新聞相關(guān)聯(lián)的任務(wù)流水信息;
本步驟中,更新第一數(shù)據(jù)庫中所述新聞相關(guān)聯(lián)的狀態(tài)標(biāo)識(shí)為U/F/S,如果在步驟817之后,所述新聞處理成功,則更新狀態(tài)標(biāo)識(shí)為S;如果在步驟817之后,所述新聞在處理過程中發(fā)生錯(cuò)誤,則更新狀態(tài)標(biāo)識(shí)為U;如果在上述步驟805至步驟817之中,所述新聞相關(guān)聯(lián)的任務(wù)流水執(zhí)行失敗,則更新狀態(tài)標(biāo)識(shí)為F。
步驟819,資訊處理集群中的節(jié)點(diǎn)發(fā)送結(jié)果回執(zhí)消息給網(wǎng)關(guān)服務(wù)器,所述結(jié)果回執(zhí)消息用于指示所述新聞的處理結(jié)果;
如果所述新聞最終被設(shè)置為狀態(tài)標(biāo)識(shí)S,則在所述結(jié)果回執(zhí)消息中指示所述新聞的處理結(jié)果為處理成功;如果所述新聞最終被設(shè)置為狀態(tài)標(biāo)識(shí)U,則在所述結(jié)果回執(zhí)消息中指示所述新聞的處理結(jié)果為處理失敗。如果所述新聞最終被設(shè)置為狀態(tài)標(biāo)識(shí)F,則在所述結(jié)果回執(zhí)消息中指示所述新聞的處理結(jié)果為處理失敗。
步驟820,網(wǎng)關(guān)服務(wù)器將所述結(jié)果回執(zhí)消息轉(zhuǎn)發(fā)給所述應(yīng)用A,通知應(yīng)用A所述新聞已處理完成。
其中,所述結(jié)果回執(zhí)消息為上文中第二響應(yīng)消息的一個(gè)示例,所述結(jié)果回執(zhí)消息用于指示所述新聞已被處理完成,該結(jié)果回執(zhí)消息中可包含所述新聞的處理結(jié)果。
在一些實(shí)現(xiàn)方式中,網(wǎng)關(guān)服務(wù)器接收所述結(jié)果回執(zhí)消息之后,如果與應(yīng)用A之間的鏈接已斷開,可先與應(yīng)用A建立鏈接,如果與應(yīng)用A之間的鏈接已休眠,可先將該鏈接激活,然后通過新建立的鏈接或激活的鏈接將所述結(jié)果回執(zhí)消息轉(zhuǎn)發(fā)給應(yīng)用A。如此,在需要傳送消息時(shí)才啟用應(yīng)用之間的鏈接資源,使得網(wǎng)絡(luò)資源得到了充分利用,避免了網(wǎng)絡(luò)資源的浪費(fèi),節(jié)省了網(wǎng)絡(luò)資源。
在一些實(shí)現(xiàn)方式,應(yīng)用A可以接收所述結(jié)果回執(zhí)消息,并記錄所述新聞的處理結(jié)果。對(duì)于處理錯(cuò)誤的新聞,應(yīng)用A還可以將所述新聞重發(fā)給應(yīng)用B的網(wǎng)關(guān)服務(wù)器,由網(wǎng)關(guān)服務(wù)器再重發(fā)數(shù)據(jù)處理請(qǐng)求給資訊處理集群,以便資訊處理集群對(duì)所述新聞再次進(jìn)行處理,如此,可避免某些新聞被漏處理,提升新聞處理的準(zhǔn)確率,以便應(yīng)用B將更全面的資訊展示給用戶,提升用戶體驗(yàn)。
需要說明的是,圖8所示流程中步驟811至步驟815、以及的執(zhí)行順序可根據(jù)實(shí)際需要調(diào)整,本文不做限制。步驟818也可以在步驟815之后,也可以在步驟817中執(zhí)行,還可在步驟816之后執(zhí)行,其執(zhí)行順序可根據(jù)實(shí)現(xiàn)需要調(diào)整,本文不做限制。
需要說明的是,圖8所示步驟811至步驟816中的新聞數(shù)據(jù)處理過程中,如其中部分步驟在執(zhí)行時(shí)出現(xiàn)異常,其他步驟仍可執(zhí)行,也可停止執(zhí)行,直接可跳過步驟817直接進(jìn)入步驟818,將所述新聞的狀態(tài)標(biāo)識(shí)更新為狀態(tài)標(biāo)識(shí)U,即處理錯(cuò)誤,并在步驟819中的結(jié)果回執(zhí)消息中包含處理失敗的結(jié)果。
本實(shí)施例中,應(yīng)用A實(shí)際可以是發(fā)布新聞等資訊的服務(wù)器或者集群;網(wǎng)關(guān)服務(wù)器實(shí)際可以是應(yīng)用B的網(wǎng)關(guān)系統(tǒng),該網(wǎng)關(guān)系統(tǒng)實(shí)際可以是服務(wù)器或服務(wù)器集群,第一數(shù)據(jù)庫是用于保存需要處理的數(shù)據(jù)對(duì)象(如待處理或正在處理的或已經(jīng)處理完成的新聞等資訊),第二數(shù)據(jù)庫是用于保存待展示的數(shù)據(jù)對(duì)象(如已處理成功可展示給用戶的新聞等資訊)。在一些實(shí)現(xiàn)方式中,第一數(shù)據(jù)庫和第二數(shù)據(jù)庫均可以為常規(guī)關(guān)系型數(shù)據(jù)庫(mysql)。
本文提到的資訊處理集群可以是包含多個(gè)機(jī)器的集群,每個(gè)機(jī)器可作為一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都可獨(dú)立處理數(shù)據(jù),也可以多個(gè)節(jié)點(diǎn)共同協(xié)作來處理數(shù)據(jù)業(yè)務(wù)。
在一些實(shí)現(xiàn)方式中,資訊處理集群可通過調(diào)用消息中間件來實(shí)現(xiàn)所述任務(wù)消息在發(fā)布和接收之間的傳遞。通過消息中間件,可實(shí)現(xiàn)所述任務(wù)消息的可靠傳遞,可以降低集群中節(jié)點(diǎn)之間的耦合度,提高集群的吞吐量、可擴(kuò)展性和高可用性。具體的,可在消息中間件中預(yù)配置對(duì)應(yīng)所述任務(wù)消息的主題,并配置資訊處理集群中全部或部分節(jié)點(diǎn)為該主題的訂閱者和發(fā)布者。資訊處理集群中的節(jié)點(diǎn)發(fā)布任務(wù)消息之后,消息中間件接收所述任務(wù)消息并將該任務(wù)消息投遞出去,作為該任務(wù)消息訂閱者的節(jié)點(diǎn)接收所述任務(wù)消息,根據(jù)其中的任務(wù)標(biāo)識(shí)從第一數(shù)據(jù)庫中提取數(shù)據(jù)對(duì)象進(jìn)行處理。例如,可以在消息中間件的服務(wù)器上可以定義對(duì)應(yīng)所述任務(wù)消息的第一主題,并配置所述第一主題的發(fā)布者和訂閱者為資訊處理集群中的全部或部分節(jié)點(diǎn)(兩個(gè)或兩個(gè)以上的節(jié)點(diǎn))。資訊處理集群中的節(jié)點(diǎn)根據(jù)所述第一主題生成所述任務(wù)消息并發(fā)布,消息中間件接收所述任務(wù)消息,并向所述第一主題的訂閱者投遞所述任務(wù)消息,資訊處理集群中的多個(gè)節(jié)點(diǎn)作為所述訂閱者將會(huì)接收到所述任務(wù)消息,該任務(wù)消息中包含所述任務(wù)流水號(hào)。
在一些實(shí)現(xiàn)方式中,在資訊處理集群中的節(jié)點(diǎn)之間傳遞所述任務(wù)消息的過程,可以通過如下方式實(shí)現(xiàn):
在第一服務(wù)器和資訊處理集群中所有節(jié)點(diǎn)上預(yù)配置對(duì)應(yīng)所述任務(wù)消息的第一消息類型,并在所述第一服務(wù)器配置所述第一消息類型的發(fā)送端地址列表和接收端地址列表,將資訊處理集群所有節(jié)點(diǎn)的地址同時(shí)寫入所述第一消息類型的所述發(fā)送端地址列表和接收端地址列表;
資訊處理集群中的第一節(jié)點(diǎn)接收數(shù)據(jù)處理請(qǐng)求之后,將所述數(shù)據(jù)處理請(qǐng)求中待處理的第一數(shù)據(jù)對(duì)象存儲(chǔ)到資訊處理集群的數(shù)據(jù)庫中,基于預(yù)配置的所述第一消息類型生成所述任務(wù)消息,該任務(wù)消息的內(nèi)容包含與所述第一數(shù)據(jù)對(duì)象相關(guān)聯(lián)的任務(wù)標(biāo)識(shí)(如任務(wù)流水號(hào)等),并將該任務(wù)消息發(fā)布;在發(fā)布所述任務(wù)消息時(shí),還攜帶資訊處理集群中節(jié)點(diǎn)的地址;
所述第一服務(wù)器接收所述任務(wù)消息,根據(jù)所述任務(wù)消息所對(duì)應(yīng)第一消息類型的接收端地址列表將所述任務(wù)消息投遞出去;
資訊處理集群中的第二節(jié)點(diǎn)接收所述第一服務(wù)器投遞的任務(wù)消息,根據(jù)所述任務(wù)消息中的任務(wù)標(biāo)識(shí)從資訊處理集群的數(shù)據(jù)庫提取所述第一數(shù)據(jù)對(duì)象并進(jìn)行處理。
其中,所述第一服務(wù)器可以是具有消息傳遞功能的服務(wù)器,例如:可以是消息中間件的服務(wù)器等。所述第一消息類型由主題(TOPIC)/事件編碼(eventcode)唯一標(biāo)識(shí)。
本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本申請(qǐng)實(shí)施例所提供的裝置的各組成部分,以及方法中的各步驟,它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上??蛇x地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn)。從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本申請(qǐng)不限制于任何特定的硬件和軟件結(jié)合。
雖然本申請(qǐng)所揭露的實(shí)施方式如上,但所述的內(nèi)容僅為便于理解本申請(qǐng)而采用的實(shí)施方式,并非用以限定本申請(qǐng)。任何本申請(qǐng)所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本申請(qǐng)所揭露的精神和范圍的前提下,可以在實(shí)施的形式及細(xì)節(jié)上進(jìn)行任何的修改與變化,但本申請(qǐng)的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。