新四季網

報文流量控制方法及系統的製作方法

2023-06-11 14:25:11

報文流量控制方法及系統的製作方法
【專利摘要】本發明公開了一種報文流量控制方法及系統,該方法包括:建立通訊連接池、報文緩衝池和處理線程池;實時檢測通訊連接池、報文緩衝池和處理線程池的當前使用情況;根據通訊連接池的當前使用情況調整通訊連接池的大小,根據報文緩衝池的當前使用情況調整報文緩衝池的大小以及根據處理線程池的當前使用情況調整處理線程池的大小;使用通訊連接池中的通訊連接收發報文,使用報文緩衝池緩存報文以及使用處理線程池中的線程處理報文。建立通訊連接池、報文緩衝池和處理線程池,並分別對各個池的當前使用情況進行實時監控,自適應地調整各個池的大小,實現系統對數據通訊流量的自適應控制,避免通訊堵塞等問題。
【專利說明】報文流量控制方法及系統
【技術領域】
[0001]本發明涉及數據通訊【技術領域】,尤其涉及一種報文流量控制方法及系統。
【背景技術】
[0002]隨著信息技術的快速發展,許多企業都需要與外單位進行網絡連接和數據通訊。例如,商業銀行的跨行支付等需要與其它第三方系統進行數據報文的交互。企業在與外部系統進行數據報文通訊時,通訊方式多種多樣,常見的有消息隊列(Message Queue,簡稱MQ)、傳輸控制協議/網際網路互聯協議(Transmiss1n Control Protocol/InternetProtocol,簡稱TCP/IP (Socket))、超文本傳輸協議/安全超文本傳輸協議(HypertextTransfer Protocol/Hypertext Transfer Protocol Secure,簡稱HTTP/HTTPS)、文件傳輸協議 / 安全文件傳輸協議(File Transfer Protocol/Secure File Transfer Protocol,簡稱FTP/SFTP)等,且根據業務的時效性要求,對報文數據的處理需要實時聯機在業務系統進行處理,通過通訊處理進程(或線程)與外系統通訊,負責報文收發。
[0003]通過通訊處理進程從外部系統接收數據報文,然後由系統處理進程進行數據加工處理。在數據加工處理完成後,通過通訊處理進程將返回的數據報文發送到外部系統。在數據處理量不大的情況下,上述數據處理過程能夠很好地完成內部系統與外部系統間的數據報文交互,且通訊處理進程工作順利。但在系統數據處理量比較大時,例如,交易系統處理交易信息,特別是交易瞬時並發高峰時,由於通訊處理進程數量不能與當前要處理的報文數量相適應,容易出現通訊處理進程不能及時獲取需要接收或發送的數據報文而導致報文堵報或丟失,也可能出現通訊處理進程不能及時分配或數據報文不能及時處理而導致的系統排隊。長時間的堵報或系統排隊,容易導致系統不能對外服務甚至宕機。

【發明內容】

