專利名稱::一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及Web環(huán)境應(yīng)用領(lǐng)域,特別是涉及一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法,實現(xiàn)將長耗時阻塞的同步服務(wù)調(diào)用解耦為獨立的多線程非阻塞式異步調(diào)用,通過使用本發(fā)明在Web領(lǐng)域下,在面向可拆分的批量服務(wù)請求時,如數(shù)據(jù)庫操作、文件傳輸,批量短信email發(fā)送等,分流分批地異步并行處理,可以提高服務(wù)的吞吐量,并有設(shè)定超時阻塞等待時間,保證可靠響應(yīng)速度。
背景技術(shù):
:Web開發(fā)者們熟知,一個同步服務(wù)調(diào)用請求往往是在“接收消息->處理消息->送回消息”這種trivial式的同步阻塞式流程上,當(dāng)遇到長耗時阻塞的同步服務(wù)調(diào)用時,如數(shù)據(jù)庫操作、文件傳輸,批量短信email發(fā)送等,同步服務(wù)調(diào)用通常會被長時間阻塞,從而是調(diào)用者響應(yīng)體驗較差;本策略基于Web應(yīng)用環(huán)境下,實現(xiàn)了一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法,將長耗時阻塞的同步服務(wù)調(diào)用解耦為獨立的多線程非阻塞式異步調(diào)用,提高服務(wù)的吞吐量,并有設(shè)定超時阻塞等待時間,保證可靠響應(yīng)速度。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是在Web環(huán)境下,同步服務(wù)調(diào)用請求往往是在“接收消息->處理消息->送回消息”這種trivial式的同步阻塞式流程上,當(dāng)遇到長耗時阻塞的服務(wù)調(diào)用時,調(diào)用者通常要等待很長的時間才得到返回結(jié)構(gòu),響應(yīng)速度極差。當(dāng)遇到服務(wù)調(diào)用的是批量可拆分的服務(wù)時,只能串行執(zhí)行等待結(jié)果,導(dǎo)致時間浪費,資源利用率不高等問題;為實現(xiàn)上述發(fā)明目的,本發(fā)明提供一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法,將長耗時阻塞的同步服務(wù)調(diào)用解耦為獨立的多線程非阻塞式異步調(diào)用,提高服務(wù)的吞吐量,并有設(shè)定超時阻塞等待時間,保證可靠響應(yīng)速度;本轉(zhuǎn)換器由主調(diào)入口部分、等待對象池部分、轉(zhuǎn)換器部分、資源服務(wù)組件等幾部分組成,轉(zhuǎn)換過程分為服務(wù)分發(fā)并阻塞等待、資源服務(wù)調(diào)用、應(yīng)答喚醒并歸并返回三個步驟;其中,其中所述第一步驟的服務(wù)分發(fā)并阻塞等待,單線程的,體現(xiàn)在主調(diào)入口部分,這部分包括一個單線程調(diào)度的主調(diào)線程和自定義的分發(fā)策略,用于:當(dāng)有請求進入調(diào)用Web服務(wù)方法,主調(diào)線程將根據(jù)已定義的策略將服務(wù)方法及數(shù)據(jù)包分拆,并dispatch分發(fā)起獨立資源服務(wù)調(diào)用,然后主線程進入限時阻塞等待;其中所述第二步驟的資源服務(wù)調(diào)用,多線程并行,體現(xiàn)在資源服務(wù)組件部分,這部分的接口調(diào)用通過共享隊列解耦,使用主調(diào)服務(wù)方法與資源服務(wù)方法接口解耦合,用于:子線程執(zhí)行資源服務(wù)調(diào)用,異步并行地進行,并將執(zhí)行結(jié)果封裝為應(yīng)答消息返回;其中所述第三步驟的應(yīng)答喚醒并歸并返回,單線程的,體現(xiàn)在轉(zhuǎn)換器部分,有結(jié)果收集器,專門收集應(yīng)答結(jié)果,用于:專門的接收線程接收應(yīng)答并歸并,喚醒被阻塞的主調(diào)線程并返回歸并的結(jié)果。利用同步對象的等待通知功能,使主調(diào)用線程能夠在分拆并dispatch送出資源服務(wù)請求之后掛起,應(yīng)答到來之際被喚醒;如果調(diào)用過程,某個資源服務(wù)失敗或者超時,異常將會被拋出,并會喚醒被阻塞的主線程并返回超時結(jié)果,以保證限時響應(yīng);由上述方案可以看出,本發(fā)明提供一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法實現(xiàn),在Web環(huán)境下,將長耗時阻塞的同步服務(wù)調(diào)用解耦為獨立的多線程非阻塞式異步調(diào)用,提高服務(wù)的吞吐量,在面向可拆分的批量服務(wù)請求時能拆分并行處理,這樣可以保證可靠的限時響應(yīng)。為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例一中系統(tǒng)結(jié)構(gòu)原理不意圖;圖2為本發(fā)明實施例一中轉(zhuǎn)換過程時序圖;圖3為本發(fā)明實施例一中數(shù)據(jù)處理過程圖。具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例一,參見圖1,本發(fā)明提供一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法實現(xiàn),將長耗時阻塞的同步服務(wù)調(diào)用解耦為獨立的多線程非阻塞式異步調(diào)用,提高服務(wù)的吞吐量,在面向可拆分的批量服務(wù)請求時能拆分并行處理,這樣可以保證可靠的限時響應(yīng);上述將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的結(jié)構(gòu)原理示意圖參見圖1,具體包括以下幾個部分:圖中SlOl表示:主調(diào)入口部分,這部分包括一個單線程調(diào)度的主調(diào)線程和自定義的分發(fā)策略,用于:當(dāng)有請求進入調(diào)用同步服務(wù)方法,主調(diào)線程將根據(jù)已定義的策略將服務(wù)方法及數(shù)據(jù)包分拆,并dispatch分發(fā)起獨立資源服務(wù)調(diào)用,然后主線程進入限時阻塞等待;圖中S102表示:等待對象池部分,這部分包括自擴展的阻塞算法,一種擴展實現(xiàn)的同步對象的等待通知算法,在轉(zhuǎn)換機制中,對調(diào)用者線程進行阻塞等待與應(yīng)答喚醒;請求進入時候主調(diào)線程先向消息等待對象池(Waitablepool)注冊登記一入口,并在應(yīng)答結(jié)果歸并后由接受者線程在等待對象池喚醒;等待對象池負責(zé)緩存所有等待對象;圖中S103表示:排隊路由方法部分,這部分有結(jié)果收集器,專門收集應(yīng)答結(jié)果,專門的接收線程接收應(yīng)答并歸并,喚醒被阻塞的主調(diào)線程并返回歸并的結(jié)果。利用同步對象的等待通知功能,使主調(diào)用線程能夠在分拆并dispatch送出資源服務(wù)請求之后掛起,應(yīng)答到來之際被喚醒;圖中S104表示:資源服務(wù)組件部分,這個屬于提供多種資源組件服務(wù),調(diào)用方式是并發(fā)異步式;每個資源組件服務(wù)均可在不同的線程上運行,在主調(diào)中被拆分的子服務(wù)可以委托各個資源服務(wù)組件調(diào)用。上述將同步調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的轉(zhuǎn)換過程時序示意圖參見圖2,具體包括以下處理流程:步驟SI,服務(wù)分發(fā)并阻塞等待,單線程的,體現(xiàn)在主調(diào)入口部分;其中部署SI劃分為S1-1、S1-2、S1-3、S1-4、S1_5幾小步,子步驟S1-1,經(jīng)外部請求,主調(diào)用發(fā)起同步服務(wù)調(diào)用;子步驟S1-2,向緩存中的等待對象池請求Waitable對象,供阻塞用;子步驟S1-3,若等待對象池中不存在則創(chuàng)建新,并入池;子步驟S1-4,主調(diào)線程將根據(jù)已定義的策略將服務(wù)方法及數(shù)據(jù)包分拆,并dispatch分發(fā)起獨立資源服務(wù)調(diào)用;子步驟S1-5,主調(diào)線程進入限時阻塞等待,期待結(jié)果響應(yīng);步驟S2,資源服務(wù)調(diào)用,多線程并行,體現(xiàn)在資源服務(wù)組件部分其中部署S2劃分為S2-1、S2-2兩小步,子步驟S2-1,多線程地異步地發(fā)起資源組件服務(wù),傳入數(shù)據(jù)參數(shù);子步驟S2-2,收集調(diào)用結(jié)果,并返回;步驟S3,應(yīng)答喚醒并歸并返回,單線程的,體現(xiàn)在轉(zhuǎn)換器部分,其中部署S3劃分為S3-1、S3-2兩小步,專門的接收線程接收應(yīng)答并歸并,喚醒被阻塞的主調(diào)線程并返回歸并的結(jié)果上述將同步調(diào)用轉(zhuǎn)換為異步調(diào)用服務(wù)所涉及的數(shù)據(jù)流程示意圖參見圖3,具體有以下流程:圖中Q表示一個請求數(shù)據(jù)單元,針對資源組件服務(wù)來劃分粒度,多個Q組合在一起表示一批數(shù)據(jù)包單元,并存放在請求隊列中;圖中R表示一個結(jié)果數(shù)據(jù)單元,針對資源組件服務(wù)來劃分粒度,是對于請求數(shù)據(jù)單元Q的執(zhí)行結(jié)果,多個R組合在一起表示一批結(jié)果數(shù)據(jù)包單元,并存放在返回隊列中;步驟S1-1,請求進入,由轉(zhuǎn)換引擎根據(jù)已定義的策略將請求數(shù)據(jù)包分拆成多個獨立數(shù)據(jù)單元(manyQ),并入隊列待分發(fā);步驟S1-2,專門的分發(fā)器對上一步隊列中存儲的數(shù)據(jù)單元批量地dispath給資源組件服務(wù),分發(fā)方式根據(jù)數(shù)據(jù)包體描述方式選擇已定義策略;步驟S2,資源服務(wù)組件接收數(shù)據(jù)單元(Q),并進行服務(wù)調(diào)用,后得到調(diào)用結(jié)果R,并返回;這個過程是異步的,并發(fā)的,可以批量調(diào)用。步驟S3,結(jié)果收集(manyR),并根據(jù)策略歸并,由接收線程應(yīng)答給與主調(diào)線程,主調(diào)線程接收到應(yīng)答(manyR)后被喚醒,并回傳服務(wù)調(diào)用結(jié)果;由上可見,本發(fā)明提供的一種利用自擴展的同步阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法,有以下優(yōu)點。(I)服務(wù)調(diào)用批量處理,并可拆分處理,提供吞吐量。本發(fā)明具有縮短響應(yīng)時間提供吞吐量等特點,在面向可拆分的批量服務(wù)請求時,如數(shù)據(jù)庫操作、文件傳輸,批量短信email發(fā)送等,能異常分批地并行加速處理,保證可靠的限時響應(yīng)。(2)同步調(diào)用轉(zhuǎn)異步調(diào)用,期間對調(diào)用者透明。Web服務(wù)方法大多體現(xiàn)在“接收消息->處理消息->送回消息”這種trivial的同步阻塞式流程處理,當(dāng)遇到長耗時阻塞的同步服務(wù)調(diào)用時,如數(shù)據(jù)庫操作、文件傳輸,批量短信email發(fā)送等,同步服務(wù)調(diào)用通常會被長時間阻塞,而通過本發(fā)明所用的方法,能使同步服務(wù)調(diào)用者平滑地過渡,讓調(diào)用者覺得它在使用的服務(wù)方法是同步阻塞式的一般服務(wù)。(3)限時返回,增加響應(yīng)度。同步服務(wù)調(diào)用通常會被長時間阻塞,這樣的用戶體驗極差,通過采用本發(fā)明的方面,使調(diào)用能限時返回,增加資源服務(wù)對調(diào)用者的響應(yīng)能力。通過以上的方法實施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明是一套軟件解決方案,更多地可借助軟件加必需的通用硬件平臺的方式集成到Web應(yīng)用環(huán)境來實現(xiàn)。本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件服務(wù)的形式體現(xiàn)出來,并作為其中一部分軟件服務(wù)集合到Web應(yīng)用系統(tǒng)應(yīng)用產(chǎn)品中。對于系統(tǒng)實施例而言,由于其基本相應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)和方法,在沒有超過本申請的精神和范圍內(nèi),可以通過其他的方式實現(xiàn)。上面列舉的將本發(fā)明集成到Web系統(tǒng)應(yīng)用中的實施例只是一種示范性的例子,不應(yīng)該作為限制,所給出的具體內(nèi)容不應(yīng)該限制本申請的目的。以上所述僅是本發(fā)明的具體實施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。權(quán)利要求1.一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法,其特征在于將長耗時阻塞的同步服務(wù)任務(wù)劃分為獨立子服務(wù)并在不同的線程上執(zhí)行,提高服務(wù)的吞吐量,在面向可拆分的批量服務(wù)請求時,能異常分批地并行加速處理,保證可靠的限時響應(yīng);本轉(zhuǎn)換方法分為服務(wù)分發(fā)并阻塞等待、資源服務(wù)調(diào)用、應(yīng)答喚醒并歸并返回三個步驟;其中,第一步驟是服務(wù)分發(fā)并阻塞等待,單線程的,當(dāng)有請求進入調(diào)用Web服務(wù)方法,主調(diào)線程將根據(jù)已定義的策略將服務(wù)方法及數(shù)據(jù)包分拆,并dispatch分發(fā)起獨立資源服務(wù)調(diào)用,然后主線程進入限時阻塞等待;第二步驟是資源服務(wù)調(diào)用,多線程并行,子線程執(zhí)行資源服務(wù)調(diào)用,異步并行地進行,并將執(zhí)行結(jié)果封裝為應(yīng)答消息返回;第三步驟是應(yīng)答喚醒并歸并返回,單線程的,專門的接收線程接收應(yīng)答并歸并,喚醒被阻塞的主調(diào)線程并返回歸并的結(jié)果。利用同步對象的等待通知功能,使主調(diào)用線程能夠在分拆并dispatch送出資源服務(wù)請求之后掛起,應(yīng)答到來之際被喚醒;如果調(diào)用過程,某個資源服務(wù)失敗或者超時,異常將會被拋出,并會喚醒被阻塞的主線程并返回超時結(jié)果,以保證限時響應(yīng)。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括:同步到異步的轉(zhuǎn)換機制,用于:實現(xiàn)同步端與異步端的交互轉(zhuǎn)換,使同步服務(wù)調(diào)用對請求者透明;所述同步端,對應(yīng)權(quán)利要求1所述之第一步驟所處端,是指同步服務(wù)調(diào)用主線程,在請求進入時獲取登記等待對象(Waitableobject),再進行服務(wù)分發(fā)后invoke可Waitable對象進行阻塞等待;所述異步端,對應(yīng)權(quán)利要求1所述之第三步驟所處端,是指多線程調(diào)用資源服務(wù)后,并單線程接收調(diào)用結(jié)果,并作wakeup應(yīng)答返回予主調(diào)線程;同步的一端必然是用等待對象池(Waitablepool),將請求分拆入隊列,再由定制的分發(fā)策略dispatch送出資源服務(wù)請求之后掛起,期待應(yīng)答在一定時間內(nèi)返回;異步的一端必然是專門的消息接收單線程,接收資源服務(wù)調(diào)用結(jié)果,并將其歸并封裝為應(yīng)答消息返回;中間的資源服務(wù),采用異步并行的方式,多線程地調(diào)用。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括:自擴展的阻塞算法,一種擴展實現(xiàn)的同步對象的等待通知算法,用于:實現(xiàn)權(quán)利要求2中所述的同步到異步的轉(zhuǎn)換機制,對調(diào)用者線程進行阻塞等待與應(yīng)答喚醒;本發(fā)明實現(xiàn)的上述算法,是基于語言底層的同步原語實現(xiàn)的,在其上封裝而成,抽象出來,就是getOrWaitforNewPacket和postAndNotify兩個接口;對同步對象,采用Map的緩存結(jié)構(gòu)保存所有已分配的正在阻塞等待的Waitable對象,供轉(zhuǎn)換使用。全文摘要本發(fā)明公開了一種利用自擴展的阻塞算法將同步服務(wù)調(diào)用轉(zhuǎn)換為異步并行式調(diào)用的方法,將長耗時阻塞的同步服務(wù)調(diào)用解耦為獨立的多線程非阻塞式異步調(diào)用,提高服務(wù)的吞吐量,并有設(shè)定超時阻塞等待時間,保證可靠響應(yīng)速度。本轉(zhuǎn)換方法分為服務(wù)分發(fā)并阻塞等待、資源服務(wù)調(diào)用、應(yīng)答喚醒并歸并返回三個步驟。采用自擴展的阻塞算法,一種擴展實現(xiàn)的同步對象的等待通知算法,用在同步到異步的轉(zhuǎn)換機制,對調(diào)用者線程進行阻塞等待與應(yīng)答喚醒。本發(fā)明具有縮短響應(yīng)時間提供吞吐量等特點,在面向可拆分的批量服務(wù)請求時,如數(shù)據(jù)庫操作、文件傳輸,批量短信email發(fā)送等,能異常分批地并行加速處理,保證可靠的限時響應(yīng)。文檔編號G06F9/48GK103164273SQ20121033728公開日2013年6月19日申請日期2012年9月6日優(yōu)先權(quán)日2012年9月6日發(fā)明者黃智彬,湯湛成,丁保劍申請人:佳都新太科技股份有限公司