并發(fā)模塊、業(yè)務系統(tǒng)、預裝配方法以及創(chuàng)建方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及高并發(fā)系統(tǒng)與業(yè)務系統(tǒng)間的通信,特別涉及一種并發(fā)模塊、業(yè)務系統(tǒng)、利用該并發(fā)模塊實現(xiàn)的預裝配方法以及利用該業(yè)務系統(tǒng)實現(xiàn)的創(chuàng)建方法。
【背景技術(shù)】
[0002]在高并發(fā)系統(tǒng)中,并發(fā)模塊所生成的業(yè)務結(jié)果通常是無序地放在并發(fā)數(shù)據(jù)結(jié)構(gòu)中,即不同類型的業(yè)務結(jié)果交錯地存放在同一個地方。而業(yè)務系統(tǒng)通常要求在滿足一定條件時,以一定的順序處理高并發(fā)系統(tǒng)生成的業(yè)務結(jié)果。一般地,業(yè)務系統(tǒng)會直接到并發(fā)模塊中去提取業(yè)務結(jié)果,再按一定的業(yè)務邏輯裝配起來。
[0003]這種方式存在兩個問題:業(yè)務系統(tǒng)的代碼需要與并發(fā)性打交道,容易引入錯誤;其次,過多的線程參與競爭并發(fā)數(shù)據(jù)結(jié)構(gòu),導致性能變差,不利于系統(tǒng)調(diào)優(yōu)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中高性能的業(yè)務系統(tǒng)直接處理高并發(fā)性操作,從而導致業(yè)務邏輯與高并發(fā)性邏輯互相影響、互相耦合的缺陷,提供一種并發(fā)模塊、業(yè)務系統(tǒng)、預裝配方法以及創(chuàng)建方法,解除業(yè)務系統(tǒng)與并發(fā)代碼之間的高耦合性,將高并發(fā)性代碼從業(yè)務系統(tǒng)中隔離出來,使得業(yè)務系統(tǒng)與并發(fā)模塊之間以松散形式耦合,這樣既有利于業(yè)務系統(tǒng)的未來擴展,也方便了對并發(fā)模塊的調(diào)優(yōu)。
[0005]本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:
[0006]本發(fā)明提供一種并發(fā)模塊,其包括一處理單元和一并發(fā)隊列,其特點在于,該并發(fā)模塊還包括若干預裝配單元、一第一判斷單元和一第二判斷單元,每一預裝配單元均對應有唯一的識別信息和排序函數(shù),且不同的預裝配單元的識別信息互不相同,每一預裝配單元用于預存儲一唯一類型的業(yè)務結(jié)果且不同的預裝配單元預存儲的業(yè)務結(jié)果互不相同;
[0007]該處理單元用于從一數(shù)據(jù)源獲取數(shù)據(jù)進行加工處理,并將生成的業(yè)務結(jié)果傳輸至該并發(fā)隊列;
[0008]該第一判斷單元用于判斷該業(yè)務結(jié)果的類型,并將該業(yè)務結(jié)果從該并發(fā)隊列轉(zhuǎn)移至預存儲該類型的業(yè)務結(jié)果的預裝配單元;
[0009]該第二判斷單元用于判斷該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元中的業(yè)務結(jié)果是否已經(jīng)全部生成,若是則調(diào)用該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元對應的排序函數(shù),以使得該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元中的所有業(yè)務結(jié)果按照該對應的排序函數(shù)進行排序。
[0010]在本方案中,并發(fā)模塊在內(nèi)部操作并發(fā)性,它不與實際的業(yè)務邏輯打交道,而只是把并發(fā)處理后得到的無序結(jié)果按業(yè)務系統(tǒng)的要求進行排序、分類后返回給業(yè)務系統(tǒng),其內(nèi)部的并發(fā)性處理沿用普通的多線程和并發(fā)程序設(shè)計技術(shù)即可。
[0011]本發(fā)明還提供一種業(yè)務系統(tǒng),其特點在于,該業(yè)務系統(tǒng)包括一設(shè)置單元、一創(chuàng)建單元和一調(diào)用單元,該設(shè)置單元用于將業(yè)務結(jié)果劃分為若干類型,并每種類型設(shè)有對應唯一的識別信息和排序函數(shù),且不同的類型的識別信息互不相同;
[0012]該創(chuàng)建單元用于將所有類型以及每一類型對應的識別信息和排序函數(shù)的集合作為構(gòu)造函數(shù)的參數(shù)創(chuàng)建一并發(fā)模塊的實例,以使得該并發(fā)模塊根據(jù)該些類型創(chuàng)建相應的預裝配單元;
[0013]該調(diào)用單元用于調(diào)用該并發(fā)模塊的輸出接口以等待業(yè)務結(jié)果的返回。
[0014]本方案引入預裝配的概念,由該業(yè)務系統(tǒng)中的創(chuàng)建單元將相關(guān)規(guī)則注入至該并發(fā)模塊中,該并發(fā)模塊根據(jù)規(guī)則動態(tài)維護相關(guān)的預裝配單元,將并發(fā)操作封裝在并發(fā)模塊內(nèi)部。該業(yè)務系統(tǒng)以傳統(tǒng)的函數(shù)調(diào)用的方式獲取有序的、滿足業(yè)務需求的業(yè)務結(jié)果。這樣一來,該業(yè)務系統(tǒng)的開發(fā)者可按照熟悉的函數(shù)調(diào)用的方式來獲取并發(fā)處理的業(yè)務結(jié)果,而并發(fā)模塊的開發(fā)者也不會過多地受業(yè)務邏輯的約束。
[0015]而且,該業(yè)務系統(tǒng)只需將業(yè)務結(jié)果的類型、順序等的期待形式抽象化后注入到該并發(fā)模塊中,而后調(diào)用該并發(fā)模塊提供的接口函數(shù),阻塞等待直至業(yè)務結(jié)果返回,該業(yè)務系統(tǒng)并不關(guān)心具體的并發(fā)處理過程。
[0016]本發(fā)明還提供一種預裝配方法,其特點在于,其利用上述的并發(fā)模塊實現(xiàn),該預裝配方法包括以下步驟:
[0017]S1、從該數(shù)據(jù)源獲取數(shù)據(jù)進行加工處理,并將生成的業(yè)務結(jié)果傳輸至該并發(fā)隊列;
[0018]S2、判斷該業(yè)務結(jié)果的類型,并將該業(yè)務結(jié)果從該并發(fā)隊列轉(zhuǎn)移至預存儲該類型的業(yè)務結(jié)果的預裝配單元;
[0019]S3、判斷該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元中的業(yè)務結(jié)果是否已經(jīng)全部生成,若是則調(diào)用該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元對應的排序函數(shù),以使得該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元中的所有業(yè)務結(jié)果按照該對應的排序函數(shù)進行排序,若否則重復步驟s3。
[0020]本發(fā)明還提供一種創(chuàng)建方法,其特點在于,其利用上述的業(yè)務系統(tǒng)實現(xiàn),該創(chuàng)建方法包括以下步驟:
[0021]S1、將業(yè)務結(jié)果劃分為若干類型,并每種類型設(shè)有對應唯一的識別信息和排序函數(shù),且不同的類型的識別信息互不相同;
[0022]S2、將所有類型以及每一類型對應的識別信息和排序函數(shù)的集合作為構(gòu)造函數(shù)的參數(shù)創(chuàng)建該并發(fā)模塊的實例,以使得該并發(fā)模塊根據(jù)該些類型創(chuàng)建相應的預裝配單元。
[0023]在符合本領(lǐng)域常識的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實例。
[0024]本發(fā)明的積極進步效果在于:
[0025]本發(fā)明提供一種并發(fā)模塊、業(yè)務系統(tǒng)、預裝配方法以及創(chuàng)建方法,解除了業(yè)務系統(tǒng)與并發(fā)代碼之間的高耦合性,將高并發(fā)性代碼從業(yè)務系統(tǒng)中隔離出來,使得業(yè)務系統(tǒng)與并發(fā)模塊之間以松散形式耦合,這樣既有利于業(yè)務系統(tǒng)具有更好的擴展性和可維護性,也方便了對并發(fā)模塊的調(diào)優(yōu),而不必過多考慮業(yè)務邏輯方面的需求。
【附圖說明】
[0026]圖1為本發(fā)明較佳實施例的業(yè)務系統(tǒng)的結(jié)構(gòu)框圖。
[0027]圖2為本發(fā)明較佳實施例的并發(fā)模塊的結(jié)構(gòu)框圖。
[0028]圖3為本發(fā)明較佳實施例的預裝配方法的流程圖。
[0029]圖4為本發(fā)明較佳實施例的創(chuàng)建方法的流程圖。
【具體實施方式】
[0030]下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
[0031 ] 如圖1所示,本實施例提供一種業(yè)務系統(tǒng),其包括一設(shè)置單元11、一創(chuàng)建單元12和一調(diào)用單元13,該設(shè)置單元11用于將業(yè)務結(jié)果劃分為若干類型,并每種類型設(shè)有對應唯一的識別信息和排序函數(shù),且不同的類型的識別信息互不相同。
[0032]該創(chuàng)建單元12用于將所有類型以及每一類型對應的識別信息和排序函數(shù)的集合作為構(gòu)造函數(shù)的參數(shù)創(chuàng)建一并發(fā)模塊的實例,以使得該并發(fā)模塊根據(jù)該些類型創(chuàng)建相應的預裝配單元,這樣該并發(fā)模塊中就存在若干預裝配單元。
[0033]該調(diào)用單元13用于調(diào)用該并發(fā)模塊的輸出接口以等待業(yè)務結(jié)果的返回。
[0034]如圖2所示,本實施例還提供一種并發(fā)模塊,其包括一處理單元21和一并發(fā)隊列22、一第一判斷單元23、一第二判斷單元24和若干預裝配單元25,每一預裝配單元25均對應有唯一的識別信息和排序函數(shù),且不同的預裝配單元25的識別信息互不相同,每一預裝配單元25用于預存儲一唯一類型的業(yè)務結(jié)果且不同的預裝配單元25預存儲的業(yè)務結(jié)果互不相同。
[0035]該處理單元21用于從一數(shù)據(jù)源獲取數(shù)據(jù)進行加工處理,并將生成的業(yè)務結(jié)果傳輸至該并發(fā)隊列22。
[0036]該第一判斷單元23用于判斷該業(yè)務結(jié)果的類型,并將該業(yè)務結(jié)果從該并發(fā)隊列22轉(zhuǎn)移至預存儲該類型的業(yè)務結(jié)果的預裝配單元25 ;
[0037]該第二判斷單元24用于判斷該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元中的業(yè)務結(jié)果是否已經(jīng)全部生成,若是則調(diào)用該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元25對應的排序函數(shù),以使得該業(yè)務結(jié)果轉(zhuǎn)移至的預裝配單元中的所有業(yè)務結(jié)果按照該對應的排序函數(shù)進行排序。
[0038]而且,本實施例還提供一種預裝配方法和一種創(chuàng)建方法,其中該預裝配方法利用上述的并發(fā)模塊實現(xiàn),該創(chuàng)建方法利用上述的業(yè)務系統(tǒng)實現(xiàn)。
[0039]如圖3所示,該預裝配方法包括以下步驟:
[0040]步驟101、從該數(shù)據(jù)源獲取數(shù)據(jù)進行加工處理,并將生