一種異步批處理調度方法及系統的製作方法
2023-07-16 12:32:06 2
一種異步批處理調度方法及系統的製作方法
【專利摘要】本發明實施例公開了異步批處理調度方法,包括:接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;當判斷所述交易處理數據量是否大於數據門限值,若為是,則分析所述異步批處理業務的業務類型;當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理。採用本發明,提供統一的批處理業務開發框架,易於開發擴展、運維、監控和異常處理,提高了批處理調度的靈活性;另外根據不同業務類型進行分發處理,不同的業務類型可以對應不同的任務處理池,有效提高了資源使用率。
【專利說明】一種異步批處理調度方法及系統
【技術領域】
[0001]本發明涉及數據處理【技術領域】,尤其涉及一種異步批處理調度方法及系統。
【背景技術】
[0002]隨著銀行業務的快速發展,業務種類、業務數量也隨之不斷增加,核心應用系統將面臨大量的批處理業務。通常,用戶可以通過終端或者電子渠道等實時觸發並完成各種金融業務,如銀行的存款、取款、轉帳、餘額查詢、公積金歸集等,該種批處理交易處理時間短,發生的業務數據能立即進入主機資料庫,數據處理系統批量處理上述業務的數據為聯機批處理業務;另外一種異步批處理業務,其業務數據待加工和處理,交易數據量大、處理時間長,如自動還款、銀行結息、生成各種會計報表等。
[0003]目前現有的批處理調度方法,後臺系統需要根據業務處理量的大小進行判斷作為聯機交易處理還是異步批處理,且異步批處理與聯機交易處理完全脫節,缺少對聯機批處理任務的管理,而且異步批處理都是根據用戶預先設定好的批處理邏輯,在某個固定的時間段進行統一執行批處理調度,缺少調度的靈活性。
【發明內容】
[0004]本發明實施例所要解決的技術問題在於,提供一種異步批處理調度方法及系統,提供統一的批處理業務開發框架,易於開發擴展、運維、監控和異常處理,解決了現有技術中批處理缺少調度靈活性的問題,另外根據不同業務類型進行分發處理,不同的業務類型可以對應不同的任務處理池,有效提高了資源使用率。
[0005]為了解決上述技術問題,本發明實施例第一方面公開了一種異步批處理調度方法,包括
[0006]接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;
[0007]判斷所述交易處理數據量是否大於數據門限值,若為是,則分析所述異步批處理業務的業務類型;
[0008]當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理。
[0009]本發明實施例第二方面公開了一種異步批處理調度系統,包括
[0010]接收模塊,接收批處理業務請求;
[0011]計算模塊,用於統計計算所述批處理業務的交易處理數據量;
[0012]判斷模塊,用於判斷所述計算模塊計算的所述交易處理數據量是否大於數據門限值;
[0013]異步分析模塊,用於當所述判斷模塊輸出為是時,分析所述異步批處理業務的業務類型;
[0014]實時調度模塊,用於當所述異步分析模塊根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;
[0015]異步調度模塊,用於當異步分析模塊根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理。
[0016]實施本發明實施例,具有如下有益效果:
[0017]通過提供統一的批量業務開發框架,易於開發擴展、運維、監控和異常處理;根據不同任務種類進行分發處理,不同的任務種類可以對應不同的任務處理池,有效提高了資源使用率;批處理任務時間段可控,對於一些對實時性要求不高的批量處理任務,通過定義預約任務,將任務放在系統空閒時段運行,以保障系統在實時交易尖峰時段有最大資源的使用權,對於一些實時要求較高的批量業務,可以不受此允許時間段的控制,進行實時調度。
【專利附圖】
【附圖說明】
[0018]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0019]圖1是本發明實施例提供的異步批處理調度方法的流程示意圖;
[0020]圖2是本發明提供的異步批處理調度方法的另一實施例的流程示意圖;
[0021]圖3-1是本發明實施例提供的異步批處理調度方法之實時調度任務的流程示意圖;
[0022]圖3-2是本發明實施例提供的異步批處理調度方法之異步調度任務的流程示意圖;
[0023]圖4是本發明實施例提供的異步批處理調度方法之實時調度方法的流程示意圖;
[0024]圖5是本發明實施例提供的異步批處理調度方法之異步調度方法的流程示意圖;
[0025]圖6是本發明實施例提供的異步批處理調度方法之預約調度方法的流程示意圖;
[0026]圖7是本發明實施例提供的異步批處理調度系統示意圖;
[0027]圖8是本發明實施例提供的批處理調度系統示意圖;
[0028]圖9是本發明實施例提供的實時調度模塊示意圖;
[0029]圖10是本發明實施例提供的異步調度模塊示意圖;
[0030]圖11是本發明實施例提供的預約任務模塊示意圖。
【具體實施方式】
[0031]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0032]需要說明的是,在本發明實施例中使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本發明。在本發明實施例和所附權利要求書中所使用的單數形式的「一種」、「所述」和「該」也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語「和/或」是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。
[0033]參見圖1,是本發明實施例提供的異步批處理調度方法的流程示意圖,該方法包括:
[0034]步驟3100:接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;
[0035]具體地,接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;
[0036]批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0037]批處理的業務特點為:(1) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件。
[0038]步驟3102:判斷所述交易處理數據量是否大於數據門限值的結果為是時,則分析所述異步批處理業務的業務類型;
[0039]具體地,數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷。
[0040]當所述交易處理數據量大於所述數據門限值時,登記所述批處理業務為異步批處理業務,將所述批處理業務的交易上下文保存到資料庫,等到異步任務調度主控進行輪訓調度執行;異步批處理的業務類型包含但不限於帳戶結息、登記簿、日結單、公積金匯繳、生產各種報表、批量文件業務、大報文傳輸業務等。
[0041]步驟3104:當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理;
[0042]具體地,可以預先設置登記簿、生產各種報表等業務為實時調度任務,可以預先設置帳戶結息、日結單、公積金匯繳、批量文件業務、大報文傳輸業務等為異步調度任務;分析步驟3102中所述異步批處理業務的業務類型,當業務類型為登記簿或者生產各種報表或者其他預先設置的實時調度任務類型,則登記所述異步批處理業務為實時調度任務;實時調度任務主要是針對業務處理量比較少的業務,可以將所述異步批處理交易模擬成聯機交易,支持聯機等待異步處理的返回結果;分析步驟3102中所述異步批處理業務的業務類型,當業務類型為帳戶結息或者日結單或者公積金匯繳或者其他預先設置的異步調度任務類型,則登記所述異步批處理業務為異步調度任務;異步調度任務主要針對業務處理量較大的業務,將所述異步批處理業務存儲於內存中,等待任務調度主控程序進行輪訓查詢並執行。
[0043]另外,異步批處理業務的處理數據量可能會比較大,處理耗時會較長,在處理時,採用異步業務處理模式,即發起方準備好數據並觸發業務處理之後即返回,並不一直等待業務處理結束。
[0044]參見圖2,是本發明提供的異步批處理調度方法的另一實施例的流程示意圖,該方法包括:
[0045]步驟3200:接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;
[0046]具體地,接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;
[0047]批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0048]批處理的業務特點為:(1) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件。
[0049]步驟3202:判斷所述交易處理數據量是否大於數據門限值;
[0050]具體地,數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或者所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷。
[0051]步驟3204:分析所述異步批處理業務的業務類型;
[0052]具體地,當步驟3202判斷所述交易處理數據量是否大於數據門限值的結果為是時,登記所述批處理業務為異步批處理業務,將所述批處理業務的交易上下文保存到資料庫,等到異步任務調度主控進行輪訓調度執行;異步批處理的業務類型包含但不限於帳戶結息、登記簿、日結單、公積金匯繳、生產各種報表、批量文件業務、大報文傳輸業務等。
[0053]步驟3206:當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理;
[0054]具體地,可以預先設置登記簿、生產各種報表等業務為實時調度任務,可以預先設置帳戶結息、日結單、公積金匯繳、批量文件業務、大報文傳輸業務等為異步調度任務;分析步驟3204中所述異步批處理業務的業務類型,當業務類型為登記簿或者生產各種報表或者其他預先設置的實時調度任務類型,則登記所述異步批處理業務為實時調度任務;實時調度任務主要是針對業務處理量比較少的業務,可以將所述異步批處理交易模擬成聯機交易,支持聯機等待異步處理的返回結果;分析步驟3204中所述異步批處理業務的業務類型,當業務類型為帳戶結息或者日結單或者公積金匯繳或者其他預先設置的異步調度任務類型,則登記所述異步批處理業務為異步調度任務;異步調度任務主要針對業務處理量較大的業務,將所述異步批處理業務存儲於內存中,等待任務調度主控程序進行輪訓查詢並執行。
[0055]另外,異步批處理業務的處理數據量可能會比較大,處理耗時會較長,在處理時,採用異步業務處理模式,即發起方準備好數據並觸發業務處理之後即返回,並不一直等待業務處理結束。
[0056]步驟3208:對所述批處理業務進行聯機批處理;
[0057]具體地,當步驟3202判斷所述交易處理數據量是否大於數據門限值的結果為否時,登記所述批處理業務為聯機批處理業務,採用聯機批處理模式對所述聯機批處理業務進行數據處理,即通過聯機交易的服務註冊信息進行調度執行對應的聯機批處理,聯機批處理業務處理時間較短,支持同步返回。
[0058]參見圖3-1,是本發明實施例提供的異步批處理調度方法之實時調度任務的流程示意圖,可理解的,在圖2所述的步驟S206中,當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理之後,該方法包括:
[0059]步驟S300:對所述異步批處理業務進行實時調度處理時,創建相應的實時調度任務;
[0060]具體地,當圖2中步驟S206根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理,在對所述異步批處理業務實時調度處理之前,創建所述異步批處理業務相應的實時調度任務。
[0061]步驟S302:判斷實時調度任務池是否滿載;
[0062]具體地,在步驟S300創建所述異步批處理業務相應的實時調度任務,然後將所述實時調度任務分配到實時調度任務池之前,判斷所述實時調度任務池是否滿載。
[0063]步驟S304:拒絕調度執行所述實時調度任務;
[0064]具體地,當步驟S302判斷實時調度任務池是否滿載的結果為是時,則直接拒絕調度執行本條實時調度任務,並返回系統繁忙消息。
[0065]步驟S306:將所述實時調度任務分配到相應的實時調度任務池;
[0066]具體地,當步驟S302判斷實時調度任務池是否滿載的結果為否時,則將本條實時調度任務分配到相應的實時調度任務池,等待調度執行。
[0067]參見圖3-2,是本發明實施例提供的異步批處理調度方法之異步調度任務的流程示意圖,可理解的,在圖2所述的步驟S206中,當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理之後,該方法包括:
[0068]步驟308,對所述異步批處理業務進行異步調度處理時,創建相應的異步調度任務;
[0069]具體地,當步驟S206根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理,在對所述異步批處理業務異步調度處理之前,創建所述異步批處理業務相應的異步調度任務。
[0070]創建所述異步批處理業務首先需要對異步調度任務進行定義,所述異步調度任務定義是管理預約任務,可以將預約任務保存到異步調度任務定義表中;異步調度任務生成調度主控會根據任務定義表中的數據來生成執行任務。另外,對已經定義生產的異步調度任務,可以通過異步調度任務註冊類進行管理,即通過資料庫表註冊異步任務完成後,進行調度並立即執行異步任務。
[0071]異步調度任務註冊過程具體如下:根據每個異步調度任務類型調用相應的doAddTask方法(其中doAddTask方法用於添加異步任務),可以往異步調度任務數據表和參數表寫入任務相關信息;然後對於需要即刻執行的任務可以調用doExecTask方法(用於添加並執行異步任務),該方法會先將狀態為執行中的任務息插入任務息表和參數表,並可以通過對應的任務執行器(TaskHandler)直接調度執行該任務。
[0072]可理解的是,上述異步調度任務註冊過程只作為一種可能的實施方式,本發明實施例中的異步調度任務註冊過程的步驟除了上述實施方式外還可以為其它實現方式,此處不做限定。
[0073]步驟S310:判斷異步調度任務池是否滿載;
[0074]具體地,在步驟S308創建所述異步批處理業務相應的異步調度任務,然後將所述異步調度任務分配到異步調度任務池之前,判斷異步調度任務池是否滿載。
[0075]步驟S312:拒絕處理或者由發起線程處理或者忽略處理;
[0076]異步調度任務池管理一個線程池和等待隊列,當步驟S310判斷異步調度任務池是否滿載的結果為是時,拒絕處理所述異步調度任務,將所述異步調度任務保存在等待線性隊列中,等待異步任務池不再滿載時,將本條異步批處理任務存儲於異步調度任務池中,等待調度執行;或者通過發起線程來處理所述異步調度任務,所述異步批處理任務不被存儲於異步調度任務池等待下次調度執行,而是由發起調度執行的發起線程隊列進行直接處理;或者忽略處理所述異步調度任務,忽略所述異步批處理任務,拋棄處理。
[0077]步驟S314:將所述異步調度任務分配到相應的異步調度任務池;
[0078]具體地,當步驟S310判斷異步調度任務池是否滿載的結果為否時,則將本條異步調度任務分配到相應的異步調度任務池,等待調度執行。
[0079]參見圖4,是本發明實施例提供的異步批處理調度方法之實時調度方法的流程示意圖,該方法包括:
[0080]步驟S400:接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;
[0081]具體地,接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;
[0082]批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0083]批處理的業務特點為:(I) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件。
[0084]步驟S402:當判斷所述交易處理數據量是否大於數據門限值的結果為是時,則分析所述異步批處理業務的業務類型;
[0085]具體地,數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或者所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷。
[0086]當所述交易處理數據量大於所述數據門限值時,登記所述批處理業務為異步批處理業務,將所述批處理業務的交易上下文保存到資料庫,等到異步任務調度主控進行輪訓調度執行;異步批處理的業務類型包含但不限於帳戶結息、登記簿、日結單、公積金匯繳、生產各種報表、批量文件業務、大報文傳輸業務等。
[0087]步驟S404:當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;
[0088]具體地,分析步驟S402中所述異步批處理業務的業務類型,當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理,所述實時調度任務包含但不限於登記簿、生產各種報表等;實時調度任務主要是針對業務處理量比較少的業務,支持聯機等待異步處理的返回結果,可以將所述異步批處理交易模擬成聯機交易。
[0089]步驟S406:創建相應的實時調度任務;
[0090]具體地,當步驟S404根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理,在對所述異步批處理業務實時調度處理之前,創建所述異步批處理業務相應的實時調度任務。
[0091]創建所述異步批處理業務首先可以對實時調度任務進行定義,所述實時調度任務定義是管理預約任務,可以將預約任務保存到實時調度任務定義表中;實時調度任務生成調度主控會根據實時調度任務定義表中的數據來生成執行任務。另外,對已經定義生產的實時調度異步任務,通過實時調度任務註冊類進行管理,即通過資料庫表註冊實時調度任務完成後,進行調度並立即執行實時調度任務。
[0092]實時調度任務註冊過程具體如下:可以根據每個實時調度任務類型調用相應的doAddTask方法(其中doAddTask方法用於添加異步任務),可以往實時調度任務數據表和參數表寫入任務相關信息;然後對於需要即刻執行的任務可以調用doExecTask方法(用於添加並執行異步任務),該方法會先將狀態為執行中的任務信息插入到任務信息表和參數表中,並可以通過對應的任務執行器(TaskHandler)直接調度執行該任務。
[0093]可理解的是,上述實時調度任務註冊過程只作為一種可能的實施方式,本發明實施例中的實時調度任務註冊過程的步驟除了上述實施方式外還可以為其它實現方式,此處不做限定。
[0094]步驟S408:判斷實時調度任務池是否滿載;
[0095]具體地,在步驟S406創建所述異步批處理業務相應的實時調度任務,然後將所述實時調度任務分配到實時調度任務池之前,判斷所述實時調度任務池是否滿載。
[0096]步驟S410:拒絕調度執行該筆實時調度任務;
[0097]具體地,當步驟S408判斷實時調度任務池是否滿載的結果為是時,則直接拒絕調度執行本條實時調度任務,並返回系統繁忙消息。
[0098]步驟S412:將所述實時調度任務分配到相應的實時調度任務池;
[0099]具體地,當步驟S408判斷實時調度任務池是否滿載的結果為否時,則將本條實時調度任務分配到相應的實時調度任務池,等待調度執行。
[0100]步驟S414:對所述實時調度任務進行優先級別設定;
[0101]具體地,根據所述實時調度任務池中的實時調度任務的業務類型,進行優先級別設定,例如,設定登記簿的優先級別設定為一級,將生產各種報表的優先級別設定為二級,一級優先級高於二級優先級。
[0102]步驟S416:根據優先級,調度執行優先級別高的實時調度任務;
[0103]具體地,從步驟S412分配到實時調度任務池中的實時調度任務進行調度執行,調度執行時,按照實時調度任務的優先級別的高低,優先調度優先級別高的實時調度任務,例如,當實時調度任務池中包含登記簿和生成各種報表時,優先調度登記簿業務,等調度登記簿業務後,再調度執行生成各種報表業務。
[0104]實時調度任務信息可以保存在任務信息表和參數表中,可以通過任務執行器(TaskHandler)直接調度執行所述實時調度任務。另外如果需要取消正在執行的任務可以調用doCancelTask方法(用於取消任務時,需輸入執行任務的Taskid),但是正在執行的任務不能進行取消。
[0105]步驟S418:等待所述實時調度任務的返回結果,發送任務處理結果至客戶端;
[0106]具體地,doExecTaskWithResult方法可以實時等待實時調度任務的處理結果,可以用於添加並執行實時調度任務並等待返回結果,等待超時時間默認為30秒,另外也可以根據參數轉入執行另一條實時調度任務。如果調用doExecTaskWithResult方法成功,那麼返回實時調度任務的處理結果,如果調用超時則拋出運行時異常消息。
[0107]所述分配到實時調度任務池中的所述實時調度任務的業務處理量一般比較少,處理時間也相對較短,處理實時調度任務池中的所述實時調度任務時,可以在聯機交易中等待任務執行的返回結果,就算聯機交易超時了,也不會影響原任務的執行。當所述實時調度任務處理結束後,將所述批處理業務的處理結果信息可以通過消息中心發送至客戶端;所述結果信息包含但不限於接收消息的節點號,以及相關的機構用戶信息等;所述客戶端包含但不限於指定機構或者指定用戶等。
[0108]參見圖5,是本發明實施例提供的異步批處理調度方法之異步調度方法的流程示意圖,該方法包括:
[0109]步驟S500:接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;
[0110]具體地,接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;
[0111]批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0112]批處理的業務特點為:(I) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件。
[0113]步驟S502:當判斷所述交易處理數據量是否大於數據門限值的結果為是時,則分析所述異步批處理業務的業務類型;
[0114]具體地,數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或者所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷。
[0115]當所述交易處理數據量大於所述數據門限值時,登記所述批處理業務為異步批處理業務,將所述批處理業務的交易上下文保存到資料庫,等到異步任務調度主控進行輪訓調度執行;異步批處理的業務類型包含但不限於帳戶結息、登記簿、日結單、公積金匯繳、生產各種報表、批量文件業務、大報文傳輸業務等。
[0116]步驟S504:當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理;
[0117]具體地,分析步驟S502中所述異步批處理業務的業務類型,當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理,所述異步調度任務包含但不限於帳戶結息、日結單、公積金匯繳、批量文件業務、大報文傳輸業務等;異步調度任務主要針對業務處理量較大的業務,可以將所述異步批處理業務存儲於內存中,等待任務調度主控程序進行輪訓查詢並執行。
[0118]步驟3506:創建相應的異步調度任務;
[0119]具體地,當步驟3504根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理,在對所述異步批處理業務異步調度處理之前,創建所述異步批處理業務相應的異步調度任務。
[0120]創建所述異步批處理業務首先需要對異步調度任務進行定義,所述異步調度任務定義是管理預約任務,將預約任務保存到異步調度任務定義表中;異步調度任務生成調度主控會根據任務定義表中的數據來生成執行任務。另外,對已經定義生產的異步調度任務,通過異步調度任務註冊類進行管理,即通過資料庫表註冊異步任務完成後,進行調度並立即執行異步任務。
[0121]異步調度任務註冊過程具體如下:可以根據每個異步調度任務類型調用相應的己0八方法(其中(10八方法用於添加異步任務),可以往異步調度任務數據表和參數表寫入任務相關信息;然後對於需要即刻執行的任務可以調用方法(用於添加並執行異步任務),該方法會先將狀態為執行中的任務彳目息插入任務彳目息表和參數表,並可以通過對應的任務執行器直接調度執行該任務。
[0122]可理解的是,上述異步調度任務註冊過程只作為一種可能的實施方式,本發明實施例中的異步調度任務註冊過程的步驟除了上述實施方式外還可以為其它實現方式,此處不做限定。
[0123]步驟3508:判斷異步調度任務池是否滿載;
[0124]具體地,在步驟3506創建所述異步批處理業務相應的異步調度任務,然後將所述異步調度任務分配到異步調度任務池之前,判斷所述異步調度任務池是否滿載。
[0125]步驟3510:拒絕處理所述異步調度任務,或者通過發起線程來處理所述異步調度任務,或者忽略處理所述異步調度任務;
[0126]具體地,當步驟3508判斷異步調度任務池是否滿載的結果為是時,則採取以下處理方式:直接拒絕調度執行本條異步調度任務,或者通過發起線程來處理所述異步調度任務,或者忽略處理所述異步調度任務;異步調度任務池管理一個線程池和等待隊列,當異步調度任務池滿載時,直接拒絕處理所述異步調度任務,將所述異步調度任務保存在等待線性隊列中,等待異步任務池不再滿載時,將本條異步批處理任務存儲於異步調度任務池中,等待下次調度執行;或者通過發起線程來處理所述異步調度任務,所述異步批處理任務不被存儲於異步調度任務池等待後續調度執行,而是由發起調度執行的發起線程隊列進行直接處理;或者忽略處理所述異步調度任務,忽略所述異步批處理任務,拋棄處理。
[0127]步驟3512:將所述異步調度任務分配到相應的異步調度任務池;
[0128]具體地,當步驟3508判斷異步調度任務池是否滿載的結果為否時,則將本條異步調度任務分配到相應的異步調度任務池,等待調度執行。
[0129]步驟3514:對所述異步調度任務進行優先級別設定;
[0130]具體地,根據所述異步調度任務池中的異步調度任務的業務類型,進行優先級別設定,例如,異步調度任務包含但不限於帳戶結息、日結單、公積金匯繳、大報文傳輸業務等,設定帳戶結息的優先級別為一級,設定日結單的優先級別為二級,設定公積金匯繳的優先級別為三級,設定大報文傳輸業務的優先級別為四級,一級優先級最高,四級優先級最低。
[0131]可理解的是,上述優先級別設定過程只作為一種可能的實施方式,本發明實施例中的優先級別設定過程除了上述實施方式外還可以為其他實現方式,此處不做限定。
[0132]步驟S516:對所述異步調度任務進行數據切片處理,得到異步調度任務的切片數據;
[0133]具體地,調度執行所述異步調度任務時,提供大批量數據切片處理機制,將所述異步批處理業務數據進行數據切片處理,得到切片數據,提供對所述切片數據進行多線程批任務的並發處理。
[0134]數據切片與任務調度邏輯無關,主要為批任務作業中大批量切片處理提供規範和支持。數據切片機制可以包括:數據切片邏輯接口(IChunkHandlerCD)、數據切片處理接口(IChunk)和一個批量數據處理邏輯BaseChunkJob。其中,批量數據處理邏輯BaseChunkJob根據用戶傳入的IChunkHandler〈T>對象,循環獲取並處理批量數據的一個切片;記錄處理接口(IChunkHandler〈T>)負責從數據源獲取當前待處理的數據切片;數據切片處理接口(IChunk)負責提供某數據切片的處理邏輯。另外,批量數據處理邏輯BaseChunkJob是批量數據切片處理的入口類,BaseChunkJob依賴於IChunkHandler〈T>對象實現對數據切片的獲取;記錄處理接口 IChunkHandler〈T>需要開發人員實現3個方法:hasNextChunk O , nextChunk O 和 close O 方法,具體為:hasNextChunk O 返回 boolean 值,判斷數據源是否處理完畢;neXtChunk返回下一個待處理數據切片;cl0Se用於批處理完畢後關閉數據源、文件等資源。IChunk包括方法:handleData, handleDataO方法負責實現對一個切片的數據進行處理的邏輯。
[0135]可理解的是,上述數據切片設定步驟只作為一種可能的實施方式,本發明實施例中的數據切片過程除了上述實施方式外還可以為其他實現方式,此處不做限定。
[0136]步驟S518:按照優先級,調度執行所述異步調度任務,並執行所述切片數據;
[0137]具體地,異步調度任務信息可以保存在任務信息表和參數表中,可以通過任務執行器(TaskHandler)直接調度執行所述異步調度任務;另外可以通過任務調度管理器(TaskDispatch)實現任務調度管理功能,可以對定時查詢資料庫中的異步調度任務信息,獲取服務的類型、服務定位方式,進而進行調度執行。
[0138]任務調度管理器(TaskDispatch)首先可以根據預先設定好的優先級別,輪詢異步調度任務資料庫表,根據異步調度任務信息表中聲明的異步調度任務信息和參數表中提取相應參數,找到對應的本地服務,並根據服務註冊信息中的參數類型要求進行轉換映射,在配置好的異步調度任務池中進行運行,對優先級別高的異步任務進行優先調度執行。例如,異步調度任務包含但不限於帳戶結息、日結單、公積金匯繳、大報文傳輸業務等,設定帳戶結息的優先級別為一級,設定日結單的優先級別為二級,設定公積金匯繳的優先級別為三級,設定大報文傳輸業務的優先級別為四級。調度時優先調度執行帳戶結息業務,而後調度執行日結單業務,再然後調度執行公積金匯繳業務,最後待其他類型的業務都調度執行完畢後,再調度執行大報文傳輸業務。
[0139]任務執行器(TaskHandler)對需要異步執行的任務進行統一管理並執行,支持串行和並行執行兩種模式。採用線程池管理執行異步任務,限定並發線程數量,任務執行隊列達到一定數量則採取相應的執行策略(拒絕執行處理或在原線程中進行執行處理);另外如果需要取消正在執行的任務則調用doCancelTask方法(用於取消任務時,需輸入執行任務的1(1),但是正在執行的任務不能進行取消。任務執行器執行任務時,將步驟3516獲取的所述異步調度任務的切片數據,進行串行和/或並發執行處理。
[0140]可理解的是,上述任務調度管理器和執行任務器的設定過程只作為一種可能的實施方式,本發明實施例中的任務調度管理器和執行任務器的設定過程除了上述實施方式外還可以為其他實現方式,此處不做限定。
[0141]步驟3520:等待所述異步調度任務的返回結果,發送任務處理結果至客戶端;
[0142]具體地,將步驟3518中所述批處理業務的處理結果信息可以通過消息中心發送至客戶端;所述結果信息包含但不限於接收消息的節點號,以及相關的機構用戶信息等;所述客戶端包含但不限於指定機構或者指定用戶等。
[0143]參見圖6,是本發明實施例提供的異步批處理調度方法之預約調度方法的流程示意圖,該方法包括:
[0144]步驟3600:接收批處理業務請求,統計計算所述批處理業務的交易處理數據量;
[0145]具體地,接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;
[0146]批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0147]批處理的業務特點為:(1) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件。
[0148]步驟3602:當判斷所述交易處理數據量是否大於數據門限值的結果為是時,則分析所述異步批處理業務的業務類型;
[0149]具體地,數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或者所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷。
[0150]當所述交易處理數據量大於所述數據門限值時,登記所述批處理業務為異步批處理業務,將所述批處理業務的交易上下文保存到資料庫,等到異步任務調度主控進行輪訓調度執行;異步批處理的業務類型包含但不限於帳戶結息、登記簿、日結單、公積金匯繳、生產各種報表、批量文件業務、大報文傳輸業務等。
[0151]步驟3604:當根據業務類型分析出所述異步批處理業務為預約任務時,對所述預約任務根據調度時間進行調度分析;
[0152]具體地,分析步驟3602中所述異步批處理業務的業務類型,當根據業務類型分析出所述異步批處理業務為預約任務時,對所述預約任務根據調度時間進行調度分析;所述預約任務包含但不限於公積金匯繳業務、大報文傳輸業務、日結單等;根據批處理時間段的調度處理,可以將所述預約任務分為周期性任務和定時執行任務。
[0153]步驟3606:當根據調度時間將所述預約任務分為周期性任務,對所述周期性任務進行調度時間間隔設置;
[0154]具體地,當步驟3604中根據調度時間將所述預約任務分為周期性任務時,對所述周期性任務進行調度時間間隔設置;所述周期性任務包含但不限於公積金匯繳業務等;所述時間間隔可以設定為5min或者Ih或者其他的任意時長的時間間隔。
[0155]步驟S608:對所述異步批處理業務相隔所述調度時間間隔進行周期性輪訓調度執行;
[0156]具體地,根據步驟S606中所設置的時間間隔,在間隔所述調度時間間隔對所述預約任務進行周期性輪訓調度執行,例如,每隔5min進行輪訓調度執行公積金匯繳業務,或者每隔Ih進行輪訓調度執行公積金匯繳業務,或者設定的其他時長的時間間隔進行輪訓調度執行預約任務。
[0157]步驟S610:當根據調度時間將所述預約任務分為定時執行任務,對所述定時執行任務進行調度允許時間段設置;
[0158]具體地,當步驟S604中根據調度時間將所述預約任務分為定時執行任務時,對所述定時執行任務進行允許時間段設置;所述定時執行任務包含但不限於大報文傳輸業務、日結單等;所述允許時間段可以設定為(14:00-15:00)或者(20:00-22:00)或者其他的任意允許時間段。
[0159]步驟S612:對所述異步批處理在所述允許時間段內進行定時業務執行處理;
[0160]具體地,根據步驟S610中所設置的調度允許時間段,在所述允許時間段內對所述預約任務進行定時調度執行,例如,在(14:00-16:00)時間段對報文傳輸業務進行實時調度處理,或者在(20:00-22:00)時間段內對日結單業務進行實時調度處理等。
[0161]步驟S614:發送任務處理結果至客戶端;
[0162]具體地,將步驟S608或者步驟S612中所述批處理業務的處理結果信息可以通過消息中心發送至客戶端;所述結果信息包含但不限於接收消息的節點號,以及相關的機構用戶信息等;所述客戶端包含但不限於指定機構或者指定用戶等。
[0163]參見圖7,是本發明實施例提供的異步批處理調度系統示意圖,其中,如圖7所示,該異步批處理調度系統70包括:接收模塊700、計算模塊702、判斷模塊704、異步分析模塊706、實時調度模塊708、異步調度模塊710,其中
[0164]接收模塊700用於接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0165]批處理的業務特點為:(I) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件;
[0166]計算模塊702用於統計計算接收模塊700接收的所述批處理業務的交易處理數據量,所述批處理業務的交易處理數據量包含所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的類型等;
[0167]判斷模塊704用於判斷所述計算模塊702計算的所述交易處理數據量是否大於數據門限值;所述數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷;
[0168]異步分析模塊706用於當所述判斷模塊704輸出為是時,分析所述異步批處理業務的業務類型;所述批處理業務的類型包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0169]實時調度模塊708用於當所述異步分析模塊706根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;
[0170]異步調度模塊710用於當異步分析模塊706根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理。
[0171]參見圖8,是本發明實施例提供的批處理調度系統示意圖,其中,如圖8所示,批處理調度系統80包括:接收模塊800、計算模塊802、判斷模塊804、異步分析模塊806、聯機處理模塊808、實時調度模塊810、異步調度模塊812、預約任務模塊814、優先管理模塊816、消息推送模塊818,其中
[0172]接收模塊800用於接收批處理業務的請求,可以是前端設備傳送的批處理業務,也可以是接收其他系統傳送的批處理業務,也可以是通過終端或各種電子渠道實時觸發的聯機事務,來完成各種金融事務的處理;批處理業務包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0173]批處理的業務特點為:(1) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件;
[0174]計算模塊802用於統計計算接收模塊800接收的所述批處理業務的交易處理數據量,所述批處理業務的交易處理數據量包含所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的類型等;
[0175]判斷模塊804用於判斷所述計算模塊802計算的所述交易處理數據量是否大於數據門限值;所述數據門限值可以根據以下條件之一或者相互自由組合進行設置:處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的類型等,將所述交易處理數據量與所述數據門限值進行比較判斷;
[0176]異步分析模塊806用於當所述判斷模塊804輸出為是時,分析所述異步批處理業務的業務類型;所述批處理業務的類型包含但不限於各種代收付、公積金歸集、匯繳、帳戶結息、登記簿處理、日結單、生產各種報表、批量文件業務、大報文傳輸業務、保險公司的保單受理、保費續繳、理賠等;
[0177]聯機處理模塊808用於當所述判斷模塊804輸出為否時,對所述異步批處理業務進行聯機交易處理,聯機處理模塊808處理的所述異步批處理業務即為聯機批處理業務;聯機批處理業務的交易數據量一般比較小,處理時間也相對較短;聯機批處理業務對日間實時性要求較高,支持等待聯機交易返回結果。聯機交易模塊808處理的聯機業務包含但不限於各種代收付、保險公司的保單受理、保費續繳、理賠等;
[0178]聯機批處理業務的業務特點為:(1) 一次業務請求處理的業務數據為批量(多筆)業務數據;(2)業務處理的數據源不僅僅是單筆交易數據報文,有可能是數據文件;
[0179]實時調度模塊810當所述異步分析模塊806根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;分析異步分析模塊806中所述異步批處理業務的業務類型,當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理,所述實時調度任務包含但不限於登記簿、生產各種報表等;實時調度任務主要是針對業務處理量比較少的業務,可以支持聯機等待異步處理的返回結果,可以將所述異步批處理交易模擬成聯機交易;
[0180]異步調度模塊812用於當異步分析模塊806根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理;分析異步分析模塊806中所述異步批處理業務的業務類型,當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理,所述異步調度任務包含但不限於帳戶結息、日結單、公積金匯繳、批量文件業務、大報文傳輸業務等;異步調度任務主要針對業務處理量較大的業務,可以將所述異步批處理業務存儲於內存中,可以等待任務調度主控程序進行輪訓查詢並執行;
[0181]預約任務模塊814用於當異步分析模塊806根據業務類型分析出所述異步批處理業務為預約任務時,對所述異步批處理業務進行預約任務處理;預約任務根據調度時間,可以將任務分為周期性任務和定時執行任務;執行周期性任務,需對所述周期性任務進行調度時間間隔設置,可以對所述異步批處理業務相隔所述調度時間間隔進行周期性輪訓調度執行;執行定時執行任務時,需對所述定時執行任務進行調度允許時間段設置,可以對所述異步批處理在所述允許時間段內進行定時業務執行處理;
[0182]優先管理模塊816用於當所述實時調度模塊810對所述異步批處理業務進行實時調度處理或者當所述異步調度模塊812對所述異步批處理業務進行異步調度處理時,根據所述異步批處理業務的業務類型和/或業務需要,可以對所述異步批處理業務進行優先級別設定;
[0183]消息推送模塊818用於在所述實時調度模塊810對所述異步批處理業務進行實時調度處理結束後或者在所述異步調度模塊812對所述異步批處理業務進行異步調度處理結束後,或者在所述預約任務模塊814對所述異步批處理業務進行異步調度處理結束後,可以通過異步消息隊列向客戶端推送任務處理結果。
[0184]參見圖9,是本發明實施例提供的實時調度模塊示意圖,其中,如圖9所示,實時調度模塊810包括:實時任務創建單元8100、實時任務池單元8102、實時主控單元8104、實時滿載單元8106、數據切片單元8108、數據並發單元8110,其中
[0185]實時任務創建單元8100,用於根據所述異步批處理業務創建相應的實時調度任務;創建所述異步批處理業務首先需要對實時調度任務進行定義,所述實時調度任務定義是管理預約任務,將預約任務保存到實時調度任務定義表中;實時調度任務生成調度主控會根據實時調度任務定義表中的數據來生成執行任務。另外,對已經定義生產的實時調度異步任務,通過實時調度任務註冊類進行管理,即通過資料庫表註冊實時調度任務完成後,進行調度並立即執行實時調度任務;
[0186]實時調度任務註冊過程具體如下:可以根據每個實時調度任務類型調用相應的己0八方法(其中(10八方法用於添加異步任務),可以往實時調度任務數據表和參數表寫入任務相關信息;然後對於需要即刻執行的任務可以調用方法(用於添加並執行異步任務),該方法會先將狀態為執行中的任務信息插入到任務信息表和參數表中,並可以通過對應的任務執行器直接調度執行該任務;
[0187]實時任務池單元8102,用於將所述實時任務創建單元8100創建的所述實時調度任務分配到相應的實時調度任務池;
[0188]實時主控單元8104,用於將實時任務池單元8102分配到所述實時調度任務池中的所述實時調度任務進行實時調度處理,並將所述異步批處理業務的處理結果進行實時返回;
[0189]實時滿載單元8106,用於判斷實時任務池單元8102中所述的實時調度任務池是否滿載,當判斷出實時調度任務池滿載,則拒絕調度執行所述實時調度任務;
[0190]數據切片單元8108,用於將所述異步批處理業務的數據進行數據切片處理,得到所述異步批處理業務的切片數據;
[0191]數據切片與任務調度邏輯無關,主要為批任務作業中大批量切片處理提供規範和支持。數據切片機制可以包括:數據切片邏輯接口(IChunkHandlerCD)、數據切片處理接口(IChunk)和一個批量數據處理邏輯BaseChunkJob。其中,批量數據處理邏輯BaseChunkJob根據用戶傳入的IChunkHandler〈T>對象,循環獲取並處理批量數據的一個切片;記錄處理接口(IChunkHandler〈T>)負責從數據源獲取當前待處理的數據切片;數據切片處理接口(IChunk)負責提供某數據切片的處理邏輯。另外,批量數據處理邏輯BaseChunkJob是批量數據切片處理的入口類,BaseChunkJob依賴於IChunkHandler〈T>對象實現對數據切片的獲取;記錄處理接口 IChunkHandler〈T>需要開發人員實現3個方法:hasNextChunk O , nextChunk O 和 close方法,具體為:hasNextChunk O 返回 boolean 值,判斷數據源是否處理完畢;neXtChunk返回下一個待處理數據切片;cl0Se用於批處理完畢後關閉數據源、文件等資源。IChunk包含方法:handleData, handleDataO方法負責實現對一個切片的數據進行處理的邏輯;
[0192]數據並發單元8110,用於對所述數據切片單元得到的所述切片數據進行多線程批任務的並發處理。
[0193]參見圖10,是本發明實施例提供的異步調度模塊示意圖,其中,如圖10所示,異步調度模塊812包括:異步任務創建單元8120、異步任務池單元8122、異步主控單元8124、異步滿載單元8126、數據切片單元8128、數據並發單元81210,其中
[0194]異步任務創建單元8120,用於根據所述異步批處理業務創建相應的異步調度任務;創建所述異步批處理業務首先需要對異步調度任務進行定義,所述異步調度任務定義是管理預約任務,將預約任務保存到異步調度任務定義表中;異步調度任務生成調度主控會根據任務定義表中的數據來生成執行任務。另外,對已經定義生產的異步調度任務,通過異步調度任務註冊類進行管理,即通過資料庫表註冊異步任務完成後,進行調度並立即執行異步任務。
[0195]異步調度任務註冊過程具體如下:可以根據每個異步調度任務類型調用相應的doAddTask方法(其中doAddTask方法用於添加異步任務),可以往異步調度任務數據表和參數表寫入任務相關信息;然後對於需要即刻執行的任務可以調用doExecTask方法(用於添加並執行異步任務),該方法會先將狀態為執行中的任務息插入任務息表和參數表,並可以通過對應的任務執行器(TaskHandler)直接調度執行該任務。
[0196]異步任務池單元8122,用於將所述異步任務創建單元8120創建的所述實時調度任務分配到相應的實時調度任務池;
[0197]異步主控單元8124,用於將異步任務池單元8122分配到所述異步調度任務池中的所述異步調度任務進行異步調度處理,並將所述異步批處理業務的處理結果進行返回;
[0198]異步滿載單元8126,用於判斷異步調度任務池是否滿載,
[0199]當判斷出異步調度任務池滿載,則採取以下處理方式:直接拒絕調度執行本條異步調度任務,或者通過發起線程來處理所述異步調度任務,或者忽略處理所述異步調度任務;異步調度任務池管理一個線程池和等待隊列,當異步調度任務池滿載時,直接拒絕處理所述異步調度任務,將所述異步調度任務保存在等待線性隊列中,等待異步任務池不再滿載時,將本條異步批處理任務存儲於異步調度任務池中,等待下次調度執行;或者通過發起線程來處理所述異步調度任務,所述異步批處理任務不被存儲於異步調度任務池等待後續調度執行,而是由發起調度執行的發起線程隊列進行直接處理;或者忽略處理所述異步調度任務,忽略所述異步批處理任務,拋棄處理;
[0200]數據切片單元8128,用於將所述異步批處理業務的數據進行數據切片處理,得到所述異步批處理業務的切片數據;
[0201]數據切片與任務調度邏輯無關,主要為批任務作業中大批量切片處理提供規範和支持。數據切片機制可以包括:數據切片邏輯接口數據切片處理接口(101111110和一個批量數據處理邏輯8%60!皿0匕其中,批量數據處理邏輯88860111111^013根據用戶傳入的對象,循環獲取並處理批量數據的一個切片;記錄處理接口負責從數據源獲取當前待處理的數據切片;數據切片處理接口(101111110負責提供某數據切片的處理邏輯。另外,批量數據處理邏輯88860111111^013是批量數據切片處理的入口類,081860111111^013依賴於1011111紐對象實現對數據切片的獲取;記錄處理接口需要開發人員實現3個方法:1188^6X1:0111111^ , 116X1:0111111^ 和。1?386 方法,具體為返回 1^0016811 值,判斷數據源是否處理完畢皿「)返回下一個待處理數據切片$1086用於批處理完畢後關閉數據源、文件等資源。1(?皿^包含方法:112111(1160211:21, 11811(1161)81:8方法負責實現對一個切片的數據進行處理的邏輯。
[0202]數據並發單元81210,用於對所述數據切片單元得到的所述切片數據進行多線程批任務的並發處理。
[0203]參見圖11,是本發明實施例提供的預約任務模塊示意圖,其中,如圖11所示,預約任務模塊814包括:周期性任務單元8140、定時任務單元8142,其中
[0204]周期性任務單元8140,用於執行周期性任務,首先需對所述周期性任務進行調度時間間隔設置,對所述異步批處理業務相隔所述調度時間間隔進行周期性輪訓調度執行;所述周期性任務包含但不限於公積金匯繳業務等;所述時間間隔可以設定為501!!或者11!或者其他的任意時長的時間間隔。根據周期性任務單元8140所設置的時間間隔,在間隔所述調度時間間隔對所述預約任務進行周期性輪訓調度執行,例如,每隔501!!進行輪訓調度執行公積金匯繳業務,或者每隔1卜進行輪訓調度執行公積金匯繳業務,或者設定的其他時長的時間間隔進行輪訓調度執行預約任務。
[0205]定時任務單元8142,用於執行定時執行任務,首先需對所述定時執行任務進行調度允許時間段設置,對所述異步批處理在所述允許時間段內進行定時業務執行處理;所述定時執行任務包含但不限於大報文傳輸業務、日結單等;所述允許時間段可以設定為(14:00-15:00)或者(20:00-22:00)或者其他的任意允許時間段。根據定時任務單元8142所設置的調度允許時間段,在所述允許時間段內對所述預約任務進行定時調度執行,例如,在(14:00-16:00)時間段對報文傳輸業務進行實時調度處理,或者在(20:00-22:00)時間段內對日結單業務進行實時調度處理等。
[0206]綜上所述,通過實施本發明實施例,提供一種異步批處理調度方法和系統,本發明實施例進一步具有以下有益效果:
[0207]1、本發明提供了一種異步批處理調度方法,通過提供統一的批量業務開發框架,封裝公共邏輯,制定開發規範,統一聯機業務和批處理業務的處理方式,易於開發擴展、運維、監控和異常處理;
[0208]2、根據業務類型的不同,異步批處理調度系統對不同類型的業務進行分發處理,不同的任務種類可以對應不同的任務處理池,有效提高了資源使用率;
[0209]3、實現批處理進行時間段控制,通過參數化配置,對於一些對實時性要求不高的批量處理任務,通過定義預約任務,將任務放在系統空閒時段運行,以保障系統在實時交易尖峰時段有最大資源的使用權;對於一些實時要求較高的批量業務,可以不受此允許時間段的控制,進行實時調度。
[0210]4、提供數據切片機制,支持對批量業務數據的分片處理,並對業務的分片數據提供並發執行處理,加快批量業務處理的速度;
[0211]5、提供了統一的異步處理機制,使任務受理與批量處理分離,任務受理之後通過異步機制實現任務處理,減少對系統資源的佔用;同時支持任務異步處理的聯機返回等待,可以支持聯機和異步處理的相互轉換。
[0212]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過電腦程式來指令相關的硬體來完成,所述的程序可存儲於一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光碟、只讀存儲記憶體(0651(1-01117 1611101*7,^01)或隨機存儲記憶體^00688161110等。
[0213]以上所揭露的僅為本發明一種較佳實施例而已,當然不能以此來限定本發明之權利範圍,本領域普通技術人員可以理解實現上述實施例的全部或部分流程,並依本發明權利要求所作的等同變化,仍屬於發明所涵蓋的範圍。
【權利要求】
1.一種異步批處理調度方法,其特徵在於,包括: 接收批處理業務請求,統計計算所述批處理業務的交易處理數據量; 判斷所述交易處理數據量是否大於數據門限值,若為是,則分析所述異步批處理業務的業務類型; 當根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理;當根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理。
2.如權利要求1所述的方法,其特徵在於,所述判斷所述交易處理數據量是否大於數據門限值之後還包括: 若為否,則對所述批處理業務進行聯機批處理。
3.如權利要求1所述的方法,其特徵在於,所述數據門限值根據以下至少一項條件進行設置: 處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的種類。
4.如權利要求1所述的方法,其特徵在於,所述對所述異步批處理業務進行實時調度處理包括: 根據所述異步批處理業務創建相應的實時調度任務; 將所述實時調度任務分配到相應的實時調度任務池; 將所述分配到所述實時調度任務池的所述實時調度任務進行實時調度處理,並將所述異步批處理業務的處理結果進行實時返回。
5.如權利要求1或4所述的方法,其特徵在於,所述對所述異步批處理業務進行實時調度處理包括: 當判斷出實時調度任務池滿載,則拒絕調度執行所述實時調度任務。
6.如權利要求1所述的方法,其特徵在於,所述對所述異步批處理業務進行異步調度處理包括: 根據所述異步批處理業務創建相應的異步調度任務; 將所述異步調度任務分配到相應的異步調度任務池; 將所述分配到所述異步調度任務池的所述異步調度任務進行異步調度處理,並將所述異步批處理業務的處理結果進行返回。
7.如權利要求1或6所述的方法,其特徵在於,所述對所述異步批處理業務進行異步調度處理包括: 當判斷出異步調度任務池滿載,則拒絕處理所述異步調度任務,或者通過發起線程來處理所述異步調度任務,或者忽略處理所述異步調度任務。
8.如權利要求1所述的方法,其特徵在於,所述對所述異步批處理業務進行實時調度處理或者對所述異步批處理業務進行異步調度處理,包括: 將所述異步批處理業務的數據進行數據切片處理,得到所述異步批處理業務的切片數據; 對所述切片數據進行多線程批任務的並發處理。
9.如權利要求1所述的方法,其特徵在於,方法還包括: 根據所述異步批處理業務的業務類型和/或業務需要,對所述異步批處理業務進行優先級別設定; 所述對所述異步批處理業務進行實時調度處理或者對所述異步批處理業務進行異步調度處理包括: 按照所述設定的優先級別,優先對優先級別高的異步批處理業務進行調度處理。
10.如權利要求1所述的方法,其特徵在於,方法還包括: 當根據業務類型分析出所述異步批處理業務為預約任務時,對所述異步批處理業務進行預約任務處理; 所述對所述異步批處理業務進行預約任務處理包括: 當根據調度時間將所述預約任務分為周期性任務時,對所述周期性任務進行調度時間間隔設置,對所述異步批處理業務相隔所述調度時間間隔進行周期性輪訓調度執行; 當根據調度時間將所述預約任務分為定時執行任務時,對所述定時執行任務進行調度允許時間段設置,對所述異步批處理在所述允許時間段內進行定時業務執行處理。
11.如權利要求1所述的方法,其特徵在於,方法還包括: 在所述對所述異步批處理業務進行實時調度處理結束後或者對所述異步批處理業務進行異步調度處理結束後,通過異步消息隊列向客戶端推送任務處理結果。
12.—種異步批處理調度系統,其特徵在於,包括: 接收模塊,接收批處理業務請求; 計算模塊,用於統計計算所述批處理業務的交易處理數據量; 判斷模塊,用於判斷所述計算模塊計算的所述交易處理數據量是否大於數據門限值; 異步分析模塊,用於當所述判斷模塊輸出為是時,分析所述異步批處理業務的業務類型; 實時調度模塊,用於當所述異步分析模塊根據業務類型分析出所述異步批處理業務為實時調度任務時,對所述異步批處理業務進行實時調度處理; 異步調度模塊,用於當異步分析模塊根據業務類型分析出所述異步批處理業務為異步調度任務時,對所述異步批處理業務進行異步調度處理。
13.如權利要求12所述的系統,其特徵在於,系統還包括: 聯機處理模塊,用於當所述判斷模塊輸出為否時,對所述批處理業務進行聯機批處理。
14.如權利要求12所述的系統,其特徵在於,所述數據門限值根據以下至少一項條件進行設置: 處理所述批處理業務的設備性能、所述批處理業務的複雜度、所述批處理業務的數據量或所述批處理業務的種類等。
15.如權利要求12所述的系統,其特徵在於,所述實時調度模塊包括: 實時任務創建單元,用於根據所述異步批處理業務創建相應的實時調度任務; 實時任務池單元,用於將所述實時任務創建單元創建的所述實時調度任務分配到相應的實時調度任務池; 實時主控單元,用於將分配到所述實時調度任務池中的所述實時調度任務進行實時調度處理,並將所述異步批處理業務的處理結果進行實時返回。
16.如權利要求12或15所述的系統,其特徵在於,所述實時調度模塊包括: 實時滿載單元,用於當判斷出實時調度任務池滿載,則拒絕調度執行所述實時調度任務。
17.如權利要求12所述的系統,其特徵在於,所述異步調度模塊包括: 異步任務創建單元,用於根據所述異步批處理業務創建相應的異步調度任務; 異步任務池單元,用於將所述異步任務創建單元創建的所述異步調度任務分配到相應的異步調度任務池; 異步主控單元,用於將分配到所述異步調度任務池中的所述異步調度任務進行異步調度處理,並將所述異步批處理業務的處理結果進行返回。
18.如權利要求12或17所述的系統,其特徵在於,所述異步調度模塊還包括: 異步滿載單元,用於當判斷出異步調度任務池滿載,則拒絕處理所述異步調度任務,或者通過發起線程來處理所述異步調度任務,或者忽略處理所述異步調度任務。
19.如權利要求12所述的系統,其特徵在於,所述實時調度模塊或所述異步調度模塊包括: 數據切片單元,用於將所述異步批處理業務的數據進行數據切片處理,得到所述異步批處理業務的切片數據; 數據並發單元,用於對所述數據切片單元得到的所述切片數據進行多線程批任務的並發處理。
20.如權利要求12所述的系統,其特徵在於,系統還包括: 優先級管理模塊,用於當所述實時調度模塊對所述異步批處理業務進行實時調度處理或者當所述異步調度模塊對所述異步批處理業務進行異步調度處理時,根據所述異步批處理業務的業務類型和/或業務需要,對所述異步批處理業務進行優先級別設定; 所述實時調度模塊對所述異步批處理業務進行實時調度處理或者所述異步調度模塊對所述異步批處理業務進行異步調度處理包括: 按照所述優先級管理模塊設定的優先級別,優先對優先級別高的異步批處理業務進行調度處理。
21.如權利要求12所述的系統,其特徵在於,系統還包括: 預約任務模塊,用於當異步分析模塊根據業務類型分析出所述異步批處理業務為預約任務時,對所述異步批處理業務進行預約任務處理; 所述預約任務模塊包括: 周期性任務單元,用於當所述預約任務模塊根據調度時間將所述預約任務分為周期性任務時,對所述周期性任務進行調度時間間隔設置,對所述異步批處理業務相隔所述調度時間間隔進行周期性輪訓調度執行; 定時任務單元,用於當所述預約任務模塊根據調度時間將所述預約任務分為定時執行任務時,對所述定時執行任務進行調度允許時間段設置,對所述異步批處理在所述允許時間段內進行定時業務執行處理。
22.如權利要求12所述的系統,其特徵在於,系統還包括: 消息推送模塊,用於在所述實時調度模塊對所述異步批處理業務進行實時調度處理結束後或者在所述異步調度模塊對所述異步批處理業務進行異步調度處理結束後,通過異步消息隊列向客戶端推送任務處理結果。
【文檔編號】G06F9/50GK104407922SQ201410594848
【公開日】2015年3月11日 申請日期:2014年10月29日 優先權日:2014年10月29日
【發明者】伍輝, 吳澤童, 羅新仁, 周小偉 申請人:中國建設銀行股份有限公司