[0004]本發明提供了一種報文流量控制方法及系統,以至少解決現有技術中系統間進行報文交互時,報文收發高峰導致不可預知性系統堵報、處理緩慢甚至系統宕機的問題。
[0005]根據本發明的一個方面,提供了一種報文流量控制方法,包括:建立通訊連接池、報文緩衝池和處理線程池,其中,所述通訊連接池存儲與外部系統進行報文交互的通訊連接,所述報文緩衝池存儲利用所述通訊連接收發的報文,所述處理線程池存儲用於處理所述報文的線程;實時檢測所述通訊連接池、所述報文緩衝池和所述處理線程池的當前使用情況;根據所述通訊連接池的當前使用情況調整所述通訊連接池的大小,根據所述報文緩衝池的當前使用情況調整所述報文緩衝池的大小以及根據所述處理線程池的當前使用情況調整所述處理線程池的大小;使用所述通訊連接池中的通訊連接收發所述報文,使用所述報文緩衝池緩存所述報文以及使用所述處理線程池中的線程處理所述報文。
[0006]在一個實施例中,建立通訊連接池包括:在系統初始化時,讀取所述通訊連接池的配置參數,其中,所述通訊連接池的配置參數包括:連接類型、所述通訊連接池的初始最大值和所述通訊連接池的初始最小值,所述連接類型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP ;根據所述通訊連接池的配置參數建立對應於不同連接類型的通訊連接池,其中,所述通訊連接池的深度為所述通訊連接池的初始最小值。
[0007]在一個實施例中,建立報文緩衝池包括:在系統初始化時,讀取所述報文緩衝池的配置參數,其中,所述報文緩衝池的配置參數包括:所述報文緩衝池的初始最大值、所述報文緩衝池的初始最小值和所述報文緩衝池的清理時間;根據所述報文緩衝池的配置參數建立緩衝池隊列,構成所述報文緩衝池,其中,所述緩衝池隊列的深度為所述報文緩衝池的初
始最小值。
[0008]在一個實施例中,建立處理線程池包括:在系統初始化時,讀取所述處理線程池的配置參數,其中,所述處理線程池的配置參數包括:所述處理線程池的初始最大值、所述處理線程池的初始最小值和所述處理線程池的清理時間;根據所述處理線程池的配置參數建立線程池隊列,構成所述處理線程池,其中,所述線程池隊列的深度為所述處理線程池的初
始最小值。
[0009]在一個實施例中,實時檢測所述通訊連接池的當前使用情況,並根據所述通訊連接池的當前使用情況調整所述通訊連接池的大小包括:獲取所述通訊連接池的調節參數和所述通訊連接池中通訊連接的當前使用情況,其中,所述通訊連接池的調節參數包括:連接類型、所述通訊連接池調節的第一上限閾值和第一下限閾值,所述通訊連接的當前使用情況包括:所述通訊連接池的深度、已使用的通訊連接數和未使用的通訊連接數;比較所述已使用的通訊連接數以及所述第一上限閾值和所述第一下限閾值;如果所述已使用的通訊連接數大於等於所述第一上限閾值,則對所述通訊連接池進行擴充;如果所述已使用的通訊連接數小於所述第一下限閾值,則對所述通訊連接池中未使用的通訊連接進行回收,直到所述通訊連接池中的通訊連接數等於所述第一下限閾值;如果所述已使用的通訊連接數大於等於所述第一下限閾值且小於所述第一上限閾值,則直接從所述通訊連接池中分配通訊連接進行報文的收發。
[0010]在一個實施例中,實時檢測所述報文緩衝池的當前使用情況,並根據所述報文緩衝池的當前使用情況調整所述報文緩衝池的大小包括:獲取所述報文緩衝池的調節參數和所述報文緩衝池中緩衝池隊列的當前使用情況,其中,所述報文緩衝池的調節參數包括:所述報文緩衝池調節的第二上限閾值和第二下限閾值,所述緩衝池隊列的當前使用情況包括:所述緩衝池隊列的深度、已使用的隊列空間數和未使用的隊列空間數;比較所述已使用的隊列空間數以及所述第二上限閾值和所述第二下限閾值;如果所述已使用的隊列空間數大於等於所述第二上限閾值,則對所述報文緩衝池進行擴充;如果所述已使用的隊列空間數小於所述第二下限閾值,則對所述報文緩衝池中未使用的隊列空間進行回收,直到所述報文緩衝池中的隊列空間數等於所述第二下限閾值;如果所述已使用的隊列空間數大於等於所述第二下限閾值且小於所述第二上限閾值,則直接從所述報文緩衝池中分配隊列空間進行報文的緩存。
[0011]在一個實施例中,實時檢測所述處理線程池的當前使用情況,並根據所述處理線程池的當前使用情況調整所述處理線程池的大小包括:獲取所述處理線程池的調節參數和所述處理線程池中線程池隊列的當前使用情況,其中,所述處理線程池的調節參數包括:所述處理線程池調節的第三上限閾值和第三下限閾值,所述線程池隊列的當前使用情況包括:所述線程池隊列的深度、已使用的線程數和未使用的線程數;比較所述已使用的線程數以及所述第三上限閾值和所述第三下限閾值;如果所述已使用的線程數大於等於所述第三上限閾值,則對所述處理線程池進行擴充;如果所述已使用的線程數小於所述第三下限閾值,則對所述處理線程池中未使用的線程進行回收,直到所述處理線程池中的線程數等於所述第三下限閾值;如果所述已使用的線程數大於等於所述第三下限閾值且小於所述第三上限閾值,則直接從所述處理線程池中分配線程進行報文的處理。
[0012]在一個實施例中,在調整所述通訊連接池的大小,調整所述報文緩衝池的大小以及調整所述處理線程池的大小之後,所述方法還包括:更新所述通訊連接的狀態、所述緩衝池隊列中隊列空間的狀態和所述線程池隊列中線程的狀態,以及更新所述通訊連接池的計數器、所述報文緩衝池的計數器和所述處理線程池的計數器。
[0013]在一個實施例中,使用所述通訊連接池中的通訊連接收發所述報文,使用所述報文緩衝池緩存所述報文以及使用所述處理線程池中的線程處理所述報文包括:接收到所述外部系統的連接後,判斷所述通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執行與所述外部系統之間的報文收發;如果不存在可使用的通訊連接,則建立新的通訊連接;判斷所述報文緩衝池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配所述可使用的隊列空間存儲所述通訊連接收發的報文;如果不存在可使用的隊列空間,則對所述報文緩衝池中的緩衝池隊列的深度進行擴充或建立新的緩衝池隊列;在所述報文緩衝池向所述處理線程池推送報文之後,判斷所述處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配所述可使用的線程處理所述報文緩衝池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
[0014]在一個實施例中,在使用所述通訊連接池中的通訊連接收發所述報文之後,將使用的通訊連接歸還到所述通訊連接池中;在使用所述報文緩衝池緩存所述報文之後,將所述報文推送給所述處理線程池進行報文處理,刪除所述緩衝池隊列中已被推送的報文;在使用所述處理線程池中的線程處理所述報文之後,將使用的線程歸還到所述處理線程池中,釋放所述線程佔用的資源。
[0015]根據本發明的另一個方面,提供了一種報文流量控制系統,包括:建立單元,用於建立通訊連接池、報文緩衝池和處理線程池,其中,所述通訊連接池用於存儲與外部系統進行報文交互的通訊連接;所述報文緩衝池用於存儲所述通訊連接收發的報文;所述處理線程池用於存儲處理所述報文的線程;檢測單元,用於實時檢測所述通訊連接池、所述報文緩衝池和所述處理線程池的當前使用情況;調整單元,用於根據所述通訊連接池的當前使用情況調整所述通訊連接池的大小,根據所述報文緩衝池的當前使用情況調整所述報文緩衝池的大小以及根據所述處理線程池的當前使用情況調整所述處理線程池的大小;控制單元,用於使用所述通訊連接池中的通訊連接收發所述報文,使用所述報文緩衝池緩存所述報文以及使用所述處理線程池中的線程處理所述報文。
[0016]在一個實施例中,所述建立單元包括:第一讀取模塊,用於在系統初始化時讀取所述通訊連接池的配置參數,其中,所述通訊連接池的配置參數包括:連接類型、所述通訊連接池的初始最大值和所述通訊連接池的初始最小值,所述連接類型包括:MQ、TCP/IP、HTTP/HTTPS和FTP/SFTP ;第一建立模塊,用於根據所述通訊連接池的配置參數建立對應於不同連接類型的通訊連接池,其中,所述通訊連接池的深度為所述通訊連接池的初始最小值。[0017]在一個實施例中,所述建立單元包括:第二讀取模塊,用於在系統初始化時讀取所述報文緩衝池的配置參數,其中,所述報文緩衝池的配置參數包括:所述報文緩衝池的初始最大值、所述報文緩衝池的初始最小值和所述報文緩衝池的清理時間;第二建立模塊,用於根據所述報文緩衝池的配置參數建立緩衝池隊列,構成所述報文緩衝池,其中,所述緩衝池隊列的深度為所述報文緩衝池的初始最小值。
[0018]在一個實施例中,所述建立單元包括:第三讀取模塊,用於在系統初始化時讀取所述處理線程池的配置參數,其中,所述處理線程池的配置參數包括:所述處理線程池的初始最大值、所述處理線程池的初始最小值和所述處理線程池的清理時間;第三建立模塊,用於根據所述處理線程池的配置參數建立線程池隊列,構成所述處理線程池,其中,所述線程池隊列的深度為所述處理線程池的初始最小值。
[0019]在一個實施例中,所述檢測單元包括:第一獲取模塊,用於獲取所述通訊連接池的調節參數和所述通訊連接池中通訊連接的當前使用情況,其中,所述通訊連接池的調節參數包括:連接類型、所述通訊連接池調節的第一上限閾值和第一下限閾值,所述通訊連接的當前使用情況包括:所述通訊連接池的深度、已使用的通訊連接數和未使用的通訊連接數;第一比較模塊,用於比較所述已使用的通訊連接數以及所述第一上限閾值和所述第一下限閾值;所述調整單元包括:第一調整模塊,用於在所述已使用的通訊連接數大於等於所述第一上限閾值的情況下,對所述通訊連接池進行擴充;在所述已使用的通訊連接數小於所述第一下限閾值的情況下,對所述通訊連接池中未使用的通訊連接進行回收,直到所述通訊連接池中的通訊連接數等於所述第一下限閾值;第一分配模塊,用於在所述已使用的通訊連接數大於等於所述第一下限閾值且小於所述第一上限閾值的情況下,直接從所述通訊連接池中分配通訊連接進行報文的收發。
[0020]在一個實施例中,所述檢測單元包括:第二獲取模塊,用於獲取所述報文緩衝池的調節參數和所述報文緩衝池中緩衝池隊列的當前使用情況,其中,所述報文緩衝池的調節參數包括:所述報文緩衝池調節的第二上限閾值和第二下限閾值,所述緩衝池隊列的當前使用情況包括:所述緩衝池隊列的深度、已使用的隊列空間數和未使用的隊列空間數;第二比較模塊,用於比較所述已使用的隊列空間數以及所述第二上限閾值和所述第二下限閾值;所述調整單元包括:第二調整模塊,用於在所述已使用的隊列空間數大於等於所述第二上限閾值的情況下,對所述報文緩衝池進行擴充;在所述已使用的隊列空間數小於所述第二下限閾值的情況下,對所述報文緩衝池中未使用的隊列空間進行回收,直到所述報文緩衝池中的隊列空間數等於所述第二下限閾值;第二分配模塊,用於在所述已使用的隊列空間數大於等於所述第二下限閾值且小於所述第二上限閾值的情況下,直接從所述報文緩衝池中分配隊列空間進行報文的緩存。
[0021]在一個實施例中,所述檢測單元包括:第三獲取模塊,用於獲取所述處理線程池的調節參數和所述處理線程池中線程池隊列的當前使用情況,其中,所述處理線程池的調節參數包括:所述處理線程池調節的第三上限閾值和第三下限閾值,所述線程池隊列的當前使用情況包括:所述線程池隊列的深度、已使用的線程數和未使用的線程數;第三比較模塊,用於比較所述已使用的線程數以及所述第三上限閾值和所述第三下限閾值;所述調整單元包括:第三調整模塊,用於在所述已使用的線程數大於等於所述第三上限閾值的情況下,對所述處理線程池進行擴充;在所述已使用的線程數小於所述第三下限閾值的情況下,對所述處理線程池中未使用的線程進行回收,直到所述處理線程池中的線程數等於所述第三下限閾值;第三分配模塊,用於在所述已使用的線程數大於等於所述第三下限閾值且小於所述第三上限閾值的情況下,直接從所述處理線程池中分配線程進行報文的處理。
[0022]在一個實施例中,所述調整單元還包括:更新模塊,用於更新所述通訊連接的狀態、所述緩衝池隊列中隊列空間的狀態和所述線程池隊列中線程的狀態,以及更新所述通訊連接池的計數器、所述報文緩衝池的計數器和所述處理線程池的計數器。
[0023]在一個實施例中,所述控制單元包括:第一控制模塊,用於接收到所述外部系統的連接後,判斷所述通訊連接池中是否存在可使用的通訊連接;如果存在可使用的通訊連接,則分配通訊連接執行與所述外部系統之間的報文收發;如果不存在可使用的通訊連接,則建立新的通訊連接;第二控制模塊,用於判斷所述報文緩衝池中是否存在可使用的隊列空間;如果存在可使用的隊列空間,則分配所述可使用的隊列空間存儲所述通訊連接收發的報文;如果不存在可使用的隊列空間,則對所述報文緩衝池中的緩衝池隊列的深度進行擴充或建立新的緩衝池隊列;第三控制模塊,用於在所述報文緩衝池向所述處理線程池推送報文之後,判斷所述處理線程池的線程池隊列中是否存在可使用的線程;如果存在可使用的線程,則分配所述可使用的線程處理所述報文緩衝池推送的報文;如果不存在可使用的線程,則建立新的線程或建立新的線程池隊列。
[0024]在一個實施例中,所述控制單元還包括:通訊連接歸還模塊,用於在使用所述通訊連接池中的通訊連接收發所述報文之後,將使用的通訊連接歸還到所述通訊連接池中;報文緩衝池清理模塊,用於在使用所述報文緩衝池緩存所述報文,並將所述報文推送給所述處理線程池進行報文處理之後,刪除所述緩衝池隊列中已被推送的報文;線程歸還模塊,用於在使用所述處理線程池中的線程處理所述報文之後,將使用的線程歸還到所述處理線程池中,釋放所述線程佔用的資源。
[0025]通過本發明的報文流量控制方法及系統,建立通訊連接池、報文緩衝池和處理線程池,並分別對通訊連接池、報文緩衝池和處理線程池的當前使用情況進行實時監控,可以判斷出系統間報文流量的增減,根據報文流量自適應地調整通訊連接池、報文緩衝池和處理線程池的大小,通過動態調整上述參數,實現系統對數據通訊流量的自適應控制,避免系統間報文收發高峰時的通訊堵塞、丟包、處理緩慢甚至系統宕機等問題,保證了系統數據通訊的安全、穩定。
【專利附圖】

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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