本申請涉及測試技術(shù),尤其涉及一種流量隔離方法及裝置。
背景技術(shù):
生產(chǎn)環(huán)境是指提供服務給線上真實用戶使用的計算機系統(tǒng),有別于供開發(fā)和測試人員進行例如開發(fā)、測試等非生產(chǎn)活動使用的非生產(chǎn)環(huán)境。
計算機系統(tǒng)是指提供某種服務的計算機集群系統(tǒng),如,提供物品詳情瀏覽頁服務的計算機集群就稱為一個計算機系統(tǒng),一個計算機系統(tǒng)由多個應用組成。
應用是組成整個計算機系統(tǒng)的各個子系統(tǒng),比如和物品相關(guān)的物品應用,和交易相關(guān)的交易應用。應用可以直接提供服務,也可以依賴于別的應用提供的服務;各個應用通過相互依賴的調(diào)用一起完成整個計算機系統(tǒng)的功能。
各個應用之間互相調(diào)用完成某個功能就是一個調(diào)用鏈路,例如,應用A調(diào)用應用B的服務,應用B為了完成該服務,又需要調(diào)用應用C的服務,這樣A調(diào)用B,觸發(fā)B調(diào)用C;A->B->C就是一個調(diào)用鏈路。
用戶訪問系統(tǒng)以向計算機系統(tǒng)請求一個調(diào)用鏈路,稱之為一個單位的流量。
在現(xiàn)有技術(shù)中,為了發(fā)現(xiàn)生產(chǎn)環(huán)境中的問題,需要使非生產(chǎn)環(huán)境和生產(chǎn)環(huán)境保持高度一致,通常的做法是直接在生產(chǎn)環(huán)境中進行研發(fā)或測試等非生產(chǎn)活動。
但是采用現(xiàn)有技術(shù)中的方案存在以下問題:非生產(chǎn)活動與生產(chǎn)活動產(chǎn)生的流量無法隔離,導致不同用途的流量產(chǎn)生交叉影響。例如,測試人員構(gòu)造的測試數(shù)據(jù)和用戶在使用服務時產(chǎn)生的數(shù)據(jù)無法區(qū)分,造成用戶數(shù)據(jù)污染,還可能導致用戶看到測試數(shù)據(jù),進而產(chǎn)生業(yè)務糾紛或線上故障。
技術(shù)實現(xiàn)要素:
本申請實施例中提供了一種流量隔離方法和裝置,用于解決現(xiàn)有技術(shù)中不同用途的流量無法隔離的問題。
根據(jù)本申請實施例的一個方面,提供了一種流量隔離方法,包括:接收第一調(diào)用請求;查找第一調(diào)用請求中的預定字段,其中,預定字段是根據(jù)第一調(diào)用請求的類型而設(shè)置的;根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程。
根據(jù)本申請實施例的另一個方面,提供了一種流量隔離裝置,包括:接收模塊,用于接收第一調(diào)用請求;查找模塊,用于查找第一調(diào)用請求中的預定字段,其中,預定字段是根據(jù)第一調(diào)用請求的類型而設(shè)置的;第一調(diào)用模塊,用于根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程。
采用本申請實施例中的流量隔離方法及裝置,通過查找調(diào)用請求中根據(jù)調(diào)用請求的類型設(shè)置的預定字段,并根據(jù)該預定字段的狀態(tài)來調(diào)用預先創(chuàng)建的相應線程,使得應用能夠根據(jù)不同類型的調(diào)用請求調(diào)用不同的線程,從而實現(xiàn)流量的隔離。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
圖1為本申請實施例一所示的流量隔離方法流程圖;
圖2為本申請實施例二所示流量隔離裝置的結(jié)構(gòu)示意圖;
圖3為根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)的結(jié)構(gòu)示意圖;
圖4為根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)中的應用A 的數(shù)據(jù)處理流程圖;
圖5為根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)中的應用B的數(shù)據(jù)處理流程圖。
具體實施方式
為了使本申請實施例中的技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本申請的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本申請的一部分實施例,而不是所有實施例的窮舉。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
在實現(xiàn)本申請的過程中,發(fā)明人發(fā)現(xiàn),在現(xiàn)有技術(shù)中,為了發(fā)現(xiàn)生產(chǎn)環(huán)境中的問題,需要使非生產(chǎn)環(huán)境和生產(chǎn)環(huán)境保持高度一致,通常的做法是直接在生產(chǎn)環(huán)境中進行研發(fā)或測試等非生產(chǎn)活動。
但是采用現(xiàn)有技術(shù)中的方案存在以下問題:非生產(chǎn)活動與生產(chǎn)活動產(chǎn)生的流量無法隔離,導致不同用途的流量產(chǎn)生交叉影響。例如,測試人員構(gòu)造的測試數(shù)據(jù)和用戶在使用服務時產(chǎn)生的數(shù)據(jù)無法區(qū)分,造成用戶數(shù)據(jù)污染,還可能導致用戶看到測試數(shù)據(jù),進而產(chǎn)生業(yè)務糾紛或線上故障;或者是壓力驗證流量和正常用戶訪問流量如果不能區(qū)分隔離,那么壓力驗證流量會搶占線上用戶資源,導致線上用戶資源耗盡而不能提供正常服務,影響系統(tǒng)的可用性進而產(chǎn)生線上故障。
為了解決數(shù)據(jù)污染的問題,相關(guān)技術(shù)中也提供了相關(guān)的解決方案,例如,在生產(chǎn)環(huán)境之外再搭建一個非生產(chǎn)環(huán)境,利用另一計算機系統(tǒng)來做功能測試和壓力驗證工作,但是由于是搭建的環(huán)境,與真實的生產(chǎn)環(huán)境不一致,無法發(fā)現(xiàn)一些真實環(huán)境里面的問題,并且搭建環(huán)境成本也非常高。
針對上述問題,本申請中提供了一種流量隔離方法和裝置,核心思想在于,在生產(chǎn)環(huán)境的各應用中,創(chuàng)建多個線程,然后根據(jù)調(diào)用請求的類型來調(diào)用不同的線程,使得應用能夠根據(jù)該預定字段調(diào)用能夠調(diào)用預先創(chuàng)建的相應線程,從 而實現(xiàn)流量的隔離。
本申請實施例中提供的方案能夠應用于生產(chǎn)環(huán)境線上全鏈路壓測等測試產(chǎn)品中。
圖1為本申請實施例一所示的流量隔離方法流程圖。
如圖1所示,根據(jù)本申請實施例一所示的流量隔離方法包括以下步驟:
步驟102,接收第一調(diào)用請求;
步驟104,查找第一調(diào)用請求中的預定字段,其中,該預定字段是根據(jù)第一調(diào)用請求的類型而設(shè)置的;
步驟106,根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程。
在具體實施時,第一調(diào)用請求的類型可以包括一般調(diào)用,即普通用戶,如買家、賣家等發(fā)起的調(diào)用;也可以包括如測試人員發(fā)起的測試調(diào)用;還可以包括如研發(fā)人員發(fā)起的研發(fā)調(diào)用等;具體的類型本申請不作限制。
在具體實施時,該第一調(diào)用請求可以是用戶發(fā)送的HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)請求,也可以是上游應用發(fā)送給下游應用的、基于TCP(Transmission Control Protocol,傳輸控制協(xié)議)長連接的遠程方法調(diào)用框架HSF(High Speed Framework,服務調(diào)用框架協(xié)議)請求,本申請對此不作限制。
在具體實施時,該預定字段的狀態(tài)與第一調(diào)用請求的類型相對應,并且可以根據(jù)第一調(diào)用請求的類型適應性設(shè)置;例如,如果將第一調(diào)用請求分為一般調(diào)用和特殊調(diào)用(除一般調(diào)用以外的調(diào)用),則可以將一般調(diào)用請求的預定字段設(shè)置為空或者為0,而將特殊調(diào)用請求的預定字段設(shè)置為1等,也可以將一般調(diào)用請求設(shè)置為不攜帶預定字段,而特殊調(diào)用請求攜帶預定字段等;如果將第一調(diào)用請求分為一般調(diào)用、測試調(diào)用和研發(fā)調(diào)用;則可以將一般調(diào)用請求的預定字段設(shè)置為空或0,將測試調(diào)用請求的預定字段設(shè)置為1,將研發(fā)調(diào)用請求的預定字段設(shè)置為2等;本領(lǐng)域技術(shù)人員應當理解,上述僅為示例的目的示 出,并不用于限制本申請。
在具體實施時,該第一調(diào)用請求的預定字段可以是該調(diào)用請求中的指定字段,例如,如果該第一調(diào)用請求是HTTP請求,則該預定字段可以是URL中的某一特殊字段,如flag=test;如果該第一調(diào)用請求是HSF請求,則該預定字段可以是自定義的某一特殊字段,如flag=test;本申請對此不作限制。
在具體實施時,可以在接收到第一調(diào)用請求之前,也可以在查找第一調(diào)用請求中的預定字段之前創(chuàng)建與第一調(diào)用請求的類型相對應的線程池。例如,如果將第一調(diào)用請求分為一般調(diào)用和特殊調(diào)用兩種類型,則可以預先創(chuàng)建兩個線程池;如果將第一調(diào)用請求分為一般調(diào)用、測試調(diào)用和研發(fā)調(diào)用三種類型,則可以預先創(chuàng)建三個線程池等;本申請對此不作限制。
在具體實施時,不同類型的調(diào)用請求對應的線程池可以按需求設(shè)置為不同大小的,也可以設(shè)置為對等的,本申請對此不做限制。
優(yōu)選地,該第一調(diào)用請求為測試調(diào)用請求,該測試調(diào)用請求攜帶預定字段。
在具體實施時,對于接收到的測試調(diào)用請求,應用根據(jù)該測試調(diào)用請求中攜帶的預定字段判斷出接收到的調(diào)用請求為測試調(diào)用請求,然后調(diào)用預先創(chuàng)建的相應線程池中的線程,并從而能夠?qū)y試調(diào)用請求與一般調(diào)用請求隔離。
例如,用戶和測試人員分別向應用A發(fā)送HTTP請求,用戶發(fā)送的請求中不攜帶預定字段,測試人員發(fā)送的請求中攜帶預定字段;應用A判斷出用戶發(fā)送的請求中沒有攜帶預定字段,則把用戶的請求放入第一個線程池中;應用A判斷出測試人員發(fā)送的請求中攜帶有預定字段,則把測試人員的請求放入另一個線程池中;從而使得用戶和測試人員的流量能夠調(diào)用不同的線程池,互不干擾,從而實現(xiàn)了不同類型的流量之間的隔離。
采用本申請實施例中的流量隔離方法,通過查找調(diào)用請求中根據(jù)調(diào)用請求的類型設(shè)置的預定字段,并根據(jù)該預定字段來調(diào)用預先創(chuàng)建的相應線程,使得應用能夠根據(jù)不同類型的調(diào)用請求調(diào)用不同的線程,從而實現(xiàn)流量的隔離。
優(yōu)選地,在根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線 程池中的線程之前,還包括:創(chuàng)建第一線程池和第二線程池,其中,第一線程池和第二線程池對等。
在具體實施時,為避免測試流量搶占普通用戶的流量,可以將第一調(diào)用請求的類型設(shè)置為兩種,即一般調(diào)用和測試調(diào)用;相應的,可以在調(diào)用線程池之前創(chuàng)建兩個線程池。同時,為了使測試流量與一般流量的環(huán)境更加一致,可以創(chuàng)建兩個對等的線程池。
優(yōu)選地,根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程具體包括:判斷第一調(diào)用請求中是否攜帶預定字段;如果判斷結(jié)果為否,則調(diào)用第一線程池中的線程;如果判斷結(jié)果為是,則調(diào)用第二線程池中的線程。
為節(jié)省系統(tǒng)資源,可以采用使某一種調(diào)用請求保持不變,僅改變其他類型的調(diào)用請求的方式來區(qū)分不同類型的調(diào)用請求;即,可以使某一種類型的第一調(diào)用請求不攜帶預定字段,而在其他類型的第一調(diào)用請求中增加預定字段。
除壓力測試之外,通常的測試流量仍然小于一般流量,因此,可以使一般的調(diào)用請求中不攜帶預定字段,而僅在測試流量等特殊流量的調(diào)用請求中攜帶預定字段。
優(yōu)選地,在根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程之后,還包括:創(chuàng)建第二調(diào)用請求;根據(jù)第一調(diào)用請求中的預定字段設(shè)置第二調(diào)用請求中的相應預定字段;發(fā)送第二調(diào)用請求。
調(diào)用鏈路中的應用除根據(jù)接收到的第一調(diào)用請求中預定字段的狀態(tài)調(diào)用相應線程池中的線程之外,還將進一步將該預定字段的狀態(tài)傳遞至調(diào)用鏈路中的下一應用,以使下一應用能夠繼續(xù)隔離流量。
在具體實施時,該第二調(diào)用請求可以是HSF請求,也可以是采用其他協(xié)議的應用調(diào)用請求,本申請不作限制。
優(yōu)選地,在根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程之后,還包括:創(chuàng)建第三調(diào)用請求;根據(jù)第一調(diào)用請求中的預定 字段設(shè)置第三調(diào)用請求中的相應預定字段;根據(jù)第三調(diào)用請求中的預定字段的狀態(tài)將第三調(diào)用請求路由至相應的數(shù)據(jù)表。
在具體實施時,處于調(diào)用鏈路末端的應用,除根據(jù)接收到的第一調(diào)用請求中預定字段的狀態(tài)調(diào)用相應線程池中的線程之外,還將進一步將該預定字段設(shè)置至對數(shù)據(jù)庫的第三調(diào)用請求中,以使數(shù)據(jù)庫能夠繼續(xù)隔離流量。
在具體實施時,該第三調(diào)用請求可以是JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)請求,也可以是采用其他數(shù)據(jù)庫調(diào)用協(xié)議的請求,本申請對此不作限制。
在具體實施時,該第三調(diào)用請求中的預定字段可以是SQL語法中的表名,例如,對于普通用戶發(fā)起的一般調(diào)用,將該表名設(shè)置為A;對于測試人員發(fā)起的測試調(diào)用,將表名設(shè)置為B等;本領(lǐng)域技術(shù)人員應當能夠,只要通過該預定字段能夠區(qū)分調(diào)用的類型即可。
優(yōu)選地,在根據(jù)第三調(diào)用請求中的預定字段的狀態(tài)將第三調(diào)用請求路由至相應的數(shù)據(jù)表之前,還包括:創(chuàng)建第一數(shù)據(jù)表和第二數(shù)據(jù)表,其中,第二數(shù)據(jù)表為第一數(shù)據(jù)表的映射表。
為進一步隔離流量,具體實施時,可以在數(shù)據(jù)庫內(nèi)創(chuàng)建一個與原始表C的表結(jié)構(gòu)完全一致的映射表D,為便于區(qū)分,該映射表D的表名可以和原始表C的表名不同。
優(yōu)選地,根據(jù)第三調(diào)用請求中的預定字段的狀態(tài)將第三調(diào)用請求路由至相應的數(shù)據(jù)表具體包括:判斷第三調(diào)用請求中是否攜帶預定字段;如果判斷結(jié)果為否,則將第三調(diào)用請求路由至第一數(shù)據(jù)表(例如,原始表);如果判斷結(jié)果為是,則將第三調(diào)用請求路由至第二數(shù)據(jù)表(例如,原始表的映射表D)。
在具體實施時,調(diào)用鏈路末端的應用在調(diào)用相應的線程池后,需要進一步將調(diào)用請求路由至數(shù)據(jù)表,在路由到數(shù)據(jù)表之前,可以判斷JDBC請求中的預定字段是否空,如果為空,則直接把請求路由到原始表C;對于測試人員發(fā)起的測試調(diào)用請求,可以判斷出JDBC請求中的預定字段不為空,則把請求路由 到映射表D,直接替換SQL語句中的表名。
采用本申請實施例中的流量隔離方法,一般調(diào)用請求和特殊調(diào)用請求能夠在一個計算機系統(tǒng)里被處理,并且數(shù)據(jù)完全存儲在一個數(shù)據(jù)庫中,一般的正常數(shù)據(jù)存儲在原始表中,測試數(shù)據(jù)存儲在映射表中,做到了流量間互相隔離不影響,數(shù)據(jù)間的隔離互相不影響,可以有效的完成功能性測試和壓力驗證測試。
基于同一發(fā)明構(gòu)思,本申請實施例中還提供了一種流量隔離裝置,由于該裝置解決問題的原理與本申請實施例所提供的方法相似,因此該裝置的實施可以參見方法的實施,重復之處不再贅述。
圖2為本申請實施例二所示流量隔離裝置的結(jié)構(gòu)示意圖。
如圖2所示,根據(jù)本申請實施例二所示流量隔離裝置200,包括:接收模塊202,用于接收第一調(diào)用請求;查找模塊204,用于查找第一調(diào)用請求中的預定字段,其中,預定字段是根據(jù)第一調(diào)用請求的類型而設(shè)置的;第一調(diào)用模塊206,用于根據(jù)第一調(diào)用請求中的預定字段的狀態(tài)調(diào)用預先創(chuàng)建的相應線程池中的線程。
優(yōu)選地,根據(jù)本申請實施例二所示流量隔離裝置200還包括:線程創(chuàng)建模塊208,用于創(chuàng)建第一線程池和第二線程池,其中,第一線程池和所述第二線程池對等。
優(yōu)選地,第一調(diào)用模塊具體包括:第一判斷子模塊,用于判斷第一調(diào)用請求中是否攜帶預定字段;第一線程調(diào)用子模塊,用于在判斷結(jié)果為否時,調(diào)用第一線程池中的線程;第二線程調(diào)用子模塊,用于在判斷結(jié)果為是時,調(diào)用第二線程池中的線程。
優(yōu)選地,根據(jù)本申請實施例二所示流量隔離裝置200還包括:第二調(diào)用請求創(chuàng)建模塊,用于創(chuàng)建第二調(diào)用請求;第一字段設(shè)置模塊,用于根據(jù)第一調(diào)用請求中的預定字段設(shè)置第二調(diào)用請求中的相應預定字段;發(fā)送模塊,用于發(fā)送第二調(diào)用請求。
優(yōu)選地,根據(jù)本申請實施例二所示流量隔離裝置200還包括:第三調(diào)用請求創(chuàng)建模塊,用于創(chuàng)建第三調(diào)用請求;第二字段設(shè)置模塊,用于根據(jù)第一調(diào)用請求中的預定字段設(shè)置第三調(diào)用請求中的相應預定字段;路由模塊,用于根據(jù)第三調(diào)用請求中的預定字段的狀態(tài)將第三調(diào)用請求路由至相應的數(shù)據(jù)表。
優(yōu)選地,根據(jù)本申請實施例二所示流量隔離裝置200還包括:數(shù)據(jù)表創(chuàng)建模塊,用于創(chuàng)建第一數(shù)據(jù)表和第二數(shù)據(jù)表,其中,第二數(shù)據(jù)表為第一數(shù)據(jù)表的映射表。
優(yōu)選地,路由模塊具體包括:第二判斷子模塊,用于判斷第三調(diào)用請求中是否攜帶預定字段;第一路由子模塊,用于在判斷結(jié)果為否時,將第三調(diào)用請求路由至第一數(shù)據(jù)表;第二路由子模塊,用于在判斷結(jié)果為是時,將第三調(diào)用請求路由至第二數(shù)據(jù)表。
優(yōu)選地,該第一調(diào)用請求為測試調(diào)用請求,該測試調(diào)用請求攜帶預定字段。
采用本申請實施例中的流量隔離裝置,一般調(diào)用請求和特殊調(diào)用請求能夠在一個計算機系統(tǒng)里被處理,并且數(shù)據(jù)完全存儲在一個數(shù)據(jù)庫中,一般的正常數(shù)據(jù)存儲在原始表中,測試數(shù)據(jù)存儲在映射表中,做到了流量間互相隔離不影響,數(shù)據(jù)間的隔離互相不影響,可以有效的完成功能性測試和壓力驗證測試。
圖3為根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)的結(jié)構(gòu)示意圖。
圖4為根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)中的應用A的數(shù)據(jù)處理流程圖。
圖5為根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)中的應用B的數(shù)據(jù)處理流程圖。
如圖3所示,在根據(jù)本申請實施例三的采用流量隔離裝置的計算機系統(tǒng)中,當前的調(diào)用鏈路包括兩個應用A和應用B,應用A和應用B中各自創(chuàng)建有兩個對等線程池用來處理不同的流量;數(shù)據(jù)庫中存儲有數(shù)據(jù)表C和數(shù)據(jù)表D;數(shù) 據(jù)表D為C的映射表。
應用A中新增有本申請實施例提供的第一流量隔離裝置,包括接收模塊、查找模塊、第一調(diào)用模塊、第一調(diào)用請求創(chuàng)建模塊、第一字段設(shè)置模塊和發(fā)送模塊,查找模塊用于識別HTTP協(xié)議和HSF協(xié)議中是否存在預定字段,如果無,則把接收到的調(diào)用請求放入線程池1,如果有,則把調(diào)用請求放入線程池2,做到流量隔離;第一調(diào)用請求創(chuàng)建模塊、第一字段設(shè)置模塊和發(fā)送模塊用于將預定字段傳遞至下一應用。應用A執(zhí)行的流量隔離方法流程如圖4所示。
應用B中新增有本申請實施例提供的第二流量隔離裝置,包括:接收模塊、查找模塊、第一調(diào)用模塊、第三調(diào)用請求創(chuàng)建模塊、第二字段設(shè)置模塊和路由模塊,查找模塊用于識別HSF協(xié)議中是否存在預定字段,如果無,則把接收到的調(diào)用請求放入線程池2,如果有,則把調(diào)用請求放入線程池4,做到流量隔離;第三調(diào)用請求創(chuàng)建模塊、第二字段設(shè)置模塊和路由模塊用于根據(jù)將不同的請求路由至不同的數(shù)據(jù)表。例如,對于一般用戶發(fā)起的普通調(diào)用請求,不設(shè)置預定字段,路由模塊發(fā)現(xiàn)JDBC協(xié)議中不存在預定字段,直接把請求路由到原始表C;測試人員發(fā)起測試請求時,給請求設(shè)置特殊的預定字段,路由模塊識別到該預定字段,直接替換表名,將請求路由到映射表D。應用B執(zhí)行的流量隔離方法流程分別如圖5所示。
采用本申請實施例中的流量隔離方案,請求完全在一個系統(tǒng)和計算機集群里被處理,正常數(shù)據(jù)存儲在原始表中,測試數(shù)據(jù)存儲在映射表中,數(shù)據(jù)完全存儲在一個數(shù)據(jù)庫中,做到了流量間互相隔離不影響和數(shù)據(jù)間的隔離互相不影響,可以有效的完成功能性測試和壓力驗證測試。
本領(lǐng)域內(nèi)的技術(shù)人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、 CD-RoM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。