批量進程處理方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種批量進程處理方法和系統(tǒng),其中,該方法包括:獲取預先為待處理批量進程分配的應用服務器的IP地址;在確定獲取的IP地址與本臺應用服務器的IP地址相同的情況下,在本臺應用服務器上啟動所述待處理批量進程。本發(fā)明解決了現有技術中,在數據結構的層面劃分批量進程而導致的系統(tǒng)實現起來比較復雜,且可擴展性不高的技術問題,達到了有效降低系統(tǒng)復雜度,提高批量進程處理效率的技術效果。
【專利說明】批量進程處理方法和系統(tǒng)
【技術領域】
[0001] 本發(fā)明涉及數據處理【技術領域】,特別涉及一種批量進程處理方法和系統(tǒng)。
【背景技術】
[0002] 在大型的企業(yè)數據處理系統(tǒng)中,經常會涉及到對批量進程的處理,在高可用性方 面主要有以下兩種方式:冷備模式和負載均衡模式。
[0003] 在冷備模式下,只有一臺應用服務器處于運行狀態(tài):
[0004] 1)如果同一時段僅啟動一個批量進程,則通過操作系統(tǒng)進程查看指令,先查看該 批量進程是否存在,如不存在則啟動該批量進程,否則不啟動該批量進程;
[0005] 2)如果同時啟動多個批量進程,則設定每個批量進程之間處理的業(yè)務數據不同, 艮P,需要提前在數據結構上規(guī)劃每個批量進程分別處理哪些數據,例如按照地區(qū)號進行劃 分,不同的批量進程處理不同地區(qū)的數據。
[0006] 在負載均衡模式下,多臺應用服務器處于運行狀態(tài):
[0007] 1)如果同一時段僅啟動一個批量進程,則只能通過人工方式確認只在一臺應用服 務器上運行了該批量進程;
[0008] 2)如果同時啟動多個批量進程,則可以通過參數化配置確保在不同應用服務器上 運行的同一批量進程所處理的業(yè)務數據不同。
[0009] 上述無論是在冷備模式下,還是在負載均衡模式下,如果同一時段僅啟動一個批 量進程都需要人工進行控制,沒有在系統(tǒng)層面實現硬控制,存在一定的風險。如果同時啟動 多個批量進程,則需要在系統(tǒng)設計階段就確定批量進程的分區(qū)模型,提煉數據分區(qū)的要素 并確定分區(qū)的規(guī)則,以便批量進程可以根據該規(guī)則進行相應的設置使得不同的批量進程處 理不同的數據、或者是不同應用服務器上的同一批量進程處理不同的數據。因此,對于同時 啟動多個批量進程的方式,必然會導致系統(tǒng)設計變得相對復雜,實現起來比較繁瑣,如果后 續(xù)增加批量進程就需要在應用層面做相應的改動,擴展性和靈活性不高。
【發(fā)明內容】
[0010] 本發(fā)明實施例提供了一種批量進程處理方法,以達到有效提高批量進程的處理效 率的目的,該方法包括:
[0011] 獲取預先為待處理批量進程分配的應用服務器的IP地址;
[0012] 在確定獲取的IP地址與本臺應用服務器的IP地址相同的情況下,在本臺應用服 務器上啟動所述待處理批量進程。
[0013] 在一個實施例中,在本臺應用服務器上啟動所述待處理批量進程,包括:
[0014] 確定在本臺應用服務器上是否已經啟動了所述待處理批量進程;
[0015] 如果沒有啟動,則在本臺應用服務器上啟動所述待處理批量進程。
[0016] 在一個實施例中,獲取預先為待處理批量進程分配的應用服務器的IP地址,包 括:
[0017] 從批量進程控制表中獲取為所述待處理批量進程分配的應用服務器的IP地址, 其中,所述批量進程表中記錄有至少一個批量進程的進程名和為記錄的批量進程分配的應 用服務器的IP地址。
[0018] 在一個實施例中,從批量進程控制表中獲取為所述待處理批量進程分配的應用服 務器的IP地址,包括:
[0019] 確定所述批量進程控制表中是否記錄有所述待處理批量進程的進程名;
[0020] 如果有,則直接從所述批量進程控制表中獲取為所述待處理批量進程分配的應用 服務器的IP地址,否則,則將所述待處理批量進程的進程名寫入所述批量進程控制表中, 并將本臺應用服務器的IP地址作為為所述待處理批量進程分配的應用服務器的IP地址。
[0021] 在一個實施例中,在本臺應用服務器上啟動所述待處理批量進程,包括:
[0022] 本臺應用服務器的流量控制單元從所述批量進程控制表中獲取預先為所述待處 理批量進程設置的每次發(fā)送數據報文的筆數限值;
[0023] 本臺應用服務器的數據分發(fā)單元按照獲取的限值將所述待處理批量進程的數據 報文發(fā)送至系統(tǒng)中各應用服務器;
[0024] 系統(tǒng)中各應用服務器對接收到的數據報文進行處理。
[0025] 在一個實施例中,本臺應用服務器的數據分發(fā)單元按照獲取的限值將所述待處理 批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器,包括:
[0026] 所述數據分發(fā)單元采用輪詢的方式將從所述待處理批量進程的數據報文發(fā)送至 系統(tǒng)中各應用服務器;
[0027] 或者,所述數據分發(fā)單元采用隨機分發(fā)的方式將從所述待處理批量進程的數據報 文發(fā)送至系統(tǒng)中各應用服務器。
[0028] 在一個實施例中,在本臺應用服務器的數據分發(fā)單元按照獲取的限值將所述待處 理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器之前,還包括:
[0029] 本臺應用服務器的數據獲取單元掃描所述待處理批量進程的業(yè)務數據;
[0030] 所述數據獲取單元將掃描到的業(yè)務數據封裝為包括包頭和包體的數據報文。
[0031] 本發(fā)明實施例還提供了一種批量進程處理系統(tǒng),位于一臺應用服務器中,以達到 有效提高批量進程的處理效率的目的,該系統(tǒng)包括:
[0032] IP地址獲取單元,用于獲取預先為待處理批量進程分配的應用服務器的IP地址;
[0033] 進程處理單元,用于在確定獲取的IP地址與本臺應用服務器的IP地址相同的情 況下,在本臺應用服務器上啟動所述待處理批量進程。
[0034] 在一個實施例中,所述進程處理單元具體用于在所述IP地址獲取單元確定獲取 的IP地址與本臺應用服務器的IP地址相同之后,確定在本臺應用服務器上是否已經啟動 了所述待處理批量進程,如果沒有啟動,則在本臺應用服務器上啟動所述待處理批量進程。
[0035] 在一個實施例中,所述IP地址獲取單元具體用于從批量進程控制表中獲取為所 述待處理批量進程分配的應用服務器的IP地址,其中,所述批量進程表中記錄有至少一個 批量進程的進程名和為記錄的批量進程分配的應用服務器的IP地址。
[0036] 在一個實施例中,所述IP地址獲取單元具體用于確定所述批量進程控制表中是 否記錄有所述待處理批量進程的進程名;如果有,則直接從所述批量進程控制表中獲取為 所述待處理批量進程分配的應用服務器的IP地址,否則,則將所述待處理批量進程的進程 名寫入所述批量進程控制表中,并將本臺應用服務器的IP地址作為為所述待處理批量進 程分配的應用服務器的IP地址。
[0037] 在一個實施例中,所述進程處理單元包括:
[0038] 流量控制單元,用于從所述批量進程控制表中獲取預先為所述待處理批量進程設 置的每次發(fā)送數據報文的筆數限值;
[0039] 數據分發(fā)單元,用于按照獲取的限值將所述待處理批量進程的數據報文發(fā)送至系 統(tǒng)中各應用服務器;
[0040] 所述應用服務器,用于對接收到的數據報文進行處理。
[0041] 在一個實施例中,所述數據分發(fā)單元具體用于采用輪詢的方式將從所述待處理批 量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器;或者,采用隨機分發(fā)的方式將從所述待處 理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器。
[0042] 在一個實施例中,上述系統(tǒng)還包括:
[0043] 數據獲取單元,用于在所述數據分發(fā)單元按照獲取的限值將所述待處理批量進程 的數據報文發(fā)送至系統(tǒng)中各應用服務器之前,掃描所述待處理批量進程的業(yè)務數據,并將 掃描到的業(yè)務數據封裝為包括包頭和包體的數據報文。
[0044] 在本發(fā)明實施例中,為每個待處理的批量進程設置了一個處理應用服務器,在執(zhí) 行的過程中,只需要判斷為該批量進程進行分配的應用服務器的IP地址是否與本臺應用 服務器的IP地址相同,如果相同,那么就通過本臺應用服務器對該批量進行處理,通過這 種方式無需操作人員人工進行配置,應用服務器自己可以實現對批量進行處理,且對批量 進行的配置比較簡單,解決了現有技術中,在數據結構的層面劃分批量進程而導致的系統(tǒng) 實現起來比較復雜,且可擴展性不高的技術問題,達到了有效降低系統(tǒng)復雜度,提高批量進 程處理效率的技術效果。
【專利附圖】
【附圖說明】
[0045] 此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,并不 構成對本發(fā)明的限定。在附圖中:
[0046] 圖1是本發(fā)明實施例的批量進程處理方法的方法流程圖;
[0047] 圖2是本發(fā)明實施例的批量進程處理系統(tǒng)的結構框圖;
[0048] 圖3是本發(fā)明實施例的后臺業(yè)務報文掃描裝置的結構框圖;
[0049] 圖4是本發(fā)明實施例的SOCKET通訊客戶端裝置的結構框圖;
[0050] 圖5是本發(fā)明實施例的SOCKET通訊服務監(jiān)聽裝置的結構框圖;
[0051] 圖6是本發(fā)明實施例的聯機業(yè)務報文處理裝置的結構框圖;
[0052] 圖7是本發(fā)明實施例的批量進程處理方法的具體方法流程圖;
[0053] 圖8是本發(fā)明實施例的批量進程處理裝置的結構框圖。
【具體實施方式】
[0054] 為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,下面結合實施方式和附圖,對 本發(fā)明做進一步詳細說明。在此,本發(fā)明的示意性實施方式及其說明用于解釋本發(fā)明,但并 不作為對本發(fā)明的限定。
[0055] 在本發(fā)明實施例中提供了一種批量進程處理方法,如圖1所示,包括以下步驟:
[0056] 步驟101 :獲取預先為待處理批量進程分配的應用服務器的IP地址;
[0057] 步驟102 :在確定獲取的IP地址與本臺應用服務器的IP地址相同的情況下,在本 臺應用服務器上啟動所述待處理批量進程。
[0058] 在本發(fā)明實施例中,為每個待處理的批量進程設置了一個處理應用服務器,在執(zhí) 行的過程中,只需要判斷為該批量進程進行分配的應用服務器的IP地址是否與本臺應用 服務器的IP地址相同,如果相同,那么就通過本臺應用服務器對該批量進行處理,通過這 種方式無需操作人員人工進行配置,應用服務器自己可以實現對批量進行處理,且對批量 進行的配置比較簡單,解決了現有技術中,在數據結構的層面劃分批量進程而導致的系統(tǒng) 實現起來比較復雜,且可擴展性不高的技術問題,達到了有效降低系統(tǒng)復雜度,提高批量進 程處理效率的技術效果。
[0059] 為了避免在同一應用服務器上重復運行同一批量進程,在確定獲取的IP地址與 本機(即上述的本臺應用服務器)的IP地址相同之后,還可以包括:確定本機是否已經啟 動了該待處理批量進程;如果是,則產生提示信息,用于指示所述待處理批量進程已在本機 運行;如果不是,則在本機上啟動該待處理批量進程。即,在確定本機的IP地址與該待處理 批量進程對應的IP地址相同的時候,再確定一下該批量進程是否已在該應用服務器上啟 動,如果已經啟動,則提示:該批量進程已在本機啟動,請勿重復啟動,從而可以有效避免進 程被重復啟動,造成資源浪費的同時,也會產生數據的混亂。
[0060] 上述步驟101 :獲取預先為待處理批量進程分配的應用服務器的IP地址,包括:從 批量進程控制表中獲取為所述待處理批量進程分配的應用服務器的IP地址,其中,所述批 量進程表中記錄有至少一個批量進程的進程名和為記錄的批量進程分配的應用服務器的 IP地址。即,設定一個批量進程控制表,在這個批量進程控制表中記錄有各個批量進程的進 程名,以及為各個批量進程分配的應用服務器的IP地址,在對某個批量進程進行處理的時 候,只需要從這個批量進程控制表中查找其對應的IP地址,便可以確定當前應用服務器是 否為該批量進程的處理應用服務器,這樣可以有效實現對批量進程的統(tǒng)一管理。
[0061] 考慮到有些時候可能有些批量進程并未在批量進程控制表中登記,因此,在查找 的時候也就查不到它所對應的IP地址,為了使得這些新加入的批量進程,或者未進行登記 的批量進程也可以被處理,在實施的過程中,在從批量進程控制表中獲取為該待處理批量 進程分配的應用服務器的IP地址之前,還包括:確定所述批量進程控制表中是否記錄有所 述待處理批量進程的進程名;如果有,則直接從所述批量進程控制表中獲取為所述待處理 批量進程分配的應用服務器的IP地址,否則,則將所述待處理批量進程的進程名寫入所述 批量進程控制表中,并將本臺應用服務器的IP地址作為為所述待處理批量進程分配的應 用服務器的IP地址。即,如果在批量進程登記表中未找到該待處理的批量進程,則將該批 量進程添加到批量進程登記表中,將本機的IP地址設置為該待處理批量進程的IP地址。
[0062] 具體的,在本機上啟動所述待處理批量進程,可以包括:本臺應用服務器的流量控 制單元從所述批量進程控制表中獲取預先為所述待處理批量進程設置的每次發(fā)送數據報 文的筆數限值;本臺應用服務器的數據分發(fā)單元按照獲取的限值將所述待處理批量進程的 數據報文發(fā)送至系統(tǒng)中的各個應用服務器;系統(tǒng)中的各個應用服務器對接收到的數據報文 進行處理。在批量進程控制表中不僅有批量進程名、進程對應的IP地址,還有為批量進程 設置的筆數限值,這主要是為了避免由于后臺批量進程發(fā)送到前臺的應用服務器的報文數 量太多而導致前臺無法及時響應而超時的問題設定的,可以有效的進行流量的控制,例如 每次發(fā)送100筆,間歇1分鐘,這些參數都可以預先進行設定,在執(zhí)行的時候按照設定的參 數執(zhí)行即可。
[0063] 因為系統(tǒng)中不僅有一臺應用服務器,因此為了實現數據報文的均衡處理,在按照 獲取的限值將所述待處理批量進程的數據報文發(fā)送至本臺應用服務器的時候,可是采用輪 詢的方式,或者是采用隨機的方式將從所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中的各 個應用服務器,這兩種方式總大方向上看都是可以實現數據報文被均衡的發(fā)送給各個應用 服務器進行處理的目的。
[0064] 具體實施時,在本臺應用服務器的數據分發(fā)單元按照獲取的限值將所述待處理批 量進程的數據報文發(fā)送至系統(tǒng)中的各個應用服務器之前,還可以包括:本臺應用服務器的 數據獲取單元掃描所述待處理批量進程的業(yè)務數據;數據獲取單元將掃描到的業(yè)務數據封 裝為包括包頭和包體的數據報文,上述生成的數據報文便是要發(fā)送到應用服務器的數據報 文。
[0065] 下面結合一個具體的實施例對上述的批量進程的處理方法進行說明,然而值得注 意的是,該具體實施例僅是為了更好地說明本發(fā)明,并不構成對本發(fā)明的不當限定。
[0066] 在本例中提供了一種簡易的、可動態(tài)擴展的、易于維護的、前后臺分離的批量進程 的并發(fā)控制方法,該方法不僅可以實現批量進程的并發(fā)控制,而且可以在應用層面實現負 載均衡。
[0067] 在該方法中,將對批量進程的處理拆分為兩個部分:一部分是業(yè)務數據掃描進程; 另一部分是處理業(yè)務功能的服務。通過批量進程控制表將批量進程的進程名與IP地址進 行綁定,通過數據庫來控制每個批量進程只可在一臺應用服務器上啟動;在進程啟動時,判 斷該批量進程是否已經啟動來控制在同一臺應用服務器上只啟動了一個該批量進程。在確 定在該應用服務器上啟動該批量進程之后,將掃描得到的該批量進程的數據均勻的分發(fā)給 系統(tǒng)中的各個應用服務器上進行處理,從而有效實現了各應用服務器的負載均衡。
[0068] 在確定的應用服務器上對批量進程的數據報文進行處理可以是通過如圖2所示 的系統(tǒng)實現的,該系統(tǒng)包括:S0CKET通訊客戶端裝置2、S0CKET通訊服務端監(jiān)聽裝置3、聯機 業(yè)務報文處理裝置4,其中,SOCKET表示套接字,用于描述IP地址和端口,是一個通信鏈的 句柄,下面對該系統(tǒng)進行具體說明。
[0069] 后臺業(yè)務報文掃描裝置1,在該應用服務器上啟動批量進程后,就需要對該批量 進程對應的數據報文進行處理,后臺業(yè)務報文掃描裝置1就是用于進行數據報文掃描的。 通訊客戶端裝置2,主要是作為SOCKET通訊客戶端主動與其他應用服務器建立通訊連接。 SOCKET通訊服務端監(jiān)聽裝置3,用于啟動監(jiān)聽服務監(jiān)聽后臺批量進程發(fā)過來的業(yè)務報文信 息。聯機業(yè)務報文處理裝置4,用于根據業(yè)務邏輯處理批量進程的數據報文。
[0070] 上述后臺業(yè)務報文掃描裝置1通過掃描后臺數據庫獲取待處理批量進程的數據 報文后,將數據報文通過SOCKET通訊客戶端裝置2與SOCKET通訊服務端監(jiān)聽裝置3之間 建立的通訊連接將數據報文以自定義的報文格式發(fā)送至SOCKET通訊服務端監(jiān)聽裝置3, SOCKET通訊服務端監(jiān)聽裝置3將數據報文提交給聯機業(yè)務報文處理裝置4進行處理。
[0071] 上述的后臺業(yè)務報文掃描裝置1包括:如圖3所示,包括:配置處理裝置10、進程 并發(fā)檢查裝置11、數據掃描裝置12、通訊數據包組包裝置13,其中:
[0072] 配置處理裝置10主要用于參數的配置、保持和獲取,配置處理裝置10可以進一步 包括配置編輯單元、配置保存單元和配置讀取單元,其中,配置編輯單元用于編輯所需的配 置,包括應用服務器集群IP、SOCKET通訊服務監(jiān)聽端口號、后臺掃描流量控制筆數、后臺批 量進程一次獲取的報文數、后臺批量進程休眠時間等信息,配置保存單元包含配置保存文 件和批量進程控制表,配置讀取單元用于讀取配置。
[0073] 進程并發(fā)檢查裝置11,用于對批量進程的并發(fā)控制,包含:應用服務器進程配置 檢查單元、本機服務進程檢查單元,其中,應用服務器進程配置檢查單元通過批量進程控制 表記錄該批量進程的進程名以及應用服務器的IP來確保一個批量進程僅在一臺應用服務 器上啟動,本機服務進程檢查單元通過操作系統(tǒng)進程檢查方法確保在本機上僅啟動了一次 該批量進程。
[0074] 數據掃描裝置12,用于獲取待處理批量進程的數據報文,包含:數據獲取單元、流 量控制單元、數據分發(fā)單元,其中,數據獲取單元通過批量進程控制表獲取待處理批量進程 的鍵值信息,為避免通訊數據量太大,只獲取批量進程的鍵值信息,并將其發(fā)送至聯機服務 的SOCKET通訊服務監(jiān)聽裝置3,然后由聯機業(yè)務報文處理裝置4根據業(yè)務報文的鍵值獲取 需要的字段信息。流量控制單元,用于進行流量控制,為避免由于批量進程發(fā)送到前臺聯機 服務的報文數太多,而導致前臺不能及時響應而超時,該單元需要進行流量控制,例如:每 次發(fā)送100筆,間歇1秒鐘,這些參數都可以通過配置處理裝置10進行配置、保存和獲取。 數據分發(fā)單元是實現負載均衡的重要單元,通過該單元可以將數據報文均勻的分發(fā)至各應 用服務器,在該裝置中確定將掃描出的數據報文按照設定的發(fā)送筆數發(fā)送至本機的哪一臺 應用服務器,例如可以通過隨機的策略或輪詢的策略分發(fā)數據報文,所謂隨機的策略就是 將設定的筆數的數據報文通過隨機算法產生的結果發(fā)往某一臺應用服務器,而輪詢的策略 則是逐個應用服務器輪詢發(fā)送。無論是隨機算法或是輪詢策略,每臺應用服務器獲得任務 的機會都是均等的,發(fā)送的報文筆數都是一樣的,因此數據分發(fā)單元保證了多臺應用服務 器得到的負載是完全均衡的,從而實現了負載均衡。
[0075] 通訊數據組包裝置13,包含:通訊數據包頭組織單元和通訊數據包體組織單元, 這兩個單元分別用于根據批量進程與聯機服務通訊協議組成通訊包頭和通訊包體。其中, 通訊包頭包括:版本號和數據長度,通訊包體包括:數據體,這主要是按照協議進行設定即 可。
[0076] 上述的SOCKET通訊客戶端裝置2主要用于實例化SOCKET通訊客戶端對象并與 SOCKET通訊服務監(jiān)聽裝置3建立通訊連接,如圖4所示,包括:信息讀取單元20和SOCKET 通訊連接單元21。其中:
[0077] 信息讀取單元20,用于獲取配置的聯機服務監(jiān)聽端口號、SOCKET通訊超時時間等 信息,SOCKET通訊連接單元21用于向聯機SOCKET通訊服務端發(fā)起通訊連接。
[0078] 上述的SOCKET通訊服務監(jiān)聽裝置3用于監(jiān)聽SOCKET通訊客戶端裝置2的通訊服 務連接并獲取數據報文,然后將數據報文提交至聯機業(yè)務報文處理裝置4進行處理,如圖5 所示,包括:信息讀取單元30和SOCKET通訊監(jiān)聽服務單元31。其中,信息讀取單元30用于 獲取配置的聯機服務監(jiān)聽端口號等信息,SOCKET通訊監(jiān)聽服務單元31用于在啟動SOCKET 監(jiān)聽服務后監(jiān)聽批量進程的連接請求。
[0079] 上述的聯機業(yè)務報文處理裝置4用于對數據報文進行處理,是實現業(yè)務邏輯處理 的核心裝置,如圖6所示,包括:通訊數據包解析裝置40、報文處理線程池裝置41、和業(yè)務報 文處理裝置42。通訊數據包解析裝置40根據自定義通訊協議解析數據包,包括通訊數據包 頭解析裝置和通訊數據包體解析裝置,分別用于解析包頭和包體。報文處理線程池裝置41 用于對于批量進程進行初始化、調度、管理以及監(jiān)控,包括線程池調度管理單元和線程監(jiān)控 單元,線程池調度管理單元用于對線程進行初始化,負責對線程進行調度,按照配置控制線 程池的大小,釋放空閑的線程,線程監(jiān)控單元負責對線程池中的工作線程進行監(jiān)控,判斷是 否存在僵死線程,如果存在,則進行預警提示。
[0080] 在SOCKET通訊客戶端裝置2和SOCKET通訊服務監(jiān)聽裝置3進行通訊的過程中, 系統(tǒng)還考慮了完善的異常處理策略,主要的策略是通過設置報文的中間狀態(tài)來解決通訊超 時或其他異常。例如:在后臺業(yè)務報文掃描裝置1獲取到"待處理"的數據報文后,在將該 數據報文通過SOCKET通訊客戶端裝置2發(fā)送前先將該數據報文更新為"后臺正處理"的中 間狀態(tài),SOCKET通訊服務監(jiān)聽裝置3在獲取到該數據報文后先將報文更新為"聯機正處理" 狀態(tài),然后回應SOCKET通訊客戶端裝置2。如果這個回應超時即SOCKET通訊客戶端裝置2 和SOCKET通訊服務監(jiān)聽裝置3之間的通訊超時,則后臺業(yè)務報文掃描裝置1會將該數據報 文更新回"待處理"狀態(tài),為防止實際SOCKET通訊服務監(jiān)聽裝置3已經將報文提交給聯機 業(yè)務報文處理裝置4進行處理了,后臺業(yè)務報文掃描裝置1在將報文退回到"待處理"狀態(tài) 時需要判斷該報文是否處于"后臺正處理"狀態(tài)。
[0081] 基于上述的批量進程處理的系統(tǒng),本例中還給出了一種批量進程的處理方法,如 圖7所示,包括以下步驟:
[0082] 步驟701 :啟動批量進程時先通過配置處理裝置10獲取相關配置,包括:應用服務 器集群IP、SOCKET通訊服務監(jiān)聽端口號、后臺掃描流量控制筆數、后臺批量進程一次獲取 的報文數、后臺批量進程休眠時間等配置項;
[0083] 步驟702 :查詢數據庫批量進程控制表,獲取該批量進程表中記錄的該批量集成 的進程名、啟動該進程的應用服務器的IP等信息,在該表中可以將批量進程的進程名作為 主鍵;
[0084] 步驟703 :進程并發(fā)檢查裝置11在獲取到步驟702中查詢到的數據后,判斷批量 進程控制表中是否存在該批量進程的記錄;
[0085] 步驟704 :如果批量進程控制表中存在該批量進程的記錄,則獲取該批量進程對 應的應用服務器的IP地址,并判斷是否與本機的IP地址相同;
[0086] 步驟705 :如果,在批量進程控制表中不存在該批量進程的記錄,則插入一條該批 量進程的記錄,包括:本機IP字段和進程名字段,插入并提交成功則繼續(xù)處理,否則提示異 常并退出啟動過程;
[0087] 步驟706 :如果步驟704中判斷出兩者IP不相同,則表明該批量進程可能已經在 其它應用服務器上啟動了,則可以提示異常信息:"該批量進程應該在對應的IP上啟動,不 能在本機啟動";
[0088] 步驟707 :如果步驟704中判斷兩者IP相符,則進一步判斷本機是否已啟動該批 量進程,以防止在該應用服務器上同時啟動了多次該批量進程;
[0089] 步驟708 :如果本機已經啟動,貝U提示:該批量進程已在本機啟動,請勿重復啟動;
[0090] 步驟709 :如果本機該批量進程沒有運行,則啟動該批量進程;
[0091] 步驟710 :數據掃描裝置12從配置處理裝置10獲取到配置的相關配置信息后,數 據獲取單元掃描相關待處理的業(yè)務數據并獲取業(yè)務數據的主鍵,并通過流量控制單元決定 每次發(fā)送到應用服務器的報文筆數,數據分發(fā)單元決定發(fā)往哪一臺應用服務器;
[0092] 步驟711 :S0CKET通訊客戶端裝置2的信息讀取單元20根據通訊協議將數據掃描 裝置12獲取的相關數據報文組成包括數據包包頭和包體的通訊數據包;
[0093] 步驟712 :S0CKET通訊客戶端裝置2的SOCKET通訊連接單元21將通訊數據包發(fā) 往數據掃描裝置12指定的應用服務器的SOCKET通訊服務監(jiān)聽裝置3 ;
[0094] 步驟713 :S0CKET通訊服務監(jiān)聽裝置3獲取SOCKET通訊客戶端裝置2發(fā)過來的通 訊數據包后提交給聯機業(yè)務報文處理裝置4進行處理;
[0095] 步驟714 :聯機業(yè)務報文處理裝置4根據通訊協議報解析裝置解析數據報文;
[0096] 步驟715 :將數據報文提交給對應的報文處理線程池進行處理;
[0097] 步驟716 :報文處理線程進行相應的業(yè)務邏輯處理。
[0098] 在本例中,可以在應用服務器集群中通過簡單的配置實現批量進程的并發(fā)控制, 通過將業(yè)務處理功能拆分為后臺批量進程和聯機報文處理服務兩個部分,實現了批量進程 處理的負載均衡,解決了進程并發(fā)處理的問題,同時也實現了負載均衡。同時在數據通訊的 過程中充分考慮了通訊超時等異常情況,完備的處理了后臺批量與聯機服務之間的報文狀 態(tài)同步問題。
[0099] 基于同一發(fā)明構思,本發(fā)明實施例中還提供了一種批量進程處理系統(tǒng),如下面的 實施例所述。由于批量進程處理系統(tǒng)解決問題的原理與批量進程處理方法相似,因此批量 進程處理系統(tǒng)的實施可以參見批量進程處理方法的實施,重復之處不再贅述。以下所使用 的,術語"單元"或者"模塊"可以實現預定功能的軟件和/或硬件的組合。盡管以下實施例 所描述的裝置較佳地以軟件來實現,但是硬件,或者軟件和硬件的組合的實現也是可能并 被構想的。圖8是本發(fā)明實施例的批量進程處理系統(tǒng)的一種結構框圖,如圖8所示,包括 : IP地址獲取單元801、進程處理單元802,下面對該結構進行說明。
[0100] IP地址獲取單元801,用于獲取預先為待處理批量進程分配的應用服務器的IP地 址;
[0101] 進程處理單元802,用于在確定獲取的IP地址與本臺應用服務器的IP地址相同的 情況下,在本臺應用服務器上啟動所述待處理批量進程。
[0102] 在一個實施例中,進程處理單元802具體用于在所述IP地址獲取單元確定獲取的 IP地址與本臺應用服務器的IP地址相同之后,確定在本臺應用服務器上是否已經啟動了 所述待處理批量進程,如果沒有啟動,則在本臺應用服務器上啟動所述待處理批量進程。
[0103] 在一個實施例中,IP地址獲取單元801具體用于從批量進程控制表中獲取為所述 待處理批量進程分配的應用服務器的IP地址,其中,所述批量進程表中記錄有至少一個批 量進程的進程名和為記錄的批量進程分配的應用服務器的IP地址。
[0104] 在一個實施例中,IP地址獲取單元801具體用于確定所述批量進程控制表中是否 記錄有所述待處理批量進程的進程名;如果有,則直接從所述批量進程控制表中獲取為所 述待處理批量進程分配的應用服務器的IP地址,否則,則將所述待處理批量進程的進程名 寫入所述批量進程控制表中,并將本臺應用服務器的IP地址作為為所述待處理批量進程 分配的應用服務器的IP地址。
[0105] 在一個實施例中,進程處理單元802包括:流量控制單元,用于從所述批量進程控 制表中獲取預先為所述待處理批量進程設置的每次發(fā)送數據報文的筆數限值;數據分發(fā)單 元,用于按照獲取的限值將所述待處理批量進程的數據報文發(fā)送至本臺應用服務器的應用 服務器;所述應用服務器,用于對接收到的數據報文進行處理。
[0106] 在一個實施例中,數據分發(fā)單元具體用于采用輪詢的方式將從所述待處理批量進 程的數據報文發(fā)送至系統(tǒng)中各應用服務器;或者,采用隨機分發(fā)的方式將從所述待處理批 量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器。
[0107] 在一個實施例中,上述系統(tǒng)還包括:數據獲取單元,用于在所述數據分發(fā)單元按照 獲取的限值將所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器之前,掃描所述 待處理批量進程的業(yè)務數據,并將掃描到的業(yè)務數據封裝為包括包頭和包體的數據報文。
[0108] 在另外一個實施例中,還提供了一種軟件,該軟件用于執(zhí)行上述實施例及優(yōu)選實 施方式中描述的技術方案。
[0109] 在另外一個實施例中,還提供了一種存儲介質,該存儲介質中存儲有上述軟件,該 存儲介質包括但不限于:光盤、軟盤、硬盤、可擦寫存儲器等。
[0110] 從以上的描述中,可以看出,本發(fā)明實施例實現了如下技術效果:為每個待處理的 批量進程設置了一個處理應用服務器,在執(zhí)行的過程中,只需要判斷為該批量進程進行分 配的應用服務器的IP地址是否與本臺應用服務器的IP地址相同,如果相同,那么就通過本 臺應用服務器對該批量進行處理,通過這種方式無需操作人員人工進行配置,應用服務器 自己可以實現對批量進行處理,且對批量進行的配置比較簡單,解決了現有技術中,在數據 結構的層面劃分批量進程而導致的系統(tǒng)實現起來比較復雜,且可擴展性不高的技術問題, 達到了有效降低系統(tǒng)復雜度,提高批量進程處理效率的技術效果。
[0111] 顯然,本領域的技術人員應該明白,上述的本發(fā)明實施例的各模塊或各步驟可以 用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置 所組成的網絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現,從而,可以將它 們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí) 行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個 模塊或步驟制作成單個集成電路模塊來實現。這樣,本發(fā)明實施例不限制于任何特定的硬 件和軟件結合。
[0112] 以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技 術人員來說,本發(fā)明實施例可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的 任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1. 一種批量進程處理方法,其特征在于,包括: 獲取預先為待處理批量進程分配的應用服務器的IP地址; 在確定獲取的IP地址與本臺應用服務器的IP地址相同的情況下,在本臺應用服務器 上啟動所述待處理批量進程。
2. 如權利要求1所述的方法,其特征在于,在本臺應用服務器上啟動所述待處理批量 進程,包括: 確定在本臺應用服務器上是否已經啟動了所述待處理批量進程; 如果沒有啟動,則在本臺應用服務器上啟動所述待處理批量進程。
3. 如權利要求1所述的方法,其特征在于,獲取預先為待處理批量進程分配的應用服 務器的IP地址,包括: 從批量進程控制表中獲取為所述待處理批量進程分配的應用服務器的IP地址,其中, 所述批量進程表中記錄有至少一個批量進程的進程名和為記錄的批量進程分配的應用服 務器的IP地址。
4. 如權利要求3所述的方法,其特征在于,從批量進程控制表中獲取為所述待處理批 量進程分配的應用服務器的IP地址,包括: 確定所述批量進程控制表中是否記錄有所述待處理批量進程的進程名; 如果有,則直接從所述批量進程控制表中獲取為所述待處理批量進程分配的應用服務 器的IP地址,否則,則將所述待處理批量進程的進程名寫入所述批量進程控制表中,并將 本臺應用服務器的IP地址作為為所述待處理批量進程分配的應用服務器的IP地址。
5. 如權利要求3所述的方法,其特征在于,在本臺應用服務器上啟動所述待處理批量 進程,包括: 本臺應用服務器的流量控制單元從所述批量進程控制表中獲取預先為所述待處理批 量進程設置的每次發(fā)送數據報文的筆數限值; 本臺應用服務器的數據分發(fā)單元按照獲取的限值將所述待處理批量進程的數據報文 發(fā)送至系統(tǒng)中各應用服務器; 系統(tǒng)中各應用服務器對接收到的數據報文進行處理。
6. 如權利要求5所述的方法,其特征在于,本臺應用服務器的數據分發(fā)單元按照獲取 的限值將所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器,包括: 所述數據分發(fā)單元采用輪詢的方式將從所述待處理批量進程的數據報文發(fā)送至系統(tǒng) 中各應用服務器; 或者,所述數據分發(fā)單元采用隨機分發(fā)的方式將從所述待處理批量進程的數據報文發(fā) 送至系統(tǒng)中各應用服務器。
7. 如權利要求5所述的方法,其特征在于,在本臺應用服務器的數據分發(fā)單元按照獲 取的限值將所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器之前,還包括: 本臺應用服務器的數據獲取單元掃描所述待處理批量進程的業(yè)務數據; 所述數據獲取單元將掃描到的業(yè)務數據封裝為包括包頭和包體的數據報文。
8. -種批量進程處理系統(tǒng),其特征在于,位于一臺應用服務器中,包括: IP地址獲取單元,用于獲取預先為待處理批量進程分配的應用服務器的IP地址; 進程處理單元,用于在確定獲取的IP地址與本臺應用服務器的IP地址相同的情況下, 在本臺應用服務器上啟動所述待處理批量進程。
9. 如權利要求8所述的系統(tǒng),其特征在于,所述進程處理單元具體用于在所述IP地址 獲取單元確定獲取的IP地址與本臺應用服務器的IP地址相同之后,確定在本臺應用服務 器上是否已經啟動了所述待處理批量進程,如果沒有啟動,則在本臺應用服務器上啟動所 述待處理批量進程。
10. 如權利要求8所述的系統(tǒng),其特征在于,所述IP地址獲取單元具體用于從批量進程 控制表中獲取為所述待處理批量進程分配的應用服務器的IP地址,其中,所述批量進程表 中記錄有至少一個批量進程的進程名和為記錄的批量進程分配的應用服務器的IP地址。
11. 如權利要求10所述的系統(tǒng),其特征在于,所述IP地址獲取單元具體用于確定所述 批量進程控制表中是否記錄有所述待處理批量進程的進程名;如果有,則直接從所述批量 進程控制表中獲取為所述待處理批量進程分配的應用服務器的IP地址,否則,則將所述待 處理批量進程的進程名寫入所述批量進程控制表中,并將本臺應用服務器的IP地址作為 為所述待處理批量進程分配的應用服務器的IP地址。
12. 如權利要求10所述的系統(tǒng),其特征在于,所述進程處理單元包括: 流量控制單元,用于從所述批量進程控制表中獲取預先為所述待處理批量進程設置的 每次發(fā)送數據報文的筆數限值; 數據分發(fā)單元,用于按照獲取的限值將所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中 各應用服務器; 所述應用服務器,用于對接收到的數據報文進行處理。
13. 如權利要求12所述的系統(tǒng),其特征在于,所述數據分發(fā)單元具體用于采用輪詢的 方式將從所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器;或者,采用隨機分 發(fā)的方式將從所述待處理批量進程的數據報文發(fā)送至系統(tǒng)中各應用服務器。
14. 如權利要求12所述的系統(tǒng),其特征在于,還包括: 數據獲取單元,用于在所述數據分發(fā)單元按照獲取的限值將所述待處理批量進程的數 據報文發(fā)送至系統(tǒng)中各應用服務器之前,掃描所述待處理批量進程的業(yè)務數據,并將掃描 到的業(yè)務數據封裝為包括包頭和包體的數據報文。
【文檔編號】G06F9/46GK104092794SQ201410360579
【公開日】2014年10月8日 申請日期:2014年7月25日 優(yōu)先權日:2014年7月25日
【發(fā)明者】蔡凌瑋, 韋東俊, 鄧校鋒, 萬旭, 毛淑平 申請人:中國工商銀行股份有限公司