報文流量控制方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種報文流量控制方法及系統(tǒng),該方法包括:建立通訊連接池、報文緩沖池和處理線程池;實時檢測通訊連接池、報文緩沖池和處理線程池的當(dāng)前使用情況;根據(jù)通訊連接池的當(dāng)前使用情況調(diào)整通訊連接池的大小,根據(jù)報文緩沖池的當(dāng)前使用情況調(diào)整報文緩沖池的大小以及根據(jù)處理線程池的當(dāng)前使用情況調(diào)整處理線程池的大小;使用通訊連接池中的通訊連接收發(fā)報文,使用報文緩沖池緩存報文以及使用處理線程池中的線程處理報文。建立通訊連接池、報文緩沖池和處理線程池,并分別對各個池的當(dāng)前使用情況進(jìn)行實時監(jiān)控,自適應(yīng)地調(diào)整各個池的大小,實現(xiàn)系統(tǒng)對數(shù)據(jù)通訊流量的自適應(yīng)控制,避免通訊堵塞等問題。
【專利說明】報文流量控制方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)通訊【技術(shù)領(lǐng)域】,尤其涉及一種報文流量控制方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著信息技術(shù)的快速發(fā)展,許多企業(yè)都需要與外單位進(jìn)行網(wǎng)絡(luò)連接和數(shù)據(jù)通訊。例如,商業(yè)銀行的跨行支付等需要與其它第三方系統(tǒng)進(jìn)行數(shù)據(jù)報文的交互。企業(yè)在與外部系統(tǒng)進(jìn)行數(shù)據(jù)報文通訊時,通訊方式多種多樣,常見的有消息隊列(Message Queue,簡稱MQ)、傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(Transmiss1n Control Protocol/InternetProtocol,簡稱TCP/IP (Socket))、超文本傳輸協(xié)議/安全超文本傳輸協(xié)議(HypertextTransfer Protocol/Hypertext Transfer Protocol Secure,簡稱HTTP/HTTPS)、文件傳輸協(xié)議 / 安全文件傳輸協(xié)議(File Transfer Protocol/Secure File Transfer Protocol,簡稱FTP/SFTP)等,且根據(jù)業(yè)務(wù)的時效性要求,對報文數(shù)據(jù)的處理需要實時聯(lián)機(jī)在業(yè)務(wù)系統(tǒng)進(jìn)行處理,通過通訊處理進(jìn)程(或線程)與外系統(tǒng)通訊,負(fù)責(zé)報文收發(fā)。
[0003]通過通訊處理進(jìn)程從外部系統(tǒng)接收數(shù)據(jù)報文,然后由系統(tǒng)處理進(jìn)程進(jìn)行數(shù)據(jù)加工處理。在數(shù)據(jù)加工處理完成后,通過通訊處理進(jìn)程將返回的數(shù)據(jù)報文發(fā)送到外部系統(tǒng)。在數(shù)據(jù)處理量不大的情況下,上述數(shù)據(jù)處理過程能夠很好地完成內(nèi)部系統(tǒng)與外部系統(tǒng)間的數(shù)據(jù)報文交互,且通訊處理進(jìn)程工作順利。但在系統(tǒng)數(shù)據(jù)處理量比較大時,例如,交易系統(tǒng)處理交易信息,特別是交易瞬時并發(fā)高峰時,由于通訊處理進(jìn)程數(shù)量不能與當(dāng)前要處理的報文數(shù)量相適應(yīng),容易出現(xiàn)通訊處理進(jìn)程不能及時獲取需要接收或發(fā)送的數(shù)據(jù)報文而導(dǎo)致報文堵報或丟失,也可能出現(xiàn)通訊處理進(jìn)程不能及時分配或數(shù)據(jù)報文不能及時處理而導(dǎo)致的系統(tǒng)排隊。長時間的堵報或系統(tǒng)排隊,容易導(dǎo)致系統(tǒng)不能對外服務(wù)甚至宕機(jī)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供了一種報文流量控制方法及系統(tǒng),以至少解決現(xiàn)有技術(shù)中系統(tǒng)間進(jìn)行報文交互時,報文收發(fā)高峰導(dǎo)致不可預(yù)知性系統(tǒng)堵報、處理緩慢甚至系統(tǒng)宕機(jī)的問題。
[0005]根據(jù)本發(fā)明的一個方面,提供了一種報文流量控制方法,包括:建立通訊連接池、報文緩沖池和處理線程池,其中,所述通訊連接池存儲與外部系統(tǒng)進(jìn)行報文交互的通訊連接,所述報文緩沖池存儲利用所述通訊連接收發(fā)的報文,所述處理線程池存儲用于處理所述報文的線程;實時檢測所述通訊連接池、所述報文緩沖池和所述處理線程池的當(dāng)前使用情況;根據(jù)所述通訊連接池的當(dāng)前使用情況調(diào)整所述通訊連接池的大小,根據(jù)所述報文緩沖池的當(dāng)前使用情況調(diào)整所述報文緩沖池的大小以及根據(jù)所述處理線程池的當(dāng)前使用情況調(diào)整所述處理線程池的大小;使用所述通訊連接池中的通訊連接收發(fā)所述報文,使用所述報文緩沖池緩存所述報文以及使用所述處理線程池中的線程處理所述報文。
[0006]在一個實施例中,建立通訊連接池包括:在系統(tǒng)初始化時,讀取所述通訊連接池的配置參數(shù),其中,所述通訊連接池的配置參數(shù)包括:連接類型、所述通訊連接池的初始最大值和所述通訊連接池的初始最小值,所述連接類型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP ;根據(jù)所述通訊連接池的配置參數(shù)建立對應(yīng)于不同連接類型的通訊連接池,其中,所述通訊連接池的深度為所述通訊連接池的初始最小值。
[0007]在一個實施例中,建立報文緩沖池包括:在系統(tǒng)初始化時,讀取所述報文緩沖池的配置參數(shù),其中,所述報文緩沖池的配置參數(shù)包括:所述報文緩沖池的初始最大值、所述報文緩沖池的初始最小值和所述報文緩沖池的清理時間;根據(jù)所述報文緩沖池的配置參數(shù)建立緩沖池隊列,構(gòu)成所述報文緩沖池,其中,所述緩沖池隊列的深度為所述報文緩沖池的初
始最小值。
[0008]在一個實施例中,建立處理線程池包括:在系統(tǒng)初始化時,讀取所述處理線程池的配置參數(shù),其中,所述處理線程池的配置參數(shù)包括:所述處理線程池的初始最大值、所述處理線程池的初始最小值和所述處理線程池的清理時間;根據(jù)所述處理線程池的配置參數(shù)建立線程池隊列,構(gòu)成所述處理線程池,其中,所述線程池隊列的深度為所述處理線程池的初
始最小值。
[0009]在一個實施例中,實時檢測所述通訊連接池的當(dāng)前使用情況,并根據(jù)所述通訊連接池的當(dāng)前使用情況調(diào)整所述通訊連接池的大小包括:獲取所述通訊連接池的調(diào)節(jié)參數(shù)和所述通訊連接池中通訊連接的當(dāng)前使用情況,其中,所述通訊連接池的調(diào)節(jié)參數(shù)包括:連接類型、所述通訊連接池調(diào)節(jié)的第一上限閾值和第一下限閾值,所述通訊連接的當(dāng)前使用情況包括:所述通訊連接池的深度、已使用的通訊連接數(shù)和未使用的通訊連接數(shù);比較所述已使用的通訊連接數(shù)以及所述第一上限閾值和所述第一下限閾值;如果所述已使用的通訊連接數(shù)大于等于所述第一上限閾值,則對所述通訊連接池進(jìn)行擴(kuò)充;如果所述已使用的通訊連接數(shù)小于所述第一下限閾值,則對所述通訊連接池中未使用的通訊連接進(jìn)行回收,直到所述通訊連接池中的通訊連接數(shù)等于所述第一下限閾值;如果所述已使用的通訊連接數(shù)大于等于所述第一下限閾值且小于所述第一上限閾值,則直接從所述通訊連接池中分配通訊連接進(jìn)行報文的收發(fā)。
[0010]在一個實施例中,實時檢測所述報文緩沖池的當(dāng)前使用情況,并根據(jù)所述報文緩沖池的當(dāng)前使用情況調(diào)整所述報文緩沖池的大小包括:獲取所述報文緩沖池的調(diào)節(jié)參數(shù)和所述報文緩沖池中緩沖池隊列的當(dāng)前使用情況,其中,所述報文緩沖池的調(diào)節(jié)參數(shù)包括:所述報文緩沖池調(diào)節(jié)的第二上限閾值和第二下限閾值,所述緩沖池隊列的當(dāng)前使用情況包括:所述緩沖池隊列的深度、已使用的隊列空間數(shù)和未使用的隊列空間數(shù);比較所述已使用的隊列空間數(shù)以及所述第二上限閾值和所述第二下限閾值;如果所述已使用的隊列空間數(shù)大于等于所述第二上限閾值,則對所述報文緩沖池進(jìn)行擴(kuò)充;如果所述已使用的隊列空間數(shù)小于所述第二下限閾值,則對所述報文緩沖池中未使用的隊列空間進(jìn)行回收,直到所述報文緩沖池中的隊列空間數(shù)等于所述第二下限閾值;如果所述已使用的隊列空間數(shù)大于等于所述第二下限閾值且小于所述第二上限閾值,則直接從所述報文緩沖池中分配隊列空間進(jìn)行報文的緩存。
[0011]在一個實施例中,實時檢測所述處理線程池的當(dāng)前使用情況,并根據(jù)所述處理線程池的當(dāng)前使用情況調(diào)整所述處理線程池的大小包括:獲取所述處理線程池的調(diào)節(jié)參數(shù)和所述處理線程池中線程池隊列的當(dāng)前使用情況,其中,所述處理線程池的調(diào)節(jié)參數(shù)包括:所述處理線程池調(diào)節(jié)的第三上限閾值和第三下限閾值,所述線程池隊列的當(dāng)前使用情況包括:所述線程池隊列的深度、已使用的線程數(shù)和未使用的線程數(shù);比較所述已使用的線程數(shù)以及所述第三上限閾值和所述第三下限閾值;如果所述已使用的線程數(shù)大于等于所述第三上限閾值,則對所述處理線程池進(jìn)行擴(kuò)充;如果所述已使用的線程數(shù)小于所述第三下限閾值,則對所述處理線程池中未使用的線程進(jìn)行回收,直到所述處理線程池中的線程數(shù)等于所述第三下限閾值;如果所述已使用的線程數(shù)大于等于所述第三下限閾值且小于所述第三上限閾值,則直接從所述處理線程池中分配線程進(jìn)行報文的處理。
[0012]在一個實施例中,在調(diào)整所述通訊連接池的大小,調(diào)整所述報文緩沖池的大小以及調(diào)整所述處理線程池的大小之后,所述方法還包括:更新所述通訊連接的狀態(tài)、所述緩沖池隊列中隊列空間的狀態(tài)和所述線程池隊列中線程的狀態(tài),以及更新所述通訊連接池的計數(shù)器、所述報文緩沖池的計數(shù)器和所述處理線程池的計數(shù)器。
[0013]在一個實施例中,使用所述通訊連接池中的通訊連接收發(fā)所述報文,使用所述報文緩沖池緩存所述報文以及使用所述處理線程池中的線程處理所述報文包括:接收到所述外部系統(tǒng)的連接后,判斷所述通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執(zhí)行與所述外部系統(tǒng)之間的報文收發(fā);如果不存在可使用的通訊連接,則建立新的通訊連接;判斷所述報文緩沖池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配所述可使用的隊列空間存儲所述通訊連接收發(fā)的報文;如果不存在可使用的隊列空間,則對所述報文緩沖池中的緩沖池隊列的深度進(jìn)行擴(kuò)充或建立新的緩沖池隊列;在所述報文緩沖池向所述處理線程池推送報文之后,判斷所述處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配所述可使用的線程處理所述報文緩沖池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
[0014]在一個實施例中,在使用所述通訊連接池中的通訊連接收發(fā)所述報文之后,將使用的通訊連接歸還到所述通訊連接池中;在使用所述報文緩沖池緩存所述報文之后,將所述報文推送給所述處理線程池進(jìn)行報文處理,刪除所述緩沖池隊列中已被推送的報文;在使用所述處理線程池中的線程處理所述報文之后,將使用的線程歸還到所述處理線程池中,釋放所述線程占用的資源。
[0015]根據(jù)本發(fā)明的另一個方面,提供了一種報文流量控制系統(tǒng),包括:建立單元,用于建立通訊連接池、報文緩沖池和處理線程池,其中,所述通訊連接池用于存儲與外部系統(tǒng)進(jìn)行報文交互的通訊連接;所述報文緩沖池用于存儲所述通訊連接收發(fā)的報文;所述處理線程池用于存儲處理所述報文的線程;檢測單元,用于實時檢測所述通訊連接池、所述報文緩沖池和所述處理線程池的當(dāng)前使用情況;調(diào)整單元,用于根據(jù)所述通訊連接池的當(dāng)前使用情況調(diào)整所述通訊連接池的大小,根據(jù)所述報文緩沖池的當(dāng)前使用情況調(diào)整所述報文緩沖池的大小以及根據(jù)所述處理線程池的當(dāng)前使用情況調(diào)整所述處理線程池的大?。豢刂茊卧?,用于使用所述通訊連接池中的通訊連接收發(fā)所述報文,使用所述報文緩沖池緩存所述報文以及使用所述處理線程池中的線程處理所述報文。
[0016]在一個實施例中,所述建立單元包括:第一讀取模塊,用于在系統(tǒng)初始化時讀取所述通訊連接池的配置參數(shù),其中,所述通訊連接池的配置參數(shù)包括:連接類型、所述通訊連接池的初始最大值和所述通訊連接池的初始最小值,所述連接類型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP ;第一建立模塊,用于根據(jù)所述通訊連接池的配置參數(shù)建立對應(yīng)于不同連接類型的通訊連接池,其中,所述通訊連接池的深度為所述通訊連接池的初始最小值。[0017]在一個實施例中,所述建立單元包括:第二讀取模塊,用于在系統(tǒng)初始化時讀取所述報文緩沖池的配置參數(shù),其中,所述報文緩沖池的配置參數(shù)包括:所述報文緩沖池的初始最大值、所述報文緩沖池的初始最小值和所述報文緩沖池的清理時間;第二建立模塊,用于根據(jù)所述報文緩沖池的配置參數(shù)建立緩沖池隊列,構(gòu)成所述報文緩沖池,其中,所述緩沖池隊列的深度為所述報文緩沖池的初始最小值。
[0018]在一個實施例中,所述建立單元包括:第三讀取模塊,用于在系統(tǒng)初始化時讀取所述處理線程池的配置參數(shù),其中,所述處理線程池的配置參數(shù)包括:所述處理線程池的初始最大值、所述處理線程池的初始最小值和所述處理線程池的清理時間;第三建立模塊,用于根據(jù)所述處理線程池的配置參數(shù)建立線程池隊列,構(gòu)成所述處理線程池,其中,所述線程池隊列的深度為所述處理線程池的初始最小值。
[0019]在一個實施例中,所述檢測單元包括:第一獲取模塊,用于獲取所述通訊連接池的調(diào)節(jié)參數(shù)和所述通訊連接池中通訊連接的當(dāng)前使用情況,其中,所述通訊連接池的調(diào)節(jié)參數(shù)包括:連接類型、所述通訊連接池調(diào)節(jié)的第一上限閾值和第一下限閾值,所述通訊連接的當(dāng)前使用情況包括:所述通訊連接池的深度、已使用的通訊連接數(shù)和未使用的通訊連接數(shù);第一比較模塊,用于比較所述已使用的通訊連接數(shù)以及所述第一上限閾值和所述第一下限閾值;所述調(diào)整單元包括:第一調(diào)整模塊,用于在所述已使用的通訊連接數(shù)大于等于所述第一上限閾值的情況下,對所述通訊連接池進(jìn)行擴(kuò)充;在所述已使用的通訊連接數(shù)小于所述第一下限閾值的情況下,對所述通訊連接池中未使用的通訊連接進(jìn)行回收,直到所述通訊連接池中的通訊連接數(shù)等于所述第一下限閾值;第一分配模塊,用于在所述已使用的通訊連接數(shù)大于等于所述第一下限閾值且小于所述第一上限閾值的情況下,直接從所述通訊連接池中分配通訊連接進(jìn)行報文的收發(fā)。
[0020]在一個實施例中,所述檢測單元包括:第二獲取模塊,用于獲取所述報文緩沖池的調(diào)節(jié)參數(shù)和所述報文緩沖池中緩沖池隊列的當(dāng)前使用情況,其中,所述報文緩沖池的調(diào)節(jié)參數(shù)包括:所述報文緩沖池調(diào)節(jié)的第二上限閾值和第二下限閾值,所述緩沖池隊列的當(dāng)前使用情況包括:所述緩沖池隊列的深度、已使用的隊列空間數(shù)和未使用的隊列空間數(shù);第二比較模塊,用于比較所述已使用的隊列空間數(shù)以及所述第二上限閾值和所述第二下限閾值;所述調(diào)整單元包括:第二調(diào)整模塊,用于在所述已使用的隊列空間數(shù)大于等于所述第二上限閾值的情況下,對所述報文緩沖池進(jìn)行擴(kuò)充;在所述已使用的隊列空間數(shù)小于所述第二下限閾值的情況下,對所述報文緩沖池中未使用的隊列空間進(jìn)行回收,直到所述報文緩沖池中的隊列空間數(shù)等于所述第二下限閾值;第二分配模塊,用于在所述已使用的隊列空間數(shù)大于等于所述第二下限閾值且小于所述第二上限閾值的情況下,直接從所述報文緩沖池中分配隊列空間進(jìn)行報文的緩存。
[0021]在一個實施例中,所述檢測單元包括:第三獲取模塊,用于獲取所述處理線程池的調(diào)節(jié)參數(shù)和所述處理線程池中線程池隊列的當(dāng)前使用情況,其中,所述處理線程池的調(diào)節(jié)參數(shù)包括:所述處理線程池調(diào)節(jié)的第三上限閾值和第三下限閾值,所述線程池隊列的當(dāng)前使用情況包括:所述線程池隊列的深度、已使用的線程數(shù)和未使用的線程數(shù);第三比較模塊,用于比較所述已使用的線程數(shù)以及所述第三上限閾值和所述第三下限閾值;所述調(diào)整單元包括:第三調(diào)整模塊,用于在所述已使用的線程數(shù)大于等于所述第三上限閾值的情況下,對所述處理線程池進(jìn)行擴(kuò)充;在所述已使用的線程數(shù)小于所述第三下限閾值的情況下,對所述處理線程池中未使用的線程進(jìn)行回收,直到所述處理線程池中的線程數(shù)等于所述第三下限閾值;第三分配模塊,用于在所述已使用的線程數(shù)大于等于所述第三下限閾值且小于所述第三上限閾值的情況下,直接從所述處理線程池中分配線程進(jìn)行報文的處理。
[0022]在一個實施例中,所述調(diào)整單元還包括:更新模塊,用于更新所述通訊連接的狀態(tài)、所述緩沖池隊列中隊列空間的狀態(tài)和所述線程池隊列中線程的狀態(tài),以及更新所述通訊連接池的計數(shù)器、所述報文緩沖池的計數(shù)器和所述處理線程池的計數(shù)器。
[0023]在一個實施例中,所述控制單元包括:第一控制模塊,用于接收到所述外部系統(tǒng)的連接后,判斷所述通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執(zhí)行與所述外部系統(tǒng)之間的報文收發(fā);如果不存在可使用的通訊連接,則建立新的通訊連接;第二控制模塊,用于判斷所述報文緩沖池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配所述可使用的隊列空間存儲所述通訊連接收發(fā)的報文;如果不存在可使用的隊列空間,則對所述報文緩沖池中的緩沖池隊列的深度進(jìn)行擴(kuò)充或建立新的緩沖池隊列;第三控制模塊,用于在所述報文緩沖池向所述處理線程池推送報文之后,判斷所述處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配所述可使用的線程處理所述報文緩沖池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
[0024]在一個實施例中,所述控制單元還包括:通訊連接歸還模塊,用于在使用所述通訊連接池中的通訊連接收發(fā)所述報文之后,將使用的通訊連接歸還到所述通訊連接池中;報文緩沖池清理模塊,用于在使用所述報文緩沖池緩存所述報文,并將所述報文推送給所述處理線程池進(jìn)行報文處理之后,刪除所述緩沖池隊列中已被推送的報文;線程歸還模塊,用于在使用所述處理線程池中的線程處理所述報文之后,將使用的線程歸還到所述處理線程池中,釋放所述線程占用的資源。
[0025]通過本發(fā)明的報文流量控制方法及系統(tǒng),建立通訊連接池、報文緩沖池和處理線程池,并分別對通訊連接池、報文緩沖池和處理線程池的當(dāng)前使用情況進(jìn)行實時監(jiān)控,可以判斷出系統(tǒng)間報文流量的增減,根據(jù)報文流量自適應(yīng)地調(diào)整通訊連接池、報文緩沖池和處理線程池的大小,通過動態(tài)調(diào)整上述參數(shù),實現(xiàn)系統(tǒng)對數(shù)據(jù)通訊流量的自適應(yīng)控制,避免系統(tǒng)間報文收發(fā)高峰時的通訊堵塞、丟包、處理緩慢甚至系統(tǒng)宕機(jī)等問題,保證了系統(tǒng)數(shù)據(jù)通訊的安全、穩(wěn)定。
【專利附圖】
【附圖說明】
[0026]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限定。在附圖中:
[0027]圖1是本發(fā)明一實施例的報文流量控制方法的流程圖;
[0028]圖2是本發(fā)明一實施例的實時檢測與調(diào)整通訊連接池的詳細(xì)步驟流程圖;
[0029]圖3是本發(fā)明一實施例的實時檢測與調(diào)整報文緩沖池的詳細(xì)步驟流程圖;
[0030]圖4是本發(fā)明一實施例的實時檢測與調(diào)整處理線程池的詳細(xì)步驟流程圖;
[0031]圖5是本發(fā)明一實施例的報文流量控制系統(tǒng)的結(jié)構(gòu)框圖;
[0032]圖6是本發(fā)明一實施例的建立單元的具體結(jié)構(gòu)框圖;
[0033]圖7是本發(fā)明另一實施例的報文流量控制系統(tǒng)的結(jié)構(gòu)框圖;[0034]圖8是本發(fā)明又一實施例的報文流量控制系統(tǒng)的結(jié)構(gòu)框圖;
[0035]圖9是本發(fā)明優(yōu)選實施例一的報文流量控制系統(tǒng)的結(jié)構(gòu)框圖;
[0036]圖10是本發(fā)明優(yōu)選實施例一的調(diào)節(jié)單元的具體結(jié)構(gòu)框圖;
[0037]圖11是本發(fā)明優(yōu)選實施例二的通訊連接池單元的具體結(jié)構(gòu)框圖;
[0038]圖12是本發(fā)明優(yōu)選實施例二的報文緩沖池單元的具體結(jié)構(gòu)框圖;
[0039]圖13是本發(fā)明優(yōu)選實施例二的處理線程池單元的具體結(jié)構(gòu)框圖。
【具體實施方式】
[0040]下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明的保護(hù)范圍。
[0041]本發(fā)明實施例提供了一種報文流量控制方法,圖1是本發(fā)明一實施例的報文流量控制方法的流程圖,如圖1所示,該方法包括如下步驟:
[0042]步驟S101,建立通訊連接池、報文緩沖池和處理線程池,其中,通訊連接池存儲與外部系統(tǒng)進(jìn)行報文交互的通訊連接,報文緩沖池存儲利用通訊連接收發(fā)的報文,處理線程池存儲用于處理報文的線程;
[0043]步驟S102,實時檢測通訊連接池、報文緩沖池和處理線程池的當(dāng)前使用情況;
[0044]步驟S103,根據(jù)通訊連接池的當(dāng)前使用情況調(diào)整通訊連接池的大小,根據(jù)報文緩沖池的當(dāng)前使用情況調(diào)整報文緩沖池的大小以及根據(jù)處理線程池的當(dāng)前使用情況調(diào)整處理線程池的大?。?br>
[0045]步驟S104,使用通訊連接池中的通訊連接收發(fā)報文,使用報文緩沖池緩存報文以及使用處理線程池中的線程處理報文。
[0046]在本實施例中,無論系統(tǒng)是否正在收發(fā)報文,系統(tǒng)一直在執(zhí)行步驟S102對各個池當(dāng)前使用情況的實時檢測以及步驟S103根據(jù)當(dāng)前使用情況調(diào)整池的大小,以實現(xiàn)實時檢測與動態(tài)調(diào)整。具體的報文的數(shù)據(jù)加工處理過程與現(xiàn)有技術(shù)相同,此處不再贅述。
[0047]通過上述實施例,建立通訊連接池、報文緩沖池和處理線程池,并分別對通訊連接池、報文緩沖池和處理線程池的當(dāng)前使用情況進(jìn)行實時監(jiān)控,可以判斷出系統(tǒng)間報文流量的增減,根據(jù)報文流量自適應(yīng)地調(diào)整通訊連接池、報文緩沖池和處理線程池的大小,通過動態(tài)調(diào)整上述參數(shù),實現(xiàn)系統(tǒng)對數(shù)據(jù)通訊流量的自適應(yīng)控制,避免系統(tǒng)間報文收發(fā)高峰時的通訊堵塞、丟包、處理緩慢甚至系統(tǒng)宕機(jī)等問題,保證了系統(tǒng)數(shù)據(jù)通訊的安全、穩(wěn)定。
[0048]以下對步驟SlOl中建立通訊連接池、報文緩沖池和處理線程池進(jìn)行說明。各個池的配置參數(shù)可以是根據(jù)需求預(yù)先設(shè)置的。
[0049]在一個實施例中,可以通過以下方法建立通訊連接池:在系統(tǒng)初始化時,讀取通訊連接池的配置參數(shù),其中,通訊連接池的配置參數(shù)包括:連接類型、通訊連接池的初始最大值和通訊連接池的初始最小值,連接類型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP ;根據(jù)通訊連接池的配置參數(shù)建立對應(yīng)于不同連接類型的通訊連接池,其中,通訊連接池的深度為通訊連接池的初始最小值。本實施例中,通訊連接池的初始最小值指的是初始建立的通訊連接池中存儲的通訊連接的個數(shù),也可稱為通訊連接池的初始深度;通訊連接池的初始最大值指的是通訊連接池可以存儲的最大通訊連接個數(shù),也可稱為通訊連接池的最大深度。對通訊連接池進(jìn)行擴(kuò)充時,不會超過通訊連接池的初始最大值。需要說明的是,可以分別建立收報通訊連接池和發(fā)報通訊連接池。
[0050]在一個實施例中,可以通過以下方法建立報文緩沖池:在系統(tǒng)初始化時,讀取報文緩沖池的配置參數(shù),其中,報文緩沖池的配置參數(shù)包括:報文緩沖池的初始最大值、報文緩沖池的初始最小值和報文緩沖池的清理時間;根據(jù)報文緩沖池的配置參數(shù)建立緩沖池隊列,構(gòu)成報文緩沖池,其中,緩沖池隊列的深度為報文緩沖池的初始最小值。本實施例中,報文緩沖池的初始最小值指的是初始建立的報文緩沖池中的緩沖池隊列的深度,即緩沖池隊列中存儲空間(以下稱為隊列空間)的個數(shù);報文緩沖池的初始最大值指的是報文緩沖池中的緩沖池隊列的最大深度,即緩沖池隊列所能包括的最大隊列空間數(shù)。對報文緩沖池進(jìn)行擴(kuò)充時,不會超過報文緩沖池的初始最大值。具體的,可以建立一個或多個緩沖池隊列構(gòu)成報文緩沖池,在建立多個緩沖池隊列的情況下,報文緩沖池的初始值可以包括:隊列的最少個數(shù)和最多個數(shù)以及隊列的最小深度和最大深度,當(dāng)然,在條件允許的情況下,可以區(qū)分每個隊列的最小深度和最大深度。報文緩沖池的清理時間指的是在該時間段對緩沖池隊列中的空間進(jìn)行清理,例如,清理時間設(shè)為深夜或凌晨等報文收發(fā)量較少的時間段,清理緩沖池隊列中無效的報文等,這種閑時清理的方式不會影響系統(tǒng)間的報文交互。
[0051]在一個實施例中,可以通過以下方法建立處理線程池:在系統(tǒng)初始化時,讀取處理線程池的配置參數(shù),其中,處理線程池的配置參數(shù)包括:處理線程池的初始最大值、處理線程池的初始最小值和處理線程池的清理時間;根據(jù)處理線程池的配置參數(shù)建立線程池隊列,構(gòu)成處理線程池,其中,線程池隊列的深度為處理線程池的初始最小值。本實施例中,處理線程池的初始最小值指的是初始建立的處理線程池中的線程池隊列的深度;處理線程池的初始最大值指的是處理線程池中的線程池隊列的最大深度。對處理線程池進(jìn)行擴(kuò)充時,不會超過處理線程池的初始最大值。具體的,可以建立一個或多個線程池隊列構(gòu)成處理線程池,在建立一個線程池隊列的情況下,初始最小值可以解為初始建立的處理線程池中線程的個數(shù),初始最大值可理解為處理線程池可容納的線程的最多個數(shù);在建立多個線程池隊列的情況下,處理線程池的初始值可以包括:隊列的最少個數(shù)和最多個數(shù)以及隊列的最小深度和最大深度,當(dāng)然,在條件允許的情況下,可以區(qū)分每個隊列的最小深度和最大深度。處理線程池的清理時間指的是在該時間段對線程池隊列中的線程進(jìn)行清理,例如,清理時間設(shè)為深夜或凌晨等報文較少的時間段,清理處理線程池中有問題的線程(如不能再次使用的線程),保證處理線程池中的線程可以正常使用,且這種閑時清理的方式不會影響系統(tǒng)間的報文交互。
[0052]上述建立通訊連接池、報文緩沖池和處理線程池的方法比較簡單且易實現(xiàn)。
[0053]以下對步驟S102中實時檢測各個池的當(dāng)前使用情況以及步驟S103中根據(jù)當(dāng)前使用情況調(diào)整池的大小進(jìn)行說明。需要說明的是,對池的大小進(jìn)行調(diào)整(擴(kuò)充或回收)或?qū)Τ刂械脑?例如通訊連接、緩沖池隊列中的隊列空間或線程)進(jìn)行分配之后,實時更新池中元素的狀態(tài)以及更新對應(yīng)池的計數(shù)器(每個池的計數(shù)器均可以包括元素總數(shù)計數(shù)器、已使用元素的計數(shù)器和未使用元素的計數(shù)器),以方便對各個池的當(dāng)前使用情況進(jìn)行實時檢測。以下實施例中的上限閾值均不會超過建立各個池時的配置參數(shù)中的初始最大值。
[0054]在一個實施例中,實時檢測通訊連接池的當(dāng)前使用情況,并根據(jù)通訊連接池的當(dāng)前使用情況調(diào)整通訊連接池的大小可以通過如圖2所示的步驟實現(xiàn):
[0055]步驟S201,獲取通訊連接池的調(diào)節(jié)參數(shù)和通訊連接池中通訊連接的當(dāng)前使用情況。其中,通訊連接池的調(diào)節(jié)參數(shù)可以是根據(jù)需求預(yù)先設(shè)置的,通訊連接池的調(diào)節(jié)參數(shù)包括:連接類型、通訊連接池調(diào)節(jié)的第一上限閾值和第一下限閾值。通訊連接的當(dāng)前使用情況包括:通訊連接池的深度、已使用的通訊連接數(shù)和未使用的通訊連接數(shù),通訊連接的當(dāng)前使用情況可以根據(jù)通訊連接池的計數(shù)器(例如,通訊連接總數(shù)計數(shù)器、已使用通訊連接的計數(shù)器和未使用通訊連接的計數(shù)器)得到。
[0056]步驟S202,比較已使用的通訊連接數(shù)以及第一上限閾值和第一下限閾值。
[0057]步驟S203,如果已使用的通訊連接數(shù)大于等于第一上限閾值,則對通訊連接池進(jìn)行擴(kuò)充。具體的,可以根據(jù)通訊連接池的調(diào)節(jié)參數(shù)中的連接類型,建立新的通訊連接,并將該新的通訊連接的狀態(tài)設(shè)置為未使用,更新通訊連接池的計數(shù)器(例如,建立一個新的通訊連接,則通訊連接總數(shù)計數(shù)器加1,未使用通訊連接的計數(shù)器加I)。已使用的通訊連接數(shù)大于等于第一上限閾值,說明與外部系統(tǒng)交互的待處理報文較多,實時調(diào)節(jié)通訊連接池的大小,增加通訊連接參與外部系統(tǒng)的交互,保證報文能夠得到及時處理,避免出現(xiàn)堵報現(xiàn)象。
[0058]步驟S204,如果已使用的通訊連接數(shù)小于第一下限閾值,則對通訊連接池中未使用的通訊連接進(jìn)行回收,直到通訊連接池中的通訊連接數(shù)等于第一下限閾值。具體的,可以對未使用的通訊連接進(jìn)行逐個回收,并更新通訊連接池的計數(shù)器(例如,共回收3個通訊連接,則每回收I個通訊連接,通訊連接總數(shù)計數(shù)器減1,未使用通訊連接的計數(shù)器減I)。已使用的通訊連接數(shù)小于第一下限閾值,說明當(dāng)前報文流量較少,對未使用的通信連接進(jìn)行回收,可以避免內(nèi)存的浪費。
[0059]步驟S205,如果已使用的通訊連接數(shù)大于等于第一下限閾值且小于第一上限閾值,則直接從通訊連接池中分配通訊連接進(jìn)行報文的收發(fā)。具體的,從未使用的通訊連接中分配通訊連接進(jìn)行報文的收發(fā),將分配的通訊連接的狀態(tài)更新為已使用,更新通訊連接池的計數(shù)器(例如,分配I個通訊連接,則已使用通訊連接的計數(shù)器加1,未使用通訊連接的計數(shù)器減I)。
[0060]本實施例中,通訊連接池中的通訊連接發(fā)生變化時(例如,增加通訊連接、回收通訊連接或者分配通訊連接進(jìn)行報文的收發(fā)),需要對通訊連接的狀態(tài)以及通訊連接池的計數(shù)器進(jìn)行實時更新,以方便后續(xù)對通訊連接池的當(dāng)前使用情況進(jìn)行實時檢測。在使用通訊連接池中的通訊連接收發(fā)報文之后,將使用的通訊連接歸還到通訊連接池中,將該歸還的通訊連接的狀態(tài)更新為未使用,并更新通訊連接池的計數(shù)器(例如,歸還一個通訊連接,則已使用通訊連接的計數(shù)器減1,未使用通訊連接的計數(shù)器加I),以便下次通訊交互時使用。
[0061]在一個實施例中,實時檢測報文緩沖池的當(dāng)前使用情況,并根據(jù)報文緩沖池的當(dāng)前使用情況調(diào)整報文緩沖池的大小可以通過如圖3所示的步驟實現(xiàn):
[0062]步驟S301,獲取報文緩沖池的調(diào)節(jié)參數(shù)和報文緩沖池中緩沖池隊列的當(dāng)前使用情況。其中,報文緩沖池的調(diào)節(jié)參數(shù)可以是根據(jù)需求預(yù)先設(shè)置的,報文緩沖池的調(diào)節(jié)參數(shù)包括:報文緩沖池調(diào)節(jié)的第二上限閾值和第二下限閾值。緩沖池隊列的當(dāng)前使用情況包括:緩沖池隊列的深度、已使用的隊列空間數(shù)和未使用的隊列空間數(shù),緩沖池隊列的當(dāng)前使用情況可以根據(jù)報文緩沖池的計數(shù)器(例如,隊列空間總數(shù)計數(shù)器、已使用隊列空間的計數(shù)器和未使用隊列空間的計數(shù)器)得到。
[0063]步驟S302,比較已使用的隊列空間數(shù)以及第二上限閾值和第二下限閾值。
[0064]步驟S303,如果已使用的隊列空間數(shù)大于等于第二上限閾值,則對報文緩沖池進(jìn)行擴(kuò)充。具體的,可以增加原有的緩沖池隊列的深度,即在原有緩沖池隊列的基礎(chǔ)上增加隊列空間,將該新增隊列空間的狀態(tài)設(shè)置為未使用,并更新報文緩沖池的計數(shù)器(例如,新增一個隊列空間,則隊列空間總數(shù)計數(shù)器加1,未使用隊列空間的計數(shù)器加I);或者可以按照初始最小值建立新的緩沖池隊列,將該新的緩沖池隊列中每個隊列空間的狀態(tài)均設(shè)置為未使用,并更新報文緩沖池的計數(shù)器(例如,新增一個緩沖池隊列(包括15個隊列空間),則隊列空間總數(shù)計數(shù)器和未使用隊列空間的計數(shù)器均加15,當(dāng)然,還可以設(shè)置相關(guān)的隊列計數(shù)器)。已使用的隊列空間數(shù)大于等于第二上限閾值,說明報文緩沖池中已排隊待處理的報文較多時,實時調(diào)節(jié)報文緩沖池的大小,避免排隊隊列的溢出。
[0065]步驟S304,如果已使用的隊列空間數(shù)小于第二下限閾值,則對報文緩沖池中未使用的隊列空間進(jìn)行回收,直到報文緩沖池中的空間數(shù)等于第二下限閾值。具體的,可以對緩沖池隊列中未使用的隊列空間進(jìn)行逐個回收,并更新報文緩沖池的計數(shù)器(例如,共回收3個隊列空間,則每回收一個隊列空間,隊列空間總數(shù)計數(shù)器減1,未使用隊列空間的計數(shù)器減I)。已使用的隊列空間數(shù)小于第二下限閾值,說明報文緩沖池中待處理的報文較少,對未使用的隊列空間進(jìn)行回收,可以避免內(nèi)存的浪費。
[0066]步驟S305,如果已使用的隊列空間數(shù)大于等于第二下限閾值且小于第二上限閾值,則直接從報文緩沖池中分配隊列空間進(jìn)行報文的緩存。具體的,從未使用的隊列空間中分配隊列空間存儲報文,將分配的隊列空間的狀態(tài)更新為已使用,更新報文緩沖池的計數(shù)器(例如,分配I個隊列空間,則已使用隊列空間的計數(shù)器加1,未使用隊列空間的計數(shù)器減I)。
[0067]本實施例中,報文緩沖池中的緩沖池隊列發(fā)生變化時(例如,增加隊列空間或緩沖池隊列、回收隊列空間或緩沖池隊列、分配隊列空間或緩沖池隊列進(jìn)行報文的緩存),需要對緩沖池隊列中隊列空間的狀態(tài)以及報文緩沖池的計數(shù)器進(jìn)行實時更新,以方便后續(xù)對報文緩沖池的當(dāng)前使用情況進(jìn)行實時檢測。在使用報文緩沖池緩存報文之后,按照先進(jìn)先出的原則將緩沖池隊列中的報文推送給處理線程池進(jìn)行報文處理,刪除緩沖池隊列中已被推送的報文,將存儲該已被推送的報文的隊列空間的狀態(tài)更新為未使用,并更新報文緩沖池的計數(shù)器(例如,刪除一個報文,則已使用隊列空間的計數(shù)器減1,未使用隊列空間的計數(shù)器加I),以便下次使用。
[0068]在一個實施例中,實時檢測處理線程池的當(dāng)前使用情況,并根據(jù)處理線程池的當(dāng)前使用情況調(diào)整處理線程池的大小可以通過如圖4所示的步驟實現(xiàn):
[0069]步驟S401,獲取處理線程池的調(diào)節(jié)參數(shù)和處理線程池中線程池隊列的當(dāng)前使用情況。其中,處理線程池的調(diào)節(jié)參數(shù)可以是根據(jù)需求預(yù)先設(shè)置的,處理線程池的調(diào)節(jié)參數(shù)包括:處理線程池調(diào)節(jié)的第三上限閾值和第三下限閾值。線程池隊列的當(dāng)前使用情況包括:線程池隊列的深度、已使用的線程數(shù)和未使用的線程數(shù),線程池隊列中存儲線程,線程池隊列的當(dāng)前使用情況可以根據(jù)處理線程池的計數(shù)器(例如,線程總數(shù)計數(shù)器、已使用線程的計數(shù)器和未使用線程的計數(shù)器)得到。
[0070]步驟S402,比較已使用的線程數(shù)以及第三上限閾值和第三下限閾值。[0071]步驟S403,如果已使用的線程數(shù)大于等于第三上限閾值,則對處理線程池進(jìn)行擴(kuò)充。具體的,可以建立新的線程,將該新的線程的狀態(tài)設(shè)置為未使用,并更新處理線程池的計數(shù)器(例如,新增一個線程,則線程總數(shù)計數(shù)器加1,未使用線程的計數(shù)器加I);或者可以按照初始最小值建立新的線程池隊列,將該新的線程池隊列中每個線程的狀態(tài)均設(shè)置為未使用,并更新處理線程池的計數(shù)器(例如,新增一個線程池隊列(包括5個線程),則線程總數(shù)計數(shù)器和未使用線程的計數(shù)器均加5,當(dāng)然,還可以設(shè)置相關(guān)的隊列計數(shù)器)。已使用的線程數(shù)大于等于第三上限閾值,說明處理線程池中線程較繁忙,實時調(diào)節(jié)處理線程池的大小,避免報文大量排隊導(dǎo)致不能及時處理業(yè)務(wù)。
[0072]步驟S404,如果已使用的線程數(shù)小于第三下限閾值,則對處理線程池中未使用的線程進(jìn)行回收,直到處理線程池中的線程數(shù)等于第三下限閾值。具體的,可以對線程池隊列中未使用的線程進(jìn)行逐個回收,并更新處理線程池的計數(shù)器(例如,共回收3個線程,則每回收一個線程,線程總數(shù)計數(shù)器減1,未使用線程的計數(shù)器減I)。已使用的線程數(shù)小于第三下限閾值,說明處理線程池中的空閑線程較多,對未使用的線程進(jìn)行回收,可以避免內(nèi)存的浪費。
[0073]步驟S405,如果已使用的線程數(shù)大于等于第三下限閾值且小于第三上限閾值,則直接從處理線程池中分配線程進(jìn)行報文的處理。具體的,將分配的線程的狀態(tài)更新為已使用,更新處理線程池的計數(shù)器(例如,分配一個線程,則已使用線程的計數(shù)器加1,未使用線程的計數(shù)器減I)。
[0074]本實施例中,處理線程池中的線程發(fā)生變化時(例如,增加線程、回收線程、分配線程進(jìn)行報文的處理),需要對線程的狀態(tài)以及處理線程池的計數(shù)器進(jìn)行實時更新,以方便后續(xù)對處理線程池的當(dāng)前使用情況進(jìn)行實時檢測。按照業(yè)務(wù)邏輯對報文進(jìn)行報文核心業(yè)務(wù)的處理,并結(jié)束整個報文的處理流程。在使用處理線程池中的線程處理報文之后,將使用的線程歸還到處理線程池中,釋放線程占用的資源,并將歸還的線程的狀態(tài)更新為未使用,更新處理線程池的計數(shù)器(例如,歸還一個線程,已使用線程的計數(shù)器減1,未使用線程的計數(shù)器加I),以便下次使用。
[0075]在一個實施例中,除了從宏觀上對通訊連接池、報文緩沖池和處理線程池進(jìn)行實時檢測和調(diào)整之外,也可以在具體使用過程中,分別對各個池內(nèi)部進(jìn)行調(diào)整,例如,收發(fā)報文時對可用的通訊連接進(jìn)行判斷,以新增或分配通訊連接;在緩存報文時對可用的緩沖池隊列空間進(jìn)行判斷,以新增或分配緩沖池隊列空間;在處理報文時對可用的線程進(jìn)行判斷,以新增或分配線程。由此,通過宏觀上對三個池之間的實時檢測與調(diào)整以及在具體使用過程中的調(diào)整,進(jìn)一步保證了不會出現(xiàn)報文堵塞的情況。
[0076]具體的,步驟S104包括:
[0077]接收到外部系統(tǒng)的連接后,判斷通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執(zhí)行與外部系統(tǒng)之間的報文收發(fā);如果不存在可使用的通訊連接,則建立新的通訊連接;
[0078]判斷報文緩沖池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配可使用的隊列空間存儲通訊連接收發(fā)的報文;如果不存在可使用的隊列空間,則對報文緩沖池中的緩沖池隊列的深度進(jìn)行擴(kuò)充或建立新的緩沖池隊列;
[0079]在報文緩沖池向處理線程池推送報文之后,判斷處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配可使用的線程處理報文緩沖池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
[0080]在本實施例中,新增或分配池中的元素(例如通訊連接、緩沖池隊列空間或線程)之后,可以更新池中元素的狀態(tài)以及更新對應(yīng)池的計數(shù)器,以方便對各個池的當(dāng)前使用情況進(jìn)行實時檢測。通訊連接和線程使用完畢之后,歸還到對應(yīng)的池中;報文緩沖池中的報文推送給處理線程池后,刪除緩沖池隊列中已被推送的報文,以便下次使用。
[0081]本發(fā)明實施例還提供了一種報文流量控制系統(tǒng),可以用于實現(xiàn)上述實施例所描述的報文流量控制方法。由于報文流量控制系統(tǒng)解決問題的原理與報文流量控制方法相似,因此報文流量控制系統(tǒng)的實施可以參見報文流量控制方法的實施,重復(fù)之處不再贅述。以下所使用的,術(shù)語“單元”或者“模塊”可以實現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實施例所描述的系統(tǒng)較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
[0082]圖5是本發(fā)明一實施例的報文流量控制系統(tǒng)的結(jié)構(gòu)框圖,如圖5所示,該系統(tǒng)包括:建立單元51、通訊連接池52、報文緩沖池53、處理線程池54、檢測單元55、調(diào)整單元56和控制單元57。其中:
[0083]建立單元51,用于建立通訊連接池、報文緩沖池和處理線程池;
[0084]通訊連接池52,用于存儲與外部系統(tǒng)進(jìn)行報文交互的通訊連接;
[0085]報文緩沖池53,連接至通訊連接池52,用于存儲通訊連接收發(fā)的報文;
[0086]處理線程池54,連接至報文緩沖池53,用于存儲處理報文的線程;
[0087]檢測單元55,分別連接至通訊連接池52、報文緩沖池53和處理線程池54,用于實時檢測通訊連接池、報文緩沖池和處理線程池的當(dāng)前使用情況;
[0088]調(diào)整單元56,連接至檢測單元55,用于根據(jù)通訊連接池的當(dāng)前使用情況調(diào)整通訊連接池的大小,根據(jù)報文緩沖池的當(dāng)前使用情況調(diào)整報文緩沖池的大小以及根據(jù)處理線程池的當(dāng)前使用情況調(diào)整處理線程池的大?。?br>
[0089]控制單元57,分別連接至通訊連接池52、報文緩沖池53和處理線程池54,用于使用通訊連接池中的通訊連接收發(fā)報文,使用報文緩沖池緩存報文以及使用處理線程池中的線程處理報文。
[0090]通過上述實施例,建立通訊連接池、報文緩沖池和處理線程池,并分別對通訊連接池、報文緩沖池和處理線程池的當(dāng)前使用情況進(jìn)行實時監(jiān)控,可以判斷出系統(tǒng)間報文流量的增減,根據(jù)報文流量自適應(yīng)地調(diào)整通訊連接池、報文緩沖池和處理線程池的大小,通過動態(tài)調(diào)整上述參數(shù),實現(xiàn)系統(tǒng)對數(shù)據(jù)通訊流量的自適應(yīng)控制,避免系統(tǒng)間報文收發(fā)高峰時的通訊堵塞、丟包、處理緩慢甚至系統(tǒng)宕機(jī)等問題,保證了系統(tǒng)數(shù)據(jù)通訊的安全、穩(wěn)定。
[0091]在一個實施例中,如圖6所不,建立單兀51可以包括:第一讀取模塊511和第一建立模塊512。其中,第一讀取模塊511,用于在系統(tǒng)初始化時讀取通訊連接池的配置參數(shù),其中,通訊連接池的配置參數(shù)包括:連接類型、通訊連接池的初始最大值和通訊連接池的初始最小值,連接類型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP ;第一建立模塊512,連接至第一讀取模塊511,用于根據(jù)通訊連接池的配置參數(shù)建立對應(yīng)于不同連接類型的通訊連接池,其中,通訊連接池的深度為通訊連接池的初始最小值。
[0092]如圖6所示,建立單元51還可以包括:第二讀取模塊513和第二建立模塊514。其中,第二讀取模塊513,用于在系統(tǒng)初始化時讀取報文緩沖池的配置參數(shù),其中,報文緩沖池的配置參數(shù)包括:報文緩沖池的初始最大值、報文緩沖池的初始最小值和報文緩沖池的清理時間;第二建立模塊514,連接至第二讀取模塊513,用于根據(jù)報文緩沖池的配置參數(shù)建立緩沖池隊列,構(gòu)成報文緩沖池,其中,緩沖池隊列的深度為報文緩沖池的初始最小值。
[0093]如圖6所示,建立單元51還可以包括:第三讀取模塊515和第三建立模塊516。其中,第三讀取模塊515,用于在系統(tǒng)初始化時讀取處理線程池的配置參數(shù),其中,處理線程池的配置參數(shù)包括:處理線程池的初始最大值、處理線程池的初始最小值和處理線程池的清理時間;第三建立模塊516,連接至第三讀取模塊515,用于根據(jù)處理線程池的配置參數(shù)建立線程池隊列,構(gòu)成處理線程池,其中,線程池隊列的深度為處理線程池的初始最小值。
[0094]以下對檢測單元55和調(diào)整單元56對各個池的實時檢測和調(diào)整分別進(jìn)行說明。
[0095]在一個實施例中,如圖7所不,檢測單兀55可以包括:第一獲取模塊551和第一比較模塊552。其中,第一獲取模塊551,連接至通訊連接池52,用于獲取通訊連接池的調(diào)節(jié)參數(shù)和通訊連接池中通訊連接的當(dāng)前使用情況,其中,通訊連接池的調(diào)節(jié)參數(shù)包括:連接類型、通訊連接池調(diào)節(jié)的第一上限閾值和第一下限閾值,通訊連接的當(dāng)前使用情況包括:通訊連接池的深度、已使用的通訊連接數(shù)和未使用的通訊連接數(shù);第一比較模塊552,連接至第一獲取模塊551,用于比較已使用的通訊連接數(shù)以及第一上限閾值和第一下限閾值。
[0096]調(diào)整單元56可以包括:第一調(diào)整模塊561和第一分配模塊562。其中,第一調(diào)整模塊561,連接至第一比較模塊552,用于在已使用的通訊連接數(shù)大于等于第一上限閾值的情況下,對通訊連接池進(jìn)行擴(kuò)充;在已使用的通訊連接數(shù)小于第一下限閾值的情況下,對通訊連接池中未使用的通訊連接進(jìn)行回收,直到通訊連接池中的通訊連接數(shù)等于第一下限閾值;第一分配模塊562,連接至第一比較模塊552,用于在已使用的通訊連接數(shù)大于等于第一下限閾值且小于第一上限閾值的情況下,直接從通訊連接池中分配通訊連接進(jìn)行報文的收發(fā)。
[0097]如圖7所示,檢測單元55還可以包括:第二獲取模塊553和第二比較模塊554。其中,第二獲取模塊553,連接至報文緩沖池53,用于獲取報文緩沖池的調(diào)節(jié)參數(shù)和報文緩沖池中緩沖池隊列的當(dāng)前使用情況,其中,報文緩沖池的調(diào)節(jié)參數(shù)包括:報文緩沖池調(diào)節(jié)的第二上限閾值和第二下限閾值,緩沖池隊列的當(dāng)前使用情況包括:緩沖池隊列的深度、已使用的隊列空間數(shù)和未使用的隊列空間數(shù);第二比較模塊554,連接至第二獲取模塊553,用于比較已使用的隊列空間數(shù)以及第二上限閾值和第二下限閾值。
[0098]調(diào)整單元56還可以包括:第二調(diào)整模塊563和第二分配模塊564。其中,第二調(diào)整模塊563,連接至第二比較模塊554,用于在已使用的隊列空間數(shù)大于等于第二上限閾值的情況下,對報文緩沖池進(jìn)行擴(kuò)充;在已使用的隊列空間數(shù)小于第二下限閾值的情況下,對報文緩沖池中未使用的隊列空間進(jìn)行回收,直到報文緩沖池中的隊列空間數(shù)等于第二下限閾值;第二分配模塊564,連接至第二比較模塊554,用于在已使用的隊列空間數(shù)大于等于第二下限閾值且小于第二上限閾值的情況下,直接從報文緩沖池中分配隊列空間進(jìn)行報文的緩存。
[0099]如圖7所示,檢測單元55還可以包括:第三獲取模塊555和第三比較模塊556。其中,第三獲取模塊555,連接至處理線程池54,用于獲取處理線程池的調(diào)節(jié)參數(shù)和處理線程池中線程池隊列的當(dāng)前使用情況,其中,處理線程池的調(diào)節(jié)參數(shù)包括:處理線程池調(diào)節(jié)的第三上限閾值和第三下限閾值,線程池隊列的當(dāng)前使用情況包括:線程池隊列的深度、已使用的線程數(shù)和未使用的線程數(shù);第三比較模塊556,連接至第三獲取模塊555,用于比較已使用的線程數(shù)以及第三上限閾值和第三下限閾值。
[0100]調(diào)整單元56還可以包括:第三調(diào)整模塊565和第三分配模塊566。其中,第三調(diào)整模塊565,連接至第三比較模塊556,用于在已使用的線程數(shù)大于等于第三上限閾值的情況下,對處理線程池進(jìn)行擴(kuò)充;在已使用的線程數(shù)小于第三下限閾值的情況下,對處理線程池中未使用的線程進(jìn)行回收,直到處理線程池中的線程數(shù)等于第三下限閾值;第三分配模塊566,連接至第三比較模塊556,用于在已使用的線程數(shù)大于等于第三下限閾值且小于第三上限閾值的情況下,直接從處理線程池中分配線程進(jìn)行報文的處理。
[0101]在一個實施例中,調(diào)整單元56還可以包括:更新模塊,分別連接至第一調(diào)整模塊561、第一分配模塊562、第二調(diào)整模塊563、第二分配模塊564、第三調(diào)整模塊565和第三分配模塊566,用于更新通訊連接的狀態(tài)、緩沖池隊列中隊列空間的狀態(tài)和線程池隊列中線程的狀態(tài),以及更新通訊連接池的計數(shù)器、報文緩沖池的計數(shù)器和處理線程池的計數(shù)器。
[0102]在一個實施例中,如圖8所示,控制單元57可以包括:第一控制模塊571,連接至通訊連接池52,用于接收到外部系統(tǒng)的連接后,判斷通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執(zhí)行與外部系統(tǒng)之間的報文收發(fā);如果不存在可使用的通訊連接,則建立新的通訊連接;第二控制模塊572,連接至報文緩沖池53,用于判斷報文緩沖池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配可使用的隊列空間存儲通訊連接收發(fā)的報文;如果不存在可使用的隊列空間,則對報文緩沖池中的緩沖池隊列的深度進(jìn)行擴(kuò)充或建立新的緩沖池隊列;第三控制模塊573,連接至處理線程池54,用于在報文緩沖池向處理線程池推送報文之后,判斷處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配可使用的線程處理報文緩沖池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
[0103]如圖8所示,控制單元57還可以包括:通訊連接歸還模塊574,連接至第一控制模塊571,用于在使用通訊連接池中的通訊連接收發(fā)報文之后,將使用的通訊連接歸還到通訊連接池中;報文緩沖池清理模塊575,連接至第二控制模塊572,用于在使用報文緩沖池緩存報文,并將報文推送給處理線程池進(jìn)行報文處理之后,刪除緩沖池隊列中已被推送的報文;線程歸還模塊576,連接至第三控制模塊573,用于在使用處理線程池中的線程處理報文之后,將使用的線程歸還到處理線程池中,釋放線程占用的資源。
[0104]需要說明的是,控制單元57對各個池中的元素進(jìn)行新增、分配或歸還之后,也需要使用更新模塊更新對應(yīng)元素的狀態(tài)以及對應(yīng)池的計數(shù)器,因此,更新模塊也與控制單元57連接。
[0105]當(dāng)然,上述單元及模塊的劃分只是一種示意劃分,本發(fā)明并不局限于此。該系統(tǒng)可以僅包括:通訊連接池單元、報文緩沖池單元、處理線程池單元以及調(diào)節(jié)單元,通訊連接池單元執(zhí)行通訊連接池的建立、網(wǎng)絡(luò)層的安全校驗以及收發(fā)報文時對通訊連接池的調(diào)整分配等功能,報文緩沖池單元執(zhí)行報文緩沖池的建立以及報文的緩存等功能,處理線程池單元執(zhí)行處理線程池的建立以及調(diào)配線程等功能,調(diào)節(jié)單元執(zhí)行與實時檢測各個池的當(dāng)前使用情況及調(diào)整各個池的大小相關(guān)的功能。只要能實現(xiàn)本發(fā)明的目的的模塊劃分,均應(yīng)屬于本發(fā)明的保護(hù)范圍。[0106]為了對上述報文流量控制方法及系統(tǒng)進(jìn)行更為清楚的解釋,下面結(jié)合具體的實施例對報文流量控制系統(tǒng)進(jìn)行說明,然而值得注意的是該實施例僅是為了更好地說明本發(fā)明,并不構(gòu)成對本發(fā)明不當(dāng)?shù)南薅ā?br>
[0107]優(yōu)選實施例一
[0108]在本優(yōu)選實施例中,報文流量控制系統(tǒng)的結(jié)構(gòu)圖如圖9所示,包括通訊連接池單元91、報文緩沖池單元92、處理線程池單元93、調(diào)節(jié)單元94和報文處理流程單元95。其中:
[0109]通訊連接池單元91,用于在系統(tǒng)初始化時,建立與外部系統(tǒng)進(jìn)行報文交互的通訊連接,構(gòu)成通訊連接池,包括建立收報通訊連接池和發(fā)報通訊連接池,連接類型包括:MQ、TCP/IP (Socket)、HTTP/HTTPS和FTP/SFTP,還用于與外部系統(tǒng)通訊安全的校驗,即網(wǎng)絡(luò)層的通訊安全校驗。通訊連接建立好以后,納入通訊連接池進(jìn)行統(tǒng)一管理和調(diào)配。
[0110]報文緩沖池單元92,連接至通訊連接池單元91,用于系統(tǒng)初始化時在內(nèi)存中建立收發(fā)報的緩沖池隊列,待通訊連接池接收到報文后,將報文放入報文緩沖池中,等待處理線程池中的線程進(jìn)行處理。
[0111]處理線程池單元93,連接至報文緩沖池單元92,用于在系統(tǒng)初始化時建立收發(fā)報的處理線程池,根據(jù)報文緩沖池中報文的數(shù)量情況,調(diào)配線程個數(shù)進(jìn)行報文處理。
[0112]調(diào)節(jié)單元94,連接至通訊連接池單元91、報文緩沖池單元92和處理線程池單元93,用于對通訊連接池負(fù)荷情況、報文緩沖池負(fù)荷情況以及處理線程池的負(fù)荷情況進(jìn)行檢測,并根據(jù)檢測結(jié)果對各個池的大小進(jìn)行調(diào)節(jié)。具體的,當(dāng)發(fā)現(xiàn)與外部系統(tǒng)交互的待處理報文較多時,實時調(diào)節(jié)通訊連接池的大小,增加通訊連接參與外部系統(tǒng)的交互,保證報文能夠得到及時處理,避免出現(xiàn)堵報現(xiàn)象;當(dāng)發(fā)現(xiàn)報文緩沖池中已排隊待處理的報文較多時,實時調(diào)節(jié)報文緩沖池的大小,避免排隊隊列的溢出;當(dāng)發(fā)現(xiàn)處理線程池中線程較繁忙時,實時調(diào)節(jié)處理線程池的大小,避免報文大量排隊導(dǎo)致不能及時處理業(yè)務(wù)。
[0113]報文處理流程單元95,連接至處理線程池單元93,用于對報文進(jìn)行數(shù)據(jù)處理,例如,報文解析、轉(zhuǎn)換、數(shù)據(jù)加工等,相當(dāng)于現(xiàn)有技術(shù)中普通的數(shù)據(jù)通訊系統(tǒng)中的報文數(shù)據(jù)加工處理過程。
[0114]調(diào)節(jié)單元94的結(jié)構(gòu)圖如圖10所示,包括以下單元:
[0115]參數(shù)初始化單元9400,用于讀取調(diào)節(jié)單元配置參數(shù)文件中的參數(shù),包括:連接類型(MQ、TCP/IP (Socket)、HTTP/HTTPS、FTP/SFTP等)、通訊連接池調(diào)節(jié)的上下限閾值、報文緩沖池調(diào)節(jié)的上下限閾值、處理線程池調(diào)節(jié)的上下限閾值。
[0116]通訊連接池當(dāng)前使用情況獲取單元9401,連接至參數(shù)初始化單元9400,用于讀取內(nèi)存中通訊連接池的當(dāng)前使用情況,包括:通訊連接池的深度、通訊連接池中已使用的連接數(shù)、通訊連接池中未使用的連接數(shù)等。
[0117]通訊連接池閾值判斷單元9402,連接至通訊連接池當(dāng)前使用情況獲取單元9401,用于將參數(shù)初始化單元9400讀取的通訊連接池調(diào)節(jié)的上下限閾值與通訊連接池當(dāng)前使用情況獲取單元9401獲取的已使用的連接數(shù)(以下簡稱為當(dāng)前值)進(jìn)行比較。
[0118]通訊連接新增單元9403,連接至通訊連接池閾值判斷單元9402,用于當(dāng)通訊連接池閾值判斷單元9402判斷出當(dāng)前值大于等于上限閾值時,對通訊連接池進(jìn)行擴(kuò)充,即進(jìn)行通訊連接的新增,根據(jù)參數(shù)初始化單元9400中讀取的連接類型,建立一個新的通訊連接。[0119]通訊連接分配單元9404,連接至通訊連接池閾值判斷單元9402,用于當(dāng)通訊連接池閾值判斷單元9402判斷出當(dāng)前值大于等于下限閾值且小于上限閾值時,直接從通訊連接池中分配一個通訊連接進(jìn)行報文的收發(fā)處理。
[0120]通訊連接回收單元9405,連接至通訊連接池閾值判斷單元9402,用于當(dāng)通訊連接池閾值判斷單元9402判斷出當(dāng)前值小于下限閾值時,將通訊連接池中未使用的通訊連接逐個進(jìn)行回收,直到通訊連接池中的通訊連接總數(shù)等于下限閾值。
[0121]通訊連接狀態(tài)更新單元9406,連接至通訊連接新增單元9403、通訊連接分配單元9404和通訊連接回收單元9405,用于將通訊連接新增單元9403新增的通訊連接的狀態(tài)設(shè)為未使用,并更新通訊連接池的計數(shù)器,具體的,新增一個通訊連接,通訊連接總數(shù)計數(shù)器加1,未使用通訊連接的計數(shù)器加I ;還用于將通訊連接分配單元9404中分配的通訊連接的狀態(tài)更新為已使用,并更新通訊連接池的計數(shù)器,具體的,分配一個通訊連接,已使用通訊連接的計數(shù)器加1,未使用通訊連接的計數(shù)器減I ;還用于在通訊連接回收單元9405回收通訊連接后,更新通訊連接池計數(shù)器,具體的,每回收I個通訊連接,通訊連接總數(shù)計數(shù)器減1,未使用通訊連接的計數(shù)器減I。
[0122]通訊交互單元9407,連接至通訊連接狀態(tài)更新單元9406,用于調(diào)度通訊連接與外部系統(tǒng)通過MQ、TCP/IP (Socket)、HTTP/HTTPS或FTP/SFTP等連接方式進(jìn)行報文的收發(fā)處理。
[0123]例如,初始建立時通訊連接池的深度為90,可以承受的最大深度為170。檢測到的當(dāng)前使用情況為:深度為90,已使用通訊連接個數(shù)為60,未使用通訊連接個數(shù)為30。調(diào)節(jié)的上限閾值為80,下限閾值為50。根據(jù)上述實施例的描述可知,已使用通訊連接個數(shù)60介于上下限閾值之間,因此,可以直接分配通訊連接進(jìn)行報文的收發(fā)。如果已使用通訊連接個數(shù)為40,即小于下限閾值,則回收未使用的50個通訊連接中的40個通訊連接,使得通訊連接總數(shù)等于下限閾值,避免內(nèi)存空間的浪費。如果已使用通訊連接個數(shù)為85個,即大于上限閾值,則新建通信連接,保證報文的收發(fā)不會出現(xiàn)堵塞。
[0124]報文緩沖池當(dāng)前使用情況獲取單元9408,連接至通訊交互單元9407,用于讀取內(nèi)存中報文緩沖池的當(dāng)前使用情況,包括:報文緩沖池的深度、緩沖池隊列中已使用的隊列空間數(shù)、緩沖池隊列中未使用的隊列空間數(shù)等。
[0125]報文緩沖池閾值判斷單元9409,連接至報文緩沖池當(dāng)前使用情況獲取單元9408,用于將參數(shù)初始化單元9400讀取的報文緩沖池調(diào)節(jié)的上下限閾值與報文緩沖池當(dāng)前使用情況獲取單元9408獲取的當(dāng)前已使用的隊列空間數(shù)(以下簡稱為當(dāng)前值)進(jìn)行比較。
[0126]緩沖池隊列新增單元9410,連接至報文緩沖池閾值判斷單元9409,用于當(dāng)報文緩沖池閾值判斷單元9409判斷出當(dāng)前值大于等于上限閾值時,對報文緩沖池進(jìn)行擴(kuò)充,即進(jìn)行緩沖池隊列或隊列空間的新增。
[0127]緩沖池隊列分配單元9411,連接至報文緩沖池閾值判斷單元9409,用于當(dāng)報文緩沖池閾值判斷單元9409判斷出當(dāng)前值大于等于下限閾值且小于上限閾值時,直接從報文緩沖池中分配隊列空間進(jìn)行報文的存儲。
[0128]緩沖池隊列回收單元9412,連接至報文緩沖池閾值判斷單元9409,用于當(dāng)報文緩沖池閾值判斷單元9409判斷出當(dāng)前值小于下限閾值時,將報文緩沖池中未使用的隊列空間進(jìn)行回收,直到報文緩沖池中的隊列空間數(shù)等于下限閾值。[0129]緩沖池隊列狀態(tài)更新單元9413,連接至緩沖池隊列新增單元9410、緩沖池隊列分配單元9411和緩沖池隊列回收單元9412,用于將緩沖池隊列新增單元9410新增的隊列空間的狀態(tài)設(shè)為未使用,并更新報文緩沖池的計數(shù)器,具體的,新增一個隊列空間,隊列空間總數(shù)計數(shù)器加1,未使用隊列空間的計數(shù)器加I ;還用于將緩沖隊列分配單元9411分配的隊列空間的狀態(tài)為已使用,并更新報文緩沖池計數(shù)器,具體的,分配一個隊列空間,已使用隊列空間的計數(shù)器加1,未使用隊列空間的計數(shù)器減I ;還用于在緩沖池隊列回收單元9412回收隊列空間之后,更新報文緩沖池計數(shù)器,具體的,每回收一個隊列空間,隊列空間總數(shù)計數(shù)器減1,未使用隊列空間的計數(shù)器減I。
[0130]報文置入單元9414,連接至緩沖池隊列狀態(tài)更新單元9413,用于將報文存儲入緩沖池隊列,等待線程的處理。
[0131]處理線程池觸發(fā)單元9415,連接至報文置入單元9414,用于給置入緩沖池隊列的報文調(diào)用一個空閑的線程進(jìn)行處理。
[0132]處理線程池當(dāng)前使用情況獲取單元9416,連接至處理線程池觸發(fā)單元9415,用于讀取內(nèi)存中處理線程池的當(dāng)前使用情況,包括:處理線程池的深度、處理線程池中已使用的線程數(shù)、處理線程池中未使用的線程數(shù)等。
[0133]處理線程池閾值判斷單元9417,連接至處理線程池當(dāng)前使用情況獲取單元9416,用于將參數(shù)初始化單元9400讀取的處理線程池調(diào)節(jié)的上下限閾值與處理線程池當(dāng)前使用情況獲取單元9416獲取的當(dāng)前已使用的線程數(shù)(以下簡稱為當(dāng)前值)進(jìn)行比較。
[0134]線程新增單元9418,連接至處理線程池閾值判斷單元9417,用于當(dāng)處理線程池閾值判斷單元9417判斷出當(dāng)前值大于等于上限閾值時,對處理線程池進(jìn)行擴(kuò)充,即進(jìn)行線程的新增。
[0135]線程分配單元9419,連接至處理線程池閾值判斷單元9417,用于當(dāng)處理線程池閾值判斷單元9417判斷出當(dāng)前值大于等于下限閾值且小于上限閾值時,直接從處理線程池中分配一個線程進(jìn)行報文的處理。
[0136]線程回收單元9420,連接至處理線程池閾值判斷單元9417,用于當(dāng)處理線程池閾值判斷單元9417判斷出當(dāng)前值小于下限閾值時,將處理線程池中未使用的線程逐個進(jìn)行回收,直到處理線程池中的線程數(shù)等于下限閾值。
[0137]線程狀態(tài)更新單元9421,連接至線程新增單元9418、線程分配單元9419和線程回收單元9420,用于將線程新增單元9418新增的線程的狀態(tài)設(shè)為未使用,并更新處理線程池的計數(shù)器,具體的,新增一個線程,線程總數(shù)計數(shù)器加1,未使用線程的計數(shù)器加I ;還用于將線程分配單元9419分配的線程的狀態(tài)更新為已使用,并更新處理線程池計數(shù)器,具體的,分配一個線程,已使用線程的計數(shù)器加1,未使用線程的計數(shù)器減I ;還用于在線程回收單元9420回收線程之后,更新處理線程池計數(shù)器,具體的,每回收一個線程,線程總數(shù)計數(shù)器減1,未使用線程的計數(shù)器減I。
[0138]報文業(yè)務(wù)邏輯處理單元9422,連接至線程狀態(tài)更新單元9421,用于將報文按照業(yè)務(wù)邏輯進(jìn)行報文核心業(yè)務(wù)的處理,并結(jié)束整個報文的處理流程。
[0139]本優(yōu)選實施例以報文緩沖池包含一個緩沖池隊列,線程處理池包含一個線程池隊列為例進(jìn)行說明。當(dāng)然,報文緩沖池中可以建立多個隊列,線程處理池中也可以建立多個隊列,原理與一個隊列相同,此處不再贅述。[0140]優(yōu)選實施例二
[0141]本優(yōu)選實施例在優(yōu)選實施例一的基礎(chǔ)上,增加了具體使用過程中通訊連接池單元91、報文緩沖池單元92和處理線程池單元93分別對自身情況的判斷與調(diào)整。例如,通訊連接池收發(fā)報文時對可用的通訊連接進(jìn)行判斷,以新增或分配通訊連接;報文緩沖池在緩存報文時對可用的緩沖池隊列空間進(jìn)行判斷,以新增或分配緩沖池隊列空間;處理線程池在處理報文時對可用的線程進(jìn)行判斷,以新增或分配線程。由此,通過宏觀上對三個池之間的實時檢測與調(diào)整以及在具體使用過程中的調(diào)整,進(jìn)一步保證了不會出現(xiàn)報文堵塞的情況。
[0142]通訊連接池單元91的結(jié)構(gòu)如圖11所示,包括:參數(shù)初始化單元911、通訊連接池建立單元912、通訊阻塞(待外部連接)單元913、分配通訊連接單元914和通訊連接歸還單元915。其中:
[0143]參數(shù)初始化單元911,用于讀取通訊連接池參數(shù)配置文件中的參數(shù),包括連接類型(MQ、TCP/IP (Socket)、HTTP/HTTPS、FTP/SFTP)、通訊連接池的初始最大值與初始最小值等。
[0144]通訊連接池建立單元912,連接至參數(shù)初始化單元911,用于根據(jù)讀取的通訊連接池配置參數(shù),按照初始最小值建立對應(yīng)連接類型的通訊連接池。
[0145]通訊阻塞(待外部連接)單元913,連接至通訊連接池建立單元912,用于在通訊連接池建立好之后,通過阻塞的方式等待與外部系統(tǒng)通訊連接進(jìn)行連接,待外部系統(tǒng)連接過來以后,交給通訊連接池分配通訊連接。
[0146]分配通訊連接單元914,連接至通訊阻塞(待外部連接)單元913,用于接收到外部系統(tǒng)的連接后,判斷通訊連接池中是否存在可以使用的通訊連接,如果存在可以使用的通訊連接,則直接分配通訊連接進(jìn)行報文收發(fā)處理,如果不存在可以使用的通訊連接,則需要新增通訊連接,再分配該通訊連接與外部系統(tǒng)通過某種連接類型進(jìn)行報文收發(fā)處理。
[0147]通訊連接歸還單元915,連接至分配通訊連接單元914,用于在使用通訊連接對報文收發(fā)處理完畢后,將使用的通訊連接歸還到通訊連接池中,以便下一次通訊交互使用。
[0148]報文緩沖池單元92的結(jié)構(gòu)圖如圖12所示,包括:參數(shù)初始化單元921、報文緩沖池建立單元922、報文緩沖池分配單元923、報文推送單元924和報文緩沖池清理單元925。其中:
[0149]參數(shù)初始化單元921,用于讀取報文緩沖池參數(shù)配置文件中的參數(shù),包括系統(tǒng)初始化時建立的報文緩沖池的最大值和最小值(即報文緩沖池初始最小值和初始最大值)、報文緩沖池清理時間等。
[0150]報文緩沖池建立單元922,連接至參數(shù)初始化單元921,用于根據(jù)參數(shù)初始化單元921獲取的參數(shù)在內(nèi)存中建立緩沖池隊列,隊列的深度為報文緩沖池初始最小值。
[0151]報文緩沖池分配單元923,連接至報文緩沖池建立單元922,用于將通訊連接池中的通訊連接接收的報文存入報文緩沖池的隊列中。如果緩沖池隊列存在可用的空閑空間,則分配一個空間存儲報文,否則擴(kuò)充緩沖池隊列的深度后,再將報文存入隊列,等待調(diào)用線程處理該報文。
[0152]報文推送單元924,連接至報文緩沖池分配單元923,用于將緩沖池隊列中的報文推送給處理線程池,以分配線程處理該報文,推送機(jī)制采用先進(jìn)先出(First In First Out,FIFO)原則。
[0153]報文緩沖池清理單元925,連接至報文推送單元924,用于將報文推送單元924推送的報文進(jìn)行清理。
[0154]處理線程池單元93的結(jié)構(gòu)圖如圖13所示,包括:參數(shù)初始化單元931、處理線程池建立單元932、線程分配單元933、線程業(yè)務(wù)邏輯處理單元934和線程歸還單元935。其中:
[0155]參數(shù)初始化單元931,用于讀取處理線程池參數(shù)配置文件中的參數(shù),包括系統(tǒng)初始化時建立的處理線程池的最大值和最小值(即處理線程池初始最小值和初始最大值)、處理線程池清理時間等。
[0156]處理線程池建立單元932,連接至參數(shù)初始化單元931,用于根據(jù)參數(shù)初始化單元931獲取的參數(shù)在內(nèi)存中建立線程池隊列,隊列的深度為處理線程池初始最小值。
[0157]分配線程單元933,連接至處理線程池建立單元932,用于給報文緩沖池的報文推送單元924推送的報文分配線程。如果線程池隊列存在可用的空閑的線程,則分配一個線程處理報文,否則擴(kuò)充線程池的線程后,再給該報文分配線程。
[0158]線程業(yè)務(wù)邏輯處理單元934,連接至分配線程單元933,用于對報文按照業(yè)務(wù)邏輯進(jìn)行報文核心業(yè)務(wù)的處理,并將處理后的報文推送給報文處理流程單元95進(jìn)行數(shù)據(jù)加工處理,如果是交易報文,還負(fù)責(zé)與賬務(wù)核心系統(tǒng)進(jìn)行交付。
[0159]線程歸還單元935,連接至線程業(yè)務(wù)邏輯處理單元934,負(fù)責(zé)將線程業(yè)務(wù)邏輯處理單元934處理結(jié)束后的線程進(jìn)行歸還,將線程占用的內(nèi)存等資源進(jìn)行釋放。
[0160]本優(yōu)選實施例中,對各個池中的元素進(jìn)行新增、分配或歸還之后,也需要更新對應(yīng)元素的狀態(tài)以及對應(yīng)池的計數(shù)器。
[0161]優(yōu)選實施例三
[0162]本優(yōu)選實施例與優(yōu)選實施例一及優(yōu)選實施例二相比,不同之處在于,調(diào)節(jié)單元94不包括通訊交互單元9407、報文置入緩沖池隊列單元9414、處理線程池觸發(fā)單元9415和報文業(yè)務(wù)邏輯處理單元9422,即調(diào)節(jié)單元94僅執(zhí)行實時檢測與調(diào)節(jié)的操作。通訊交互單元9407的功能可以由通訊連接池單元91實現(xiàn),報文置入緩沖池隊列單元9414和處理線程池觸發(fā)單元9415的功能可以由報文緩沖池單元92實現(xiàn),報文業(yè)務(wù)邏輯處理單元9422的功能可以由處理線程池單元93實現(xiàn)。在優(yōu)選實施例一中,三個池的當(dāng)前使用情況的實時檢測與調(diào)整是依次進(jìn)行,本優(yōu)選實施例中,三個池的當(dāng)前使用情況的實時檢測與調(diào)整是同時進(jìn)行,參見圖7,對各個池的當(dāng)前使用情況進(jìn)行實時檢測的模塊之間無連接關(guān)系。
[0163]舉例而言,對于交易系統(tǒng),當(dāng)大量交易并發(fā)時,會導(dǎo)致不可預(yù)知的交易堵塞、交易緩慢甚至系統(tǒng)宕機(jī),采用本發(fā)明的技術(shù)方案,自適應(yīng)地對通訊連接池中的通訊連接個數(shù)、報文緩沖池中緩沖池隊列的深度或緩沖池隊列的個數(shù)以及處理線程池中的線程個數(shù)進(jìn)行動態(tài)增加,可以避免交易堵塞等問題。
[0164]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0165]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
[0166]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
[0167]此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。
[0168]上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0169]在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。
[0170]以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種報文流量控制方法,其特征在于,包括: 建立通訊連接池、報文緩沖池和處理線程池,其中,所述通訊連接池存儲與外部系統(tǒng)進(jìn)行報文交互的通訊連接,所述報文緩沖池存儲利用所述通訊連接收發(fā)的報文,所述處理線程池存儲用于處理所述報文的線程; 實時檢測所述通訊連接池、所述報文緩沖池和所述處理線程池的當(dāng)前使用情況; 根據(jù)所述通訊連接池的當(dāng)前使用情況調(diào)整所述通訊連接池的大小,根據(jù)所述報文緩沖池的當(dāng)前使用情況調(diào)整所述報文緩沖池的大小以及根據(jù)所述處理線程池的當(dāng)前使用情況調(diào)整所述處理線程池的大小; 使用所述通訊連接池中的通訊連接收發(fā)所述報文,使用所述報文緩沖池緩存所述報文以及使用所述處理線程池中的線程處理所述報文。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,建立通訊連接池包括: 在系統(tǒng)初始化時,讀取所述通訊連接池的配置參數(shù),其中,所述通訊連接池的配置參數(shù)包括:連接類型、所述通訊連接池的初始最大值和所述通訊連接池的初始最小值,所述連接類型包括:消息隊列MQ、傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議TCP/IP、超文本傳輸協(xié)議/安全超文本傳輸協(xié)議HTTP/HTTPS和文件傳輸協(xié)議/安全文件傳輸協(xié)議FTP/SFTP ; 根據(jù)所述通訊連接池 的配置參數(shù)建立對應(yīng)于不同連接類型的通訊連接池,其中,所述通訊連接池的深度為所述通訊連接池的初始最小值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,建立報文緩沖池包括: 在系統(tǒng)初始化時,讀取所述報文緩沖池的配置參數(shù),其中,所述報文緩沖池的配置參數(shù)包括:所述報文緩沖池的初始最大值、所述報文緩沖池的初始最小值和所述報文緩沖池的清理時間; 根據(jù)所述報文緩沖池的配置參數(shù)建立緩沖池隊列,構(gòu)成所述報文緩沖池,其中,所述緩沖池隊列的深度為所述報文緩沖池的初始最小值。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,建立處理線程池包括: 在系統(tǒng)初始化時,讀取所述處理線程池的配置參數(shù),其中,所述處理線程池的配置參數(shù)包括:所述處理線程池的初始最大值、所述處理線程池的初始最小值和所述處理線程池的清理時間; 根據(jù)所述處理線程池的配置參數(shù)建立線程池隊列,構(gòu)成所述處理線程池,其中,所述線程池隊列的深度為所述處理線程池的初始最小值。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,實時檢測所述通訊連接池的當(dāng)前使用情況,并根據(jù)所述通訊連接池的當(dāng)前使用情況調(diào)整所述通訊連接池的大小包括: 獲取所述通訊連接池的調(diào)節(jié)參數(shù)和所述通訊連接池中通訊連接的當(dāng)前使用情況,其中,所述通訊連接池的調(diào)節(jié)參數(shù)包括:連接類型、所述通訊連接池調(diào)節(jié)的第一上限閾值和第一下限閾值,所述通訊連接的當(dāng)前使用情況包括:所述通訊連接池的深度、已使用的通訊連接數(shù)和未使用的通訊連接數(shù); 比較所述已使用的通訊連接數(shù)以及所述第一上限閾值和所述第一下限閾值; 如果所述已使用的通訊連接數(shù)大于等于所述第一上限閾值,則對所述通訊連接池進(jìn)行擴(kuò)充; 如果所述已使用的通訊連接數(shù)小于所述第一下限閾值,則對所述通訊連接池中未使用的通訊連接進(jìn)行回收,直到所述通訊連接池中的通訊連接數(shù)等于所述第一下限閾值; 如果所述已使用的通訊連接數(shù)大于等于所述第一下限閾值且小于所述第一上限閾值,則直接從所述通訊連接池中分配通訊連接進(jìn)行報文的收發(fā)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,實時檢測所述報文緩沖池的當(dāng)前使用情況,并根據(jù)所述報文緩沖池的當(dāng)前使用情況調(diào)整所述報文緩沖池的大小包括: 獲取所述報文緩沖池的調(diào)節(jié)參數(shù)和所述報文緩沖池中緩沖池隊列的當(dāng)前使用情況,其中,所述報文緩沖池的調(diào)節(jié)參數(shù)包括:所述報文緩沖池調(diào)節(jié)的第二上限閾值和第二下限閾值,所述緩沖池隊列的當(dāng)前 使用情況包括:所述緩沖池隊列的深度、已使用的隊列空間數(shù)和未使用的隊列空間數(shù); 比較所述已使用的隊列空間數(shù)以及所述第二上限閾值和所述第二下限閾值; 如果所述已使用的隊列空間數(shù)大于等于所述第二上限閾值,則對所述報文緩沖池進(jìn)行擴(kuò)充; 如果所述已使用的隊列空間數(shù)小于所述第二下限閾值,則對所述報文緩沖池中未使用的隊列空間進(jìn)行回收,直到所述報文緩沖池中的隊列空間數(shù)等于所述第二下限閾值; 如果所述已使用的隊列空間數(shù)大于等于所述第二下限閾值且小于所述第二上限閾值,則直接從所述報文緩沖池中分配隊列空間進(jìn)行報文的緩存。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,實時檢測所述處理線程池的當(dāng)前使用情況,并根據(jù)所述處理線程池的當(dāng)前使用情況調(diào)整所述處理線程池的大小包括: 獲取所述處理線程池的調(diào)節(jié)參數(shù)和所述處理線程池中線程池隊列的當(dāng)前使用情況,其中,所述處理線程池的調(diào)節(jié)參數(shù)包括:所述處理線程池調(diào)節(jié)的第三上限閾值和第三下限閾值,所述線程池隊列的當(dāng)前使用情況包括:所述線程池隊列的深度、已使用的線程數(shù)和未使用的線程數(shù); 比較所述已使用的線程數(shù)以及所述第三上限閾值和所述第三下限閾值; 如果所述已使用的線程數(shù)大于等于所述第三上限閾值,則對所述處理線程池進(jìn)行擴(kuò)充; 如果所述已使用的線程數(shù)小于所述第三下限閾值,則對所述處理線程池中未使用的線程進(jìn)行回收,直到所述處理線程池中的線程數(shù)等于所述第三下限閾值; 如果所述已使用的線程數(shù)大于等于所述第三下限閾值且小于所述第三上限閾值,則直接從所述處理線程池中分配線程進(jìn)行報文的處理。
8.根據(jù)權(quán)利要求1至7中任一項所述的方法,其特征在于,在調(diào)整所述通訊連接池的大小,調(diào)整所述報文緩沖池的大小以及調(diào)整所述處理線程池的大小之后,所述方法還包括: 更新所述通訊連接的狀態(tài)、所述緩沖池隊列中隊列空間的狀態(tài)和所述線程池隊列中線程的狀態(tài),以及更新所述通訊連接池的計數(shù)器、所述報文緩沖池的計數(shù)器和所述處理線程池的計數(shù)器。
9.根據(jù)權(quán)利要求1至7中任一項所述的方法,其特征在于,使用所述通訊連接池中的通訊連接收發(fā)所述報文,使用所述報文緩沖池緩存所述報文以及使用所述處理線程池中的線程處理所述報文包括: 接收到所述外部系統(tǒng)的連接后,判斷所述通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執(zhí)行與所述外部系統(tǒng)之間的報文收發(fā);如果不存在可使用的通訊連接,則建立新的通訊連接; 判斷所述報文緩沖池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配所述可使用的隊列空間存儲所述通訊連接收發(fā)的報文;如果不存在可使用的隊列空間,則對所述報文緩沖池中的緩沖池隊列的深度進(jìn)行擴(kuò)充或建立新的緩沖池隊列; 在所述報文緩沖池向所述處理線程池推送報文之后,判斷所述處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配所述可使用的線程處理所述報文緩沖池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于, 在使用所述通訊連接池中的通訊連接收發(fā)所述報文之后,將使用的通訊連接歸還到所述通訊連接池中; 在使用所述報文緩沖池緩存所述報文之后,將所述報文推送給所述處理線程池進(jìn)行報文處理,刪除所述緩沖池隊列中已被推送的報文; 在使用所述處理線程池中的線程處理所述報文之后,將使用的線程歸還到所述處理線程池中,釋放所述線程占用的資源。
11.一種報文流量控制系統(tǒng),其特征在于,包括: 建立單元,用于建立通訊連接池、報文緩沖池和處理線程池,其中,所述通訊連接池用于存儲與外部系統(tǒng)進(jìn)行報文交互的通訊連接;所述報文緩沖池用于存儲所述通訊連接收發(fā)的報文;所述處理線程池用于存儲處理所述報文的線程; 檢測單元,用于實時檢測所述通訊連接池、所述報文緩沖池和所述處理線程池的當(dāng)前使用情況; 調(diào)整單元,用于根據(jù)所述通訊連接池的當(dāng)前使用情況調(diào)整所述通訊連接池的大小,根據(jù)所述報文緩沖池的當(dāng)前使用情況調(diào)整所述報文緩沖池的大小以及根據(jù)所述處理線程池的當(dāng)前使用情況調(diào)整所述處理線程池的大??; 控制單元,用于使用所述通訊連接池中的通訊連接收發(fā)所述報文,使用所述報文緩沖池緩存所述報文以及使用所述處理線程池中的線程處理所述報文。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述建立單元包括: 第一讀取模塊,用于在系統(tǒng)初始化時讀取所述通訊連接池的配置參數(shù),其中,所述通訊連接池的配置參數(shù)包括:連接類型、所述通訊連接池的初始最大值和所述通訊連接池的初始最小值,所述連接類型包括:消息隊列MQ、傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議TCP/IP、超文本傳輸協(xié)議/安全超文本傳輸協(xié)議HTTP/HTTPS和文件傳輸協(xié)議/安全文件傳輸協(xié)議FTP/SFTP ; 第一建立模塊,用于根據(jù)所述通訊連接池的配置參數(shù)建立對應(yīng)于不同連接類型的通訊連接池,其中,所述通訊連接池的深度為所述通訊連接池的初始最小值。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述建立單元包括: 第二讀取模塊,用于在系統(tǒng)初始化時讀取所述報文緩沖池的配置參數(shù),其中,所述報文緩沖池的配置參數(shù)包括:所述報文緩沖池的初始最大值、所述報文緩沖池的初始最小值和所述報文緩沖池的清理時間; 第二建立模塊,用于根據(jù)所述報文緩沖池的配置參數(shù)建立緩沖池隊列,構(gòu)成所述報文緩沖池,其中,所述緩沖池隊列的深度為所述報文緩沖池的初始最小值。
14.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述建立單元包括: 第三讀取模塊,用于在系統(tǒng)初始化時讀取所述處理線程池的配置參數(shù),其中,所述處理線程池的配置參數(shù)包括:所述處理線程池的初始最大值、所述處理線程池的初始最小值和所述處理線程池的清理時間; 第三建立模塊,用于根據(jù)所述處理線程池的配置參數(shù)建立線程池隊列,構(gòu)成所述處理線程池,其中,所述線程池隊列的深度為所述處理線程池的初始最小值。
15.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于, 所述檢測單元包括: 第一獲取模塊,用于獲取所述通訊連接池的調(diào)節(jié)參數(shù)和所述通訊連接池中通訊連接的當(dāng)前使用情況,其中,所述通訊連接池的調(diào)節(jié)參數(shù)包括:連接類型、所述通訊連接池調(diào)節(jié)的第一上限閾值和第一下限閾值,所述通訊連接的當(dāng)前使用情況包括:所述通訊連接池的深度、已使用的通訊連接數(shù)和未使用的通訊連接數(shù); 第一比較模塊,用于比較所述已使用的通訊連接數(shù)以及所述第一上限閾值和所述第一下限閾值; 所述調(diào)整單元包括: 第一調(diào)整模塊,用于在所述已使用的通訊連接數(shù)大于等于所述第一上限閾值的情況下,對所述通訊連接池進(jìn)行擴(kuò)充;在所述已使用的通訊連接數(shù)小于所述第一下限閾值的情況下,對所述通訊連接池中未使用的通訊連接進(jìn)行回收,直到所述通訊連接池中的通訊連接數(shù)等于所述第一下限閾值; 第一分配模塊,用于在所述已使用的通訊連接數(shù)大于等于所述第一下限閾值且小于所述第一上限閾值的情況下,直接從所述通訊連接池中分配通訊連接進(jìn)行報文的收發(fā)。
16.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于, 所述檢測單元包括: 第二獲取模塊,用于獲取所述報文緩沖池的調(diào)節(jié)參數(shù)和所述報文緩沖池中緩沖池隊列的當(dāng)前使用情況,其中,所述報文緩沖池的調(diào)節(jié)參數(shù)包括:所述報文緩沖池調(diào)節(jié)的第二上限閾值和第二下限閾值,所述緩沖池隊列的當(dāng)前使用情況包括:所述緩沖池隊列的深度、已使用的隊列空間數(shù)和未使用的隊列空間數(shù); 第二比較模塊,用于比較所述已使用的隊列空間數(shù)以及所述第二上限閾值和所述第二下限閾值; 所述調(diào)整單元包括: 第二調(diào)整模塊,用于在所述已使用的隊列空間數(shù)大于等于所述第二上限閾值的情況下,對所述報文緩沖池進(jìn)行擴(kuò)充;在所述已使用的隊列空間數(shù)小于所述第二下限閾值的情況下,對所述報文緩沖池中未使用的隊列空間進(jìn)行回收,直到所述報文緩沖池中的隊列空間數(shù)等于所述第二下限閾值; 第二分配模塊,用于在所述已使用的隊列空間數(shù)大于等于所述第二下限閾值且小于所述第二上限閾值的情況下,直接從所述報文緩沖池中分配隊列空間進(jìn)行報文的緩存。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于, 所述檢測單元包括:第三獲取模塊,用于獲取所述處理線程池的調(diào)節(jié)參數(shù)和所述處理線程池中線程池隊列的當(dāng)前使用情況,其中,所述處理線程池的調(diào)節(jié)參數(shù)包括:所述處理線程池調(diào)節(jié)的第三上限閾值和第三下限閾值,所述線程池隊列的當(dāng)前使用情況包括:所述線程池隊列的深度、已使用的線程數(shù)和未使用的線程數(shù); 第三比較模塊,用于比較所述已使用的線程數(shù)以及所述第三上限閾值和所述第三下限閾值; 所述調(diào)整單元包括: 第三調(diào)整模塊,用于在所述已使用的線程數(shù)大于等于所述第三上限閾值的情況下,對所述處理線程池進(jìn)行擴(kuò)充;在所述已使用的線程數(shù)小于所述第三下限閾值的情況下,對所述處理線程池中未使用的線程進(jìn)行回收,直到所述處理線程池中的線程數(shù)等于所述第三下限閾值; 第三分配模塊,用于在所述已使用的線程數(shù)大于等于所述第三下限閾值且小于所述第三上限閾值的情況下,直接從所述處理線程池中分配線程進(jìn)行報文的處理。
18.根據(jù)權(quán)利要求11至17中任一項所述的系統(tǒng),其特征在于,所述調(diào)整單元還包括: 更新模塊,用于更新所述通訊連接的狀態(tài)、所述緩沖池隊列中隊列空間的狀態(tài)和所述線程池隊列中線程的狀態(tài),以及更新所述通訊連接池的計數(shù)器、所述報文緩沖池的計數(shù)器和所述處理線程池的計數(shù)器。
19.根據(jù)權(quán)利要求11至17中任一項所述的系統(tǒng),其特征在于,所述控制單元包括: 第一控制模塊,用于接收到所述外部系統(tǒng)的連接后,判斷所述通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執(zhí)行與所述外部系統(tǒng)之間的報文收發(fā);如果不存在可使用的通訊連接,則建立新的通訊連接; 第二控制模塊,用于判斷所述報文緩沖池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配所述可使用的隊列空間存儲所述通訊連接收發(fā)的報文;如果不存在可使用的隊列空間,則對所述報文緩沖池中的緩沖池隊列的深度進(jìn)行擴(kuò)充或建立新的緩沖池隊列; 第三控制模塊,用于在所述報文緩沖池向所述處理線程池推送報文之后,判斷所述處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配所述可使用的線程處理所述報文緩沖池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其特征在于,所述控制單元還包括: 通訊連接歸還模塊,用于在使用所述通訊連接池中的通訊連接收發(fā)所述報文之后,將使用的通訊連接歸還到所述通訊連接池中; 報文緩沖池清理模塊,用于在使用所述報文緩沖池緩存所述報文,并將所述報文推送給所述處理線程池進(jìn)行報文處理之后,刪除所述緩沖池隊列中已被推送的報文; 線程歸還模塊,用于在使用所述處理線程池中的線程處理所述報文之后,將使用的線程歸還到所述處理線程池中,釋放所述線程占用的資源。
【文檔編號】H04L12/861GK104038439SQ201410273258
【公開日】2014年9月10日 申請日期:2014年6月18日 優(yōu)先權(quán)日:2014年6月18日
【發(fā)明者】毛淑平, 李俊鋒 申請人:中國工商銀行股份有限公司