本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)處理架構(gòu)中消息的處理方法和裝置。
背景技術(shù):
數(shù)據(jù)處理架構(gòu)(TPL Dataflow)是微軟提供的進(jìn)行流式處理的框架,適合需要高并發(fā)、高性能的應(yīng)用程序。TPL Dataflow中最基礎(chǔ)的組件是塊(Block),Block相當(dāng)于一個(gè)處理單元,每個(gè)Block定義了如何進(jìn)行數(shù)據(jù)處理的邏輯。將多個(gè)Block鏈接起來(lái),就組成了系統(tǒng)處理管道,只需要在管道開(kāi)始處輸入數(shù)據(jù),接下來(lái)整個(gè)管道自動(dòng)開(kāi)始運(yùn)行,從一個(gè)Block開(kāi)始執(zhí)行自己的處理邏輯,處理完成后將得到的數(shù)據(jù)投遞到下一個(gè)或多個(gè)Block,最終完成整個(gè)管道的處理。
參見(jiàn)圖1,分詞程序的處理管道的輸入可以是多個(gè)文件,首先通過(guò)文件讀取Block讀取文件,并將文件傳遞至下一層Block(即,圖1中分行Block);分行Block再將文件傳遞至下一層Block(即,分詞Block);分詞Block再將文件傳遞至單詞計(jì)數(shù)Block。其中,文件讀取Block,分行Block,分詞Block和單詞計(jì)數(shù)Block構(gòu)成一個(gè)完整的數(shù)據(jù)處理管道。
傳統(tǒng)的TPL Dataflow,將一個(gè)Block鏈接到另外一個(gè)Block時(shí),可以指定鏈接條件,只有消息滿(mǎn)足該鏈接條件時(shí),消息才會(huì)從一個(gè)Block投遞到另外一個(gè)Block。
如圖2所示,文件讀取Block負(fù)責(zé)讀取文件,將文件內(nèi)容投遞到下一層Block(即,分行Block)。其中,設(shè)置的文件讀取Block和分行Block之間的鏈接條件為:文件行數(shù)是奇數(shù)和文件行數(shù)是偶數(shù)。當(dāng)文件讀取Block讀取到的文件行數(shù)為奇數(shù)時(shí),將文件內(nèi)容投遞到分行Block1;當(dāng)文件行數(shù)為偶數(shù)時(shí),將文件內(nèi)容投遞到分行Block2。
如果在實(shí)現(xiàn)文件讀取Block和分行Block之間的鏈接時(shí)指定多個(gè)條件,若遇到不滿(mǎn)足所有條件的消息時(shí),則消息無(wú)法投遞。該消息會(huì)一直駐留在源Block中,Dataflow停止任何處理,進(jìn)入假死狀態(tài)。
例如,如圖3所示,文件讀取Block和分行Block之間的鏈接條件為行數(shù)%3=1和行數(shù)%3=0,當(dāng)獲取到的消息為文件行數(shù)%3=2時(shí),確定該消息不滿(mǎn)足上述任何鏈接條件, 此時(shí),該消息不會(huì)投遞到任何一個(gè)Block,此時(shí)文件內(nèi)容無(wú)法投遞,Dataflow假死。
針對(duì)上述的問(wèn)題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供了一種數(shù)據(jù)處理架構(gòu)中消息的處理方法和裝置,以至少解決現(xiàn)有技術(shù)中由于不滿(mǎn)足鏈接條件導(dǎo)致整個(gè)數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的技術(shù)問(wèn)題。
根據(jù)本申請(qǐng)實(shí)施例的一個(gè)方面,提供了一種數(shù)據(jù)處理架構(gòu)中消息的處理方法,包括:獲取目標(biāo)消息,其中,所述目標(biāo)消息為指示第一處理塊鏈接至第二處理塊的消息,所述第二處理塊為所述第一處理塊的下一層塊;判斷所述目標(biāo)消息是否滿(mǎn)足初始鏈接條件,其中,所述初始鏈接條件為所述第一處理塊鏈接到所述第二處理塊的條件;以及當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中。
進(jìn)一步地,所述目標(biāo)處理塊包括第一預(yù)設(shè)處理塊,當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中包括:獲取所述初始鏈接條件,其中,每個(gè)所述第一處理塊和每個(gè)所述第二處理塊之間包含一個(gè)所述初始鏈接條件;根據(jù)所述初始鏈接條件生成目標(biāo)鏈接條件;以及當(dāng)確定所述目標(biāo)消息滿(mǎn)足所述目標(biāo)鏈接條件時(shí),將所述目標(biāo)消息投遞至所述第一預(yù)設(shè)處理塊中,通過(guò)所述第一預(yù)設(shè)處理塊按照預(yù)先定義處理規(guī)則對(duì)所述目標(biāo)消息進(jìn)行處理。
進(jìn)一步地,當(dāng)所述初始鏈接條件的數(shù)量為一個(gè)時(shí),根據(jù)所述初始鏈接條件生成目標(biāo)鏈接條件包括:將所述初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到所述目標(biāo)鏈接條件。
進(jìn)一步地,當(dāng)所述初始鏈接條件的數(shù)量為多個(gè)時(shí),根據(jù)所述初始鏈接條件生成目標(biāo)鏈接條件包括:將多個(gè)所述初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到多個(gè)中間鏈接條件;以及依次將運(yùn)算之后的多個(gè)所述中間鏈接條件進(jìn)行邏輯與運(yùn)算,得到所述目標(biāo)鏈接條件。
進(jìn)一步地,所述目標(biāo)處理塊包括第二預(yù)設(shè)處理塊,當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中包括:判斷獲取到的所述目標(biāo)消息是否攜帶第一標(biāo)識(shí),其中,所述第一標(biāo)識(shí)為表示忽略所述目標(biāo)消息的標(biāo)識(shí);以及在判斷出所述目標(biāo)消息中攜帶所述第一標(biāo)識(shí)情況下,將所述目標(biāo)消息投遞至所述第二預(yù)設(shè)處理塊中,其中,所述第二預(yù)設(shè)處理塊為對(duì)所述目標(biāo)消息不進(jìn)行任何操作的塊。
進(jìn)一步地,所述目標(biāo)處理塊包括第三預(yù)設(shè)處理塊,當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足 所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中包括:判斷獲取到的所述目標(biāo)消息是否攜帶第二標(biāo)識(shí),其中,所述第二標(biāo)識(shí)為表示記錄所述目標(biāo)消息的錯(cuò)誤信息的標(biāo)識(shí);以及在判斷出所述目標(biāo)消息中攜帶所述第二標(biāo)識(shí)情況下,將所述目標(biāo)消息投遞至所述第三預(yù)設(shè)處理塊中,其中,所述第三預(yù)設(shè)處理塊為記錄所述錯(cuò)誤信息的塊。
根據(jù)本申請(qǐng)實(shí)施例的另一方面,還提供了一種數(shù)據(jù)處理架構(gòu)中消息的處理裝置,包括:獲取單元,用于獲取目標(biāo)消息,其中,所述目標(biāo)消息為指示第一處理塊鏈接至第二處理塊的消息,所述第二處理塊為所述第一處理塊的下一層塊;判斷單元,用于判斷所述目標(biāo)消息是否滿(mǎn)足初始鏈接條件,其中,所述初始鏈接條件為所述第一處理塊鏈接到所述第二處理塊的條件;以及投遞單元,用于當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中。
進(jìn)一步地,所述目標(biāo)處理塊包括第一預(yù)設(shè)處理塊,所述投遞單元包括:第一獲取模塊,用于獲取所述初始鏈接條件,其中,每個(gè)所述第一處理塊和每個(gè)所述第二處理塊之間包含一個(gè)所述初始鏈接條件;生成模塊,用于根據(jù)所述初始鏈接條件生成目標(biāo)鏈接條件;以及第一投遞模塊,用于當(dāng)確定所述目標(biāo)消息滿(mǎn)足所述目標(biāo)鏈接條件時(shí),將所述目標(biāo)消息投遞至所述第一預(yù)設(shè)處理塊中,通過(guò)所述第一預(yù)設(shè)處理塊按照預(yù)先定義處理規(guī)則對(duì)所述目標(biāo)消息進(jìn)行處理。
進(jìn)一步地,所述目標(biāo)處理塊包括第二預(yù)設(shè)處理塊,所述投遞單元包括:第一判斷模塊,用于判斷獲取到的所述目標(biāo)消息是否攜帶第一標(biāo)識(shí),其中,所述第一標(biāo)識(shí)為表示忽略所述目標(biāo)消息的標(biāo)識(shí);以及第二投遞模塊,用于在判斷出所述目標(biāo)消息中攜帶所述第一標(biāo)識(shí)情況下,將所述目標(biāo)消息投遞至所述第二預(yù)設(shè)處理塊中,其中,所述第二預(yù)設(shè)處理塊為對(duì)所述目標(biāo)消息不進(jìn)行任何操作的塊。
進(jìn)一步地,所述目標(biāo)處理塊包括第三預(yù)設(shè)處理塊,所述投遞單元包括:第二判斷模塊,用于判斷獲取到的所述目標(biāo)消息是否攜帶第二標(biāo)識(shí),其中,所述第二標(biāo)識(shí)為表示記錄所述目標(biāo)消息的錯(cuò)誤信息的標(biāo)識(shí);以及第三投遞模塊,用于在判斷出所述目標(biāo)消息中攜帶所述第二標(biāo)識(shí)情況下,將所述目標(biāo)消息投遞至所述第三預(yù)設(shè)處理塊中,其中,所述第三預(yù)設(shè)處理塊為記錄所述錯(cuò)誤信息的塊。
在本申請(qǐng)實(shí)施例中,采用獲取目標(biāo)消息,其中,所述目標(biāo)消息為指示第一處理塊鏈接至第二處理塊的消息,所述第二處理塊為所述第一處理塊的下一層塊;判斷所述目標(biāo)消息是否滿(mǎn)足初始鏈接條件,其中,所述初始鏈接條件為所述第一處理塊鏈接到所述第二處理塊的條件;當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中的方式。通過(guò)判斷獲取到的目標(biāo)消息是否滿(mǎn)足鏈接條件,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足鏈接條件時(shí),則將該目標(biāo)消息投遞至指定處理塊中,相對(duì)于 現(xiàn)有技術(shù)中遇到不滿(mǎn)足鏈接條件的目標(biāo)消息時(shí),數(shù)據(jù)處理架構(gòu)將會(huì)停止處理,進(jìn)入假死狀態(tài),達(dá)到了不會(huì)由于消息不滿(mǎn)足鏈接條件而導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的目的,進(jìn)而解決了現(xiàn)有技術(shù)中由于不滿(mǎn)足鏈接條件導(dǎo)致整個(gè)數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的技術(shù)問(wèn)題。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1是根據(jù)現(xiàn)有技術(shù)的一種數(shù)據(jù)處理架構(gòu)的示意圖;
圖2是根據(jù)現(xiàn)有技術(shù)的另一種可選地?cái)?shù)據(jù)處理架構(gòu)的示意圖;
圖3是根據(jù)現(xiàn)有技術(shù)的另一種可選地?cái)?shù)據(jù)處理架構(gòu)的示意圖;
圖4是根據(jù)本申請(qǐng)實(shí)施例的一種數(shù)據(jù)處理架構(gòu)中消息的處理方法的流程圖;
圖5是根據(jù)本申請(qǐng)實(shí)施例的一種數(shù)據(jù)處理架構(gòu)中消息的處理裝置的示意圖;以及
圖6是根據(jù)本申請(qǐng)實(shí)施例的另一種可選地?cái)?shù)據(jù)處理架構(gòu)中消息的處理裝置的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
需要說(shuō)明的是,本申請(qǐng)的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類(lèi)似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請(qǐng)的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本申請(qǐng)實(shí)施例,提供了一種數(shù)據(jù)處理架構(gòu)中消息的處理方法的方法實(shí)施例,需要說(shuō)明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖4是根據(jù)本申請(qǐng)實(shí)施例的一種數(shù)據(jù)處理架構(gòu)中消息的處理方法的流程圖,如圖4所示,該處理方法包括如下步驟S102至步驟S106:
步驟S102,獲取目標(biāo)消息,其中,目標(biāo)消息為指示第一處理塊鏈接至第二處理塊的消息,第二處理塊為第一處理塊的下一層塊。
假設(shè),第一處理塊(Block1)向第二處理塊(Block2)投遞多個(gè)待處理的文件或多個(gè)待處理的文本時(shí),則該目標(biāo)消息可以為該多個(gè)待處理的文件或多個(gè)待處理的文本。
步驟S104,判斷目標(biāo)消息是否滿(mǎn)足初始鏈接條件,其中,初始鏈接條件為第一處理塊鏈接到第二處理塊的條件。
在本申請(qǐng)實(shí)施例中,當(dāng)將多個(gè)處理塊(Block)進(jìn)行鏈接時(shí),即記錄所有鏈接條件。
如圖2和圖3所示,初始鏈接條件可以為:文本的行數(shù)是奇數(shù)(例如,行數(shù)%3=0),文本的行數(shù)是偶數(shù)(例如,行數(shù)%3=1),該條件也即圖2和圖3中文件讀取Block鏈接到下一層Block(例如,分行Block1或Block2)的條件。
假設(shè),目標(biāo)消息為多個(gè)待處理的文本,其中,待處理文本的行數(shù)可以為奇數(shù)行,還可以為偶數(shù)行;初始鏈接條件為:行數(shù)%3=0,即文本行數(shù)除以3,并取余等于0的文本可以進(jìn)行投遞;行數(shù)%3=1,即文本行數(shù)除以3,并取余等于1的文本可以進(jìn)行投遞。通過(guò)判斷可知多個(gè)待處理文本(即,目標(biāo)消息)中行數(shù)%3=0的文本和行數(shù)%3=1的文本滿(mǎn)足初始鏈接條件,多個(gè)待處理文本(即,目標(biāo)消息)中行數(shù)%3=2的文本則不滿(mǎn)足初始鏈接條件。
步驟S106,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),將目標(biāo)消息投遞至目標(biāo)處理塊中。
當(dāng)判斷出目標(biāo)消息滿(mǎn)足初始鏈接條件時(shí),可以返回true,并將目標(biāo)消息投遞至下一層處理塊中;當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),可以返回false,并將目標(biāo)消息投遞至目標(biāo)處理塊。
例如,通過(guò)步驟S104可知多個(gè)待處理文本(即,目標(biāo)消息)中行數(shù)%3=2的文本不滿(mǎn)足初始鏈接條件,返回false,并將該待處理文本投遞至目標(biāo)處理塊中。避免消息由于不滿(mǎn)足初始鏈接條件,而導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死的狀態(tài)。
在本申請(qǐng)實(shí)施例中,通過(guò)判斷獲取到的目標(biāo)消息是否滿(mǎn)足鏈接條件,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足鏈接條件時(shí),則將該目標(biāo)消息投遞至指定處理塊中,相對(duì)于現(xiàn)有技術(shù)中遇到不滿(mǎn)足鏈接條件的目標(biāo)消息時(shí),數(shù)據(jù)處理架構(gòu)將會(huì)停止處理,進(jìn)入假死狀態(tài),達(dá)到了不會(huì)由于消息不滿(mǎn)足鏈接條件而導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的目的,進(jìn)而解決了現(xiàn)有技術(shù)中由于不滿(mǎn)足鏈接條件導(dǎo)致整個(gè)數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的技術(shù)問(wèn)題。
在本申請(qǐng)?zhí)峁┑臄?shù)據(jù)處理架構(gòu)中消息的處理方法中,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),將目標(biāo)消息投遞至目標(biāo)處理塊中包括主要包括三種方式,在下述實(shí)施例中對(duì)這三種方式進(jìn)行說(shuō)明。
在本申請(qǐng)下述實(shí)施例中,目標(biāo)消息均為多個(gè)待處理文本為例進(jìn)行說(shuō)明,初始鏈接條件以文本行數(shù)除以一個(gè)正整數(shù),然后取余數(shù)(例如,文本行數(shù)%n,其中,n為正整數(shù))為例進(jìn)行說(shuō)明。
方式一
目標(biāo)處理塊包括第一預(yù)設(shè)處理塊,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),將目標(biāo)消息投遞至目標(biāo)處理塊中包括如下步驟S1061至步驟S1065:
步驟S1061,獲取初始鏈接條件,其中,每個(gè)第一處理塊和每個(gè)第二處理塊之間包含一個(gè)初始鏈接條件。
步驟S1063,根據(jù)初始鏈接條件生成目標(biāo)鏈接條件。
步驟S1065,當(dāng)確定目標(biāo)消息滿(mǎn)足目標(biāo)鏈接條件時(shí),將目標(biāo)消息投遞至第一預(yù)設(shè)處理塊中,通過(guò)第一預(yù)設(shè)處理塊按照預(yù)先定義處理規(guī)則對(duì)目標(biāo)消息進(jìn)行處理。
當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),用戶(hù)可以通過(guò)上述步驟所描述的方法將該目標(biāo)消息投遞至指定的處理塊即第一預(yù)設(shè)處理塊中。
具體地,當(dāng)確定多個(gè)目標(biāo)消息中存在不滿(mǎn)足所有初始鏈接條件的消息時(shí),獲取所有初始鏈接條件,則根據(jù)所有的初始鏈接條件生成新的鏈接條件(即,目標(biāo)鏈接條件)。其中,生成的目標(biāo)鏈接條件可以為一個(gè),還可以為多個(gè),具體數(shù)量由所有的初始鏈接條件決定。
若該不滿(mǎn)足所有初始鏈接條件的目標(biāo)消息滿(mǎn)足目標(biāo)鏈接條件時(shí),則可將該目標(biāo)消息投遞至用戶(hù)第一預(yù)設(shè)處理塊中,其中,該第一預(yù)設(shè)處理塊可以為第一處理塊的下一層處理塊,并且第一預(yù)設(shè)處理塊和第一處理塊之間的鏈接條件即為該目標(biāo)消息所滿(mǎn)足的目標(biāo)鏈接條件。
需要說(shuō)明的是,第一預(yù)設(shè)處理塊與第一處理塊和第二處理塊均不相同,第一預(yù)設(shè)處理塊不參與對(duì)數(shù)據(jù)的處理,僅是按照預(yù)先定義處理規(guī)則對(duì)目標(biāo)消息進(jìn)行處理,例如,預(yù)先定義處理規(guī)則可以為該第一預(yù)設(shè)處理塊不參與對(duì)目標(biāo)消息進(jìn)行處理,而是將該目標(biāo)消息記錄到日志中,然后忽略該消息。
可選地,當(dāng)初始鏈接條件的數(shù)量為一個(gè)時(shí),根據(jù)初始鏈接條件生成目標(biāo)鏈接條件包括步驟S1:將初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到目標(biāo)鏈接條件。
例如,所有初始鏈接條件為Func1:文本行數(shù)%2=0,多個(gè)待處理文本(即,多個(gè)目標(biāo)消息)中包括文本行數(shù)%2=0的文本和文本行數(shù)%2=1的文本。通過(guò)判斷可知,“文本行數(shù)%2=1”不滿(mǎn)足初始鏈接條件,則根據(jù)初始鏈接條件Func1:文本行數(shù)%2=0生成新的目標(biāo)鏈接條件。
目標(biāo)鏈接條件的生成方法為對(duì)初始鏈接條件進(jìn)行邏輯非運(yùn)算,即:Func1(message)?。絫rue,也即行數(shù)%2?。?,那么經(jīng)過(guò)邏輯非運(yùn)算之后,得到的目標(biāo)鏈接條件為Func2:文本行數(shù)%2=1。再次判斷可知,目標(biāo)消息“文本行數(shù)%2=1”滿(mǎn)足目標(biāo)鏈接條件Func2:文本行數(shù)%2=1,那么將該目標(biāo)鏈接條件投遞至與目標(biāo)鏈接條件對(duì)應(yīng)的處理塊中(即,第一預(yù)設(shè)處理塊)。其中,第一預(yù)設(shè)處理塊并未參與對(duì)目標(biāo)消息的處理。
可選地,當(dāng)初始鏈接條件的數(shù)量為多個(gè)時(shí),根據(jù)初始鏈接條件生成目標(biāo)鏈接條件包括如下步驟S3至步驟S5:
步驟S3,將多個(gè)初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到多個(gè)中間鏈接條件。
步驟S5,依次將運(yùn)算之后的多個(gè)中間鏈接條件進(jìn)行邏輯與運(yùn)算,得到目標(biāo)鏈接條件。
例如,所有初始鏈接條件為:Func1文本行數(shù)%3?。?和Func2文本行數(shù)%3?。?,多個(gè)待處理文本(即,目標(biāo)消息)中包括文本行數(shù)%3=0的文本,文本行數(shù)%3=1的文本,以及文本行數(shù)%3=2的文本。通過(guò)判斷可知,文本行數(shù)%3=2不滿(mǎn)足初始鏈接條件,則根據(jù)初始鏈接條件Func1文本行數(shù)%3=0和Func2文本行數(shù)%3?。?生成新的目標(biāo)鏈接條件。
目標(biāo)鏈接條件的生成方法為對(duì)初始鏈接條件進(jìn)行邏輯非運(yùn)算,即:Func1(message)?。絫rue,也即行數(shù)%3?。?,F(xiàn)unc2(message)?。絫rue,也即行數(shù)%3!=1;然后再對(duì)Func1(message)!=true和Func2(message)?。絫rue進(jìn)行邏輯與運(yùn)算,即Func1(message)?。絫rue&&Func2(message)?。絫rue,那么經(jīng)過(guò)邏輯非運(yùn)算和邏輯與運(yùn)算之后,得到的目標(biāo)鏈接條件為Func3:文本行數(shù)%3=2。再次判斷可知,目標(biāo)消息“文本行數(shù)%3=2”滿(mǎn)足目標(biāo)鏈接條件Func3:文本行數(shù)%3=2,那么將該目標(biāo)鏈接條件投遞 至與目標(biāo)鏈接條件對(duì)應(yīng)的處理塊中(即,第一預(yù)設(shè)處理塊)。其中,第一預(yù)設(shè)處理塊并未參與對(duì)目標(biāo)消息的處理。
方式二
目標(biāo)處理塊包括第二預(yù)設(shè)處理塊,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),將目標(biāo)消息投遞至目標(biāo)處理塊中包括如下步驟S1067至步驟S1069:
步驟S1067,判斷獲取到的目標(biāo)消息是否攜帶第一標(biāo)識(shí),其中,第一標(biāo)識(shí)為表示忽略目標(biāo)消息的標(biāo)識(shí)。
步驟S1069,在判斷出目標(biāo)消息中攜帶第一標(biāo)識(shí)情況下,將目標(biāo)消息投遞至第二預(yù)設(shè)處理塊中,其中,第二預(yù)設(shè)處理塊為對(duì)目標(biāo)消息不進(jìn)行任何操作的塊。
當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),除了方式一所描述的方法外,用戶(hù)還可以通過(guò)上述方式二所描述的方法將該目標(biāo)消息投遞至指定的處理塊即第二預(yù)設(shè)處理塊。
用戶(hù)在對(duì)不滿(mǎn)足初始鏈接條件的目標(biāo)消息進(jìn)行處理的原始程序中已設(shè)置該目標(biāo)消息的投遞方式(例如方式一或方式二),為了使得系統(tǒng)識(shí)別用戶(hù)選取為方式一,還是方式二,可在目標(biāo)消息中添加標(biāo)識(shí),通過(guò)標(biāo)識(shí)的方式通知系統(tǒng)采用方式一,還是方式二實(shí)現(xiàn)目標(biāo)消息的投遞。例如,標(biāo)識(shí)可以為“00”、“01”、“10”或“11”,通過(guò)該標(biāo)識(shí)來(lái)區(qū)分用戶(hù)選取的為方式一還是方式二。
當(dāng)采用方式二對(duì)目標(biāo)消息進(jìn)行投遞時(shí),可標(biāo)記將該目標(biāo)消息投遞至第二預(yù)設(shè)處理塊中,其中,第二預(yù)設(shè)處理塊命名為Null Block,為忽略目標(biāo)消息的處理塊,即在遇到不滿(mǎn)足任何條件的目標(biāo)消息時(shí)不做任何處理,直接忽略。
方式三
目標(biāo)處理塊包括第三預(yù)設(shè)處理塊,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),將目標(biāo)消息投遞至目標(biāo)處理塊中包括步驟S10611至步驟S10613:
步驟S10611,判斷獲取到的目標(biāo)消息是否攜帶第二標(biāo)識(shí),其中,第二標(biāo)識(shí)為表示記錄目標(biāo)消息的錯(cuò)誤信息的標(biāo)識(shí)。
步驟S10613,在判斷出目標(biāo)消息中攜帶第二標(biāo)識(shí)情況下,將目標(biāo)消息投遞至第三預(yù)設(shè)處理塊中,其中,第三預(yù)設(shè)處理塊為記錄所述錯(cuò)誤信息的塊。
當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),除了上述方式一和方式二所描述的處理方法外,用戶(hù)還可以通過(guò)上述方式三所描述的處理方法將該目標(biāo)消息投遞至指定的 處理塊即第三預(yù)設(shè)處理塊中。
用戶(hù)在對(duì)不滿(mǎn)足初始鏈接條件的目標(biāo)消息進(jìn)行處理的原始程序中已設(shè)置該目標(biāo)消息的投遞方式(例如方式一、方式二或方式三),為了使得系統(tǒng)識(shí)別用戶(hù)選取為方式一,方式二,還是方式三,可在目標(biāo)消息中添加標(biāo)識(shí),通過(guò)標(biāo)識(shí)的方式通知系統(tǒng)采用方式一,方式二,還是方式三,來(lái)實(shí)現(xiàn)目標(biāo)消息的投遞。例如,標(biāo)識(shí)可以為“00”、“01”、“10”或“11”,通過(guò)該標(biāo)識(shí)來(lái)區(qū)分用戶(hù)選取的為方式一、方式二,還是方式三。
當(dāng)采用方式三對(duì)目標(biāo)消息進(jìn)行投遞時(shí),可標(biāo)記將該目標(biāo)消息投遞至第三預(yù)設(shè)處理塊中,其中,第三預(yù)設(shè)處理塊可命名為Error Block,該處理塊用于記錄對(duì)目標(biāo)消息進(jìn)行處理過(guò)程中出現(xiàn)的異常信息,并拋出異常。例如,目標(biāo)消息中存在異常的信息,則將該異常的目標(biāo)消息拋出。
本申請(qǐng)?zhí)峁┑臄?shù)據(jù)處理架構(gòu)中消息的處理方法,通過(guò)采用上述方式一、方式二和方式三,實(shí)現(xiàn)對(duì)不滿(mǎn)足初始鏈接條件的目標(biāo)消息進(jìn)行處理,以避免由于消息無(wú)法處理,導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死的狀態(tài)。需要說(shuō)明的是,若存在多個(gè)目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),則每個(gè)不滿(mǎn)足初始鏈接條件的目標(biāo)消息均采用相同的方式進(jìn)行投遞,例如,同時(shí)采用方式一進(jìn)行投遞,或者同時(shí)采用方式二進(jìn)行投遞,又或者同時(shí)采用方式三進(jìn)行投遞。也可以理解為,在數(shù)據(jù)處理架構(gòu)中,第一預(yù)設(shè)處理塊、第二預(yù)設(shè)處理塊(Null Block)、第三預(yù)設(shè)處理塊(Error Block)不會(huì)同時(shí)存在。
本申請(qǐng)實(shí)施例還提供了一種數(shù)據(jù)處理架構(gòu)中消息的處理裝置,該處理裝置主要用于執(zhí)行本申請(qǐng)實(shí)施例上述內(nèi)容所提供的數(shù)據(jù)處理架構(gòu)中消息的處理方法,以下對(duì)本申請(qǐng)實(shí)施例送提供的數(shù)據(jù)處理架構(gòu)中消息的處理裝置做具體介紹。
圖5是根據(jù)本申請(qǐng)實(shí)施例的一種數(shù)據(jù)處理架構(gòu)中消息的處理裝置的示意圖,如圖5所示,該數(shù)據(jù)處理架構(gòu)中消息的處理裝置主要包括獲取單元10、判斷單元20和投遞單元30,其中:
獲取單元10,用于獲取目標(biāo)消息,其中,目標(biāo)消息為指示第一處理塊鏈接至第二處理塊的消息,第二處理塊為第一處理塊的下一層塊。
假設(shè),第一處理塊(Block1)向第二處理塊(Block2)投遞多個(gè)待處理的文件或多個(gè)待處理的文本時(shí),則該目標(biāo)消息可以為該多個(gè)待處理的文件或多個(gè)待處理的文本。
判斷單元20,用于判斷目標(biāo)消息是否滿(mǎn)足初始鏈接條件,其中,初始鏈接條件為第一處理塊鏈接到第二處理塊的條件。
在本申請(qǐng)實(shí)施例中,當(dāng)將多個(gè)處理塊(Block)進(jìn)行鏈接時(shí),即記錄所有鏈接條件。
如上述圖2和圖3所示,初始鏈接條件可以為:文本的行數(shù)是奇數(shù)(例如,行數(shù)%3=0),文本的行數(shù)是偶數(shù)(例如,行數(shù)%3=1),該條件也即上述圖2和圖3中文件讀取Block鏈接到下一層Block(例如,分行Block1或分行Block2)的條件。
假設(shè),目標(biāo)消息為多個(gè)待處理的文本,其中,待處理文本的行數(shù)可以為奇數(shù)行,還可以為偶數(shù)行;初始鏈接條件為:行數(shù)%3=0,即文本行數(shù)除以3,并取余等于0的文本可以進(jìn)行投遞;行數(shù)%3=1,即文本行數(shù)除以3,并取余等于1的文本可以進(jìn)行投遞。通過(guò)判斷可知多個(gè)待處理文本(即,目標(biāo)消息)中行數(shù)%3=0的文本和行數(shù)%3=1的文本滿(mǎn)足初始鏈接條件,多個(gè)待處理文本(即,目標(biāo)消息)中行數(shù)%3=2的文本則不滿(mǎn)足初始鏈接條件。
投遞單元30,用于當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),將目標(biāo)消息投遞至目標(biāo)處理塊中。
當(dāng)判斷出目標(biāo)消息滿(mǎn)足初始鏈接條件時(shí),可以返回true,并將目標(biāo)消息投遞至下一層處理塊中;當(dāng)判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),可以返回false,并將目標(biāo)消息投遞至目標(biāo)處理塊。
例如,通過(guò)判斷單元判斷可知多個(gè)待處理文本(即,目標(biāo)消息)中行數(shù)%3=2的文本不滿(mǎn)足初始鏈接條件,返回false,并將該待處理文本投遞至目標(biāo)處理塊中。避免消息由于不滿(mǎn)足初始鏈接條件,而導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死的狀態(tài)。
在本申請(qǐng)實(shí)施例中,通過(guò)判斷獲取到的目標(biāo)消息是否滿(mǎn)足鏈接條件,當(dāng)判斷出目標(biāo)消息不滿(mǎn)足鏈接條件時(shí),則將該目標(biāo)消息投遞至指定處理塊中,相對(duì)于現(xiàn)有技術(shù)中遇到不滿(mǎn)足鏈接條件的目標(biāo)消息時(shí),數(shù)據(jù)處理架構(gòu)將會(huì)停止處理,進(jìn)入假死狀態(tài),達(dá)到了不會(huì)由于消息不滿(mǎn)足鏈接條件而導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的目的,進(jìn)而解決了現(xiàn)有技術(shù)中由于不滿(mǎn)足鏈接條件導(dǎo)致整個(gè)數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的技術(shù)問(wèn)題。
可選地,目標(biāo)處理塊包括第一預(yù)設(shè)處理塊,投遞單元包括:第一獲取模塊,用于獲取初始鏈接條件,其中,每個(gè)第一處理塊和每個(gè)第二處理塊之間包含一個(gè)初始鏈接條件;生成模塊,用于根據(jù)初始鏈接條件生成目標(biāo)鏈接條件;第一投遞模塊,用于當(dāng)確定目標(biāo)消息滿(mǎn)足目標(biāo)鏈接條件時(shí),將目標(biāo)消息投遞至第一預(yù)設(shè)處理塊中,通過(guò)第一預(yù)設(shè)處理塊按照預(yù)先定義處理規(guī)則對(duì)目標(biāo)消息進(jìn)行處理。
具體地,當(dāng)判斷單元判斷出多個(gè)目標(biāo)消息中存在不滿(mǎn)足所有初始鏈接條件的消息時(shí),通過(guò)第一獲取模塊獲取所有初始鏈接條件,并通過(guò)生成模塊根據(jù)所有的初始鏈接條件生成新的鏈接條件(即,目標(biāo)鏈接條件)。其中,生成的目標(biāo)鏈接條件可以為一個(gè),還可以為多個(gè),具體數(shù)量由所有的初始鏈接條件決定。若通過(guò)確定可知,該不滿(mǎn)足所 有初始鏈接條件的目標(biāo)消息滿(mǎn)足目標(biāo)鏈接條件時(shí),則通過(guò)第一投遞模塊將該目標(biāo)消息投遞至用戶(hù)指定的處理塊中即第一預(yù)設(shè)處理塊中,其中,該第一預(yù)設(shè)處理塊為第一處理塊的下一層處理塊,并且第一預(yù)設(shè)處理塊和第一處理塊之間的鏈接條件即為該目標(biāo)消息所滿(mǎn)足的目標(biāo)鏈接條件。
需要說(shuō)明的是,第一預(yù)設(shè)處理塊與第一處理塊和第二處理塊均不相同,第一預(yù)設(shè)處理塊不參與對(duì)數(shù)據(jù)的處理,僅是按照預(yù)先定義處理規(guī)則對(duì)目標(biāo)消息進(jìn)行處理,例如,預(yù)先定義處理規(guī)則可以為該第一預(yù)設(shè)處理塊不參與對(duì)目標(biāo)消息進(jìn)行處理,而是將該目標(biāo)消息記錄到日志中,然后忽略該消息。
可選地,當(dāng)初始鏈接條件的數(shù)量為一個(gè)時(shí),生成模塊包括:第一運(yùn)算子模塊,用于將初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到目標(biāo)鏈接條件。
在本申請(qǐng)實(shí)施例中,通過(guò)第一運(yùn)算子模塊對(duì)初始鏈接條件進(jìn)行邏輯非運(yùn)算,進(jìn)而生成目標(biāo)鏈接條件,其中,該通過(guò)第一運(yùn)算子模塊生成的目標(biāo)鏈接條件不滿(mǎn)足初始連接條件。
可選地,當(dāng)初始鏈接條件的數(shù)量為多個(gè)時(shí),生成模塊包括:第二運(yùn)算子模塊,用于將多個(gè)初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到多個(gè)中間鏈接條件;第三運(yùn)算子模塊,用于依次將運(yùn)算之后的多個(gè)中間鏈接條件進(jìn)行邏輯與運(yùn)算,得到目標(biāo)鏈接條件。
在本申請(qǐng)實(shí)施例中,當(dāng)初始鏈接條件的數(shù)量為多個(gè)時(shí),首先通過(guò)第二運(yùn)算子模塊對(duì)初始鏈接條件進(jìn)行邏輯非運(yùn)算,得到處理之后多個(gè)的初始鏈接條件;然后通過(guò)第三運(yùn)算子模塊將進(jìn)行邏輯非運(yùn)算處理之后多個(gè)的初始鏈接條件進(jìn)行邏輯與運(yùn)算,得到目標(biāo)鏈接條件,其中,該目標(biāo)鏈接條件不滿(mǎn)足所有的初始鏈接條件。
可選地,目標(biāo)處理塊包括第二預(yù)設(shè)處理塊,投遞單元包括:第一判斷模塊,用于判斷獲取到的目標(biāo)消息是否攜帶第一標(biāo)識(shí),其中,第一標(biāo)識(shí)為表示忽略目標(biāo)消息的標(biāo)識(shí);第二投遞模塊,用于在判斷出目標(biāo)消息中攜帶第一標(biāo)識(shí)情況下,將目標(biāo)消息投遞至第二預(yù)設(shè)處理塊中,其中,第二預(yù)設(shè)處理塊為對(duì)目標(biāo)消息不進(jìn)行任何操作的塊。
在本申請(qǐng)實(shí)施例中,當(dāng)?shù)谝慌袛嗄K判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),用戶(hù)還可以通過(guò)第二投遞模塊將該目標(biāo)消息投遞至指定的處理塊中即第二預(yù)設(shè)處理塊中。
當(dāng)采用第二投遞模塊對(duì)目標(biāo)消息進(jìn)行投遞時(shí),可標(biāo)記將該目標(biāo)消息投遞至第二預(yù)設(shè)處理塊中,其中,第二預(yù)設(shè)處理塊命名為Null Block,為忽略目標(biāo)消息的處理塊,即在遇到不滿(mǎn)足任何條件的目標(biāo)消息時(shí)不做任何處理,直接忽略。
目標(biāo)處理塊包括第三預(yù)設(shè)處理塊,投遞單元可以包括:第二判斷模塊,用于判斷 獲取到的目標(biāo)消息是否攜帶第二標(biāo)識(shí),其中,第二標(biāo)識(shí)為表示記錄目標(biāo)消息的錯(cuò)誤信息的標(biāo)識(shí);第三投遞模塊,用于在判斷出目標(biāo)消息中攜帶第二標(biāo)識(shí)情況下,將目標(biāo)消息投遞至第三預(yù)設(shè)處理塊中,其中,第三預(yù)設(shè)處理塊為記錄錯(cuò)誤信息的塊。
在本申請(qǐng)實(shí)施例中,當(dāng)?shù)诙袛嗄K判斷出目標(biāo)消息不滿(mǎn)足初始鏈接條件時(shí),用戶(hù)還可以通過(guò)第三投遞模塊將該目標(biāo)消息投遞至指定的處理塊中即第三預(yù)設(shè)處理塊中。
當(dāng)采用第三投遞模塊對(duì)目標(biāo)消息進(jìn)行投遞時(shí),可標(biāo)記將該目標(biāo)消息投遞至第三預(yù)設(shè)處理塊中,其中,第三預(yù)設(shè)處理塊可命名為Error Block,該處理塊用于記錄對(duì)目標(biāo)消息進(jìn)行處理過(guò)程中出現(xiàn)的異常信息(即,錯(cuò)誤信息),并拋出異常。
圖6是根據(jù)本申請(qǐng)實(shí)施例的另一種可選地?cái)?shù)據(jù)處理架構(gòu)中消息的處理裝置的示意圖,如圖6所示,解析Block(即,第一處理塊)和解析處理塊的下一層處理塊緩存處理塊緩存Block(即,第二處理塊)之間的初始鏈接條件為:ProfileId=1;ProfileId=2;ProfileId=3。
解析Block首先負(fù)責(zé)對(duì)接收到的請(qǐng)求進(jìn)行解析,根據(jù)請(qǐng)求解析到Profile信息,然后將解析到的Profile信息與初始連接條件進(jìn)行比較,如果比較出初始連接條件ProfileId中包括Profile信息時(shí),則根據(jù)每個(gè)初始連接條件ProfileId將Profile信息(即,目標(biāo)消息)投遞到不同的Block,例如,圖6中所示緩存Block。進(jìn)而緩存Block對(duì)Profile信息進(jìn)行緩存處理之后,投遞至緩存Block的下一層Block(即,如圖6所示的聚合Block),聚合Block對(duì)Profile信息進(jìn)行聚合處理,再投遞至下一層Block,即保存Block,通過(guò)保存Block實(shí)現(xiàn)Profile信息的保存。
如果Profile信息不滿(mǎn)足任意一個(gè)初始鏈接條件ProfileId,則將Profile信息投遞到專(zhuān)門(mén)處理這些消息的Block,即,圖6中所示的不滿(mǎn)足條件的目標(biāo)消息處理Block。
根據(jù)實(shí)際需求,不滿(mǎn)足條件的目標(biāo)消息處理Block可以對(duì)投遞至該處理塊的消息做下述處理:
處理一:將Profile信息(即,目標(biāo)消息)記錄到日志中,然后忽略;
處理二:不處理Profile信息(即,目標(biāo)消息),直接忽略;
處理三:記錄異常信息,且拋出該異常信息,其中,異常信息為對(duì)Profile信息(即,目標(biāo)消息)處理過(guò)程中存在的異常信息,例如,若在Profile信息中存在異常的Profile信息,則將該異常的Profile信息拋出。
所述數(shù)據(jù)處理架構(gòu)中消息的處理裝置包括處理器和存儲(chǔ)器,上述獲取單元、判斷單元和投遞單元等均作為程序單元存儲(chǔ)在存儲(chǔ)器中,由處理器執(zhí)行存儲(chǔ)在存儲(chǔ)器中的 上述程序單元來(lái)實(shí)現(xiàn)相應(yīng)的功能。
處理器中包含內(nèi)核,由內(nèi)核去存儲(chǔ)器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過(guò)調(diào)整內(nèi)核參數(shù)來(lái)避免由于消息不滿(mǎn)足鏈接條件而導(dǎo)致數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài),進(jìn)而解決了現(xiàn)有技術(shù)中由于不滿(mǎn)足鏈接條件導(dǎo)致整個(gè)數(shù)據(jù)處理架構(gòu)進(jìn)入假死狀態(tài)的技術(shù)問(wèn)題。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性?xún)?nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM),存儲(chǔ)器包括至少一個(gè)存儲(chǔ)芯片。
本申請(qǐng)還提供了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:獲取目標(biāo)消息,其中,所述目標(biāo)消息為指示第一處理塊鏈接至第二處理塊的消息,所述第二處理塊為所述第一處理塊的下一層塊;判斷所述目標(biāo)消息是否滿(mǎn)足初始鏈接條件,其中,所述初始鏈接條件為所述第一處理塊鏈接到所述第二處理塊的條件;當(dāng)判斷出所述目標(biāo)消息不滿(mǎn)足所述初始鏈接條件時(shí),將所述目標(biāo)消息投遞至目標(biāo)處理塊中。
上述本申請(qǐng)實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本申請(qǐng)的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過(guò)其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信鏈接可以是通過(guò)一些接口,單元或模塊的間接耦合或通信鏈接,可以是電性或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、移動(dòng)硬盤(pán)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅是本申請(qǐng)的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本申請(qǐng)?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。