TWI671640B - 分散式系統中的任務處理方法和裝置 - Google Patents
分散式系統中的任務處理方法和裝置 Download PDFInfo
- Publication number
- TWI671640B TWI671640B TW103134414A TW103134414A TWI671640B TW I671640 B TWI671640 B TW I671640B TW 103134414 A TW103134414 A TW 103134414A TW 103134414 A TW103134414 A TW 103134414A TW I671640 B TWI671640 B TW I671640B
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- alive
- current
- status
- survival status
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
本發明實施例公開了一種分散式系統中的任務處理方法和裝置。其中,該方法包括:所述多個任務處理器中的任一任務處理器在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活;如果所述任務的當前存活狀態為存活,則不處理所述任務;如果所述任務的當前存活狀態為死亡,先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存活標記為死亡。根據本發明的實施例,可以解決現有技術中因多個任務伺服器(或任務程序)重複處理同一個任務所引起的業務資料不滿足冪等性的問題。
Description
本發明係關於分散式運算領域,特別是關於分散式系統中的任務處理方法和裝置。
無論是在大型的網際網路應用中,還是在企業級架構中,都越來越廣泛地採用分散式服務框架來提供各種服務。例如,在一個大型的網際網路應用中,不可避免地需要將一個“應用”拆分成多個“業務”(或者,也可以稱為“服務”),而每個“業務”對應的任務最終是由分散式系統中的伺服器處理完成的。
一般情況下,一個“應用”下的各“業務”之間很可能會存在依賴關係,並且,依賴關係還可能錯綜複雜。因此,對於每一個“業務”而言,都有可能因為其依賴的其它“業務”出現異常而被迫中斷。此時,就需要對中斷“業務”進行異常處理。現有技術中的一種異常處理方式是:將中斷“業務”在中斷前的業務資料保存到儲存伺服器上,待觸發重新處理該中斷“業務”對應的任務時,再由分散式系統中的任務伺服器(或任務程序)根據儲存伺服器上的業務資
料繼續處理該中斷“業務”對應的任務。
在實現本發明的過程中,本發明的發明人發現現有技術中至少存在如下問題:當“業務”中斷後,是由工作人員通過在後臺介面上進行人工作業來觸發重新處理中斷“業務”對應的任務的。但是,如果在誤操作的情況下,多名工作人員重複性地觸發重新處理同一個中斷“業務”對應的任務,就會造成多個任務伺服器(或任務程序)重複處理同一個任務,從而引起業務資料不滿足冪等性要求。
為了解決上述技術問題,本發明實施例提供了分散式系統中的任務處理方法和裝置,以解決現有技術中因多個任務伺服器(或任務程序)重複處理同一個任務所引起的業務資料不滿足冪等性的問題。
本發明實施例公開了如下技術方案:一種分散式系統中的任務處理方法,所述分散式系統包括多個任務處理器,所述方法包括:所述多個任務處理器中的任一任務處理器在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活;如果所述任務的當前存活狀態為存活,則不處理所述任務;如果所述任務的當前存活狀態為死亡,先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存
活標記為死亡。
較佳的,所述方法還包括:在將所述任務的當前存活狀態從死亡標記為存活後,所述多個任務處理器中的任一任務處理器被設置為定時更新所述任務的當前存活時間。
進一步較佳的,所述方法還包括:所述多個任務處理器中的任一任務處理器被設置為定時判斷所述任務的當前存活狀態是否為存活;如果所述任務的當前存活狀態為存活,進一步判斷所述任務持續存活的時間長度是否大於或等於預設的時間長度閾值;如果是,更改所述任務的當前存活狀態為死亡,否則,保持所述任務的當前存活狀態為存活。
較佳的,所述方法還包括:在啟動任務之前,判斷預設的工作週期是否到達;如果是,自動啟動所述任務,否則,不啟動所述任務。
較佳的,所述分散式系統還包括與所述多個任務處理器通信的儲存伺服器,所述判斷所述任務的當前存活狀態是否為存活,包括:讀取保存在所述儲存伺服器中的用於指示所述任務的當前存活狀態的標識;根據所述標識確定所述任務的當前存活狀態是否為存活。
進一步較佳的,每種類型下的任務在所述儲存伺服器上保存唯一一個所述標識。
一種分散式系統中的任務處理裝置,包括:第一判斷模組,用於在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活;任務處理模組,用於如果所述第一判斷模組的判斷結果為是,不處理所述任務,如果所述第一判斷模組的判斷結果為否,先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存活標記為死亡。
較佳的,所述裝置還包括:存活時間更新模組,用於在將所述任務的當前存活狀態從死亡標記為存活後,定時更新所述任務的當前存活時間。
進一步較佳的,所述裝置還包括:第二判斷模組,用於定時判斷所述任務的當前存活狀態是否為存活;第三判斷模組,用於如果所述第二判斷模組的判斷結果為是,進一步判斷所述任務持續存活的時間長度是否大於或等於預設的時間長度閾值;狀態修正模組,用於如果所述第三判斷模組的判斷結果為是,更改所述任務的當前存活狀態為死亡,如果所述第三判斷模組的判斷結果為否,保持所述任務的當前存活狀態為存活。
較佳的,所述裝置還包括:第四判斷模組,用於在啟動任務之前,判斷預設的工作週期是否到達;啟動模組,用於如果所述第四判斷模組的判斷結果為是,自動啟動所述任務,如果所述第四判斷模組的判斷結果為否,不啟動所述任務。
較佳的,所述第一判斷模組包括:讀取子模組,用於讀取保存在儲存伺服器中的用於指示所述任務的當前存活狀態的標識;識別子模組,用於根據所述標識確定所述任務的當前存活狀態是否為存活。
進一步較佳的,每種類型下的任務在所述儲存伺服器上保存唯一一個所述標識。
由上述實施例可以看出,與現有技術相比,本發明技術方案的優點在於:當分散式系統中的一個任務處理器(或任務程序)正在處理某任務時,該任務的存活狀態就會標記為存活,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為存活,進而就不會再去處理該任務。當該任務處理器(或任務程序)處理完該任務時,該任務的存活狀態就會標識為死亡,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為死亡,就可以處理該任務。保證多個任務伺服器(或任務程序)不會重
複處理同一個任務,進而也保證了業務資料的冪等性。
601‧‧‧第一判斷模組
602‧‧‧任務處理模組
603a‧‧‧存活時間更新模組
604a‧‧‧第二判斷模組
605a‧‧‧第三判斷模組
606a‧‧‧狀態修正模組
603b‧‧‧第四判斷模組
604b‧‧‧啟動模組
6011‧‧‧讀取子模組
6012‧‧‧識別子模組
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些圖式獲得其他的圖式。
圖1示意性地示出了本發明的實施方式可以在其中實施的示例性應用場景;圖2為本發明一個實施例提供的一種分散式系統中的任務處理方法的流程圖;圖3為本發明另一個實施例提供的一種分散式系統中的任務處理方法的流程圖;圖4為本發明另一個實施例提供的一種分散式系統中的任務處理方法的流程圖;圖5為本發明另一個實施例提供的一種分散式系統場景下的任務處理方法的示意圖;圖6為本發明一個實施例提供的一種分散式系統中的任務處理裝置的結構框圖;圖7為本發明另一個實施例提供的另一種分散式系統中的任務處理裝置的結構框圖;圖8為本發明另一個實施例提供的另一種分散式系統
中的任務處理裝置的結構框圖;圖9為本發明另一個實施例提供的另一種分散式系統中的任務處理裝置的結構框圖;圖10為本發明實施例四提供的第一判斷模組的一種結構框圖。
本發明實施例提供了分散式系統中的任務處理方法和裝置。本發明實施例所涉及的技術方案的核心在於,利用存活狀態(存活狀態包括存活和死亡)向任務處理器(或任務程序)指示某任務是否正在被其它任務處理器(或任務程序)處理。基於存活狀態,當分散式系統中的一個任務處理器(或任務程序)正在處理某任務時,該任務的存活狀態就會標記為存活,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為存活,進而就不會再去處理該任務。當該任務處理器(或任務程序)處理完該任務時,該任務的存活狀態就會標識為死亡,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為死亡,就可以處理該任務。
首先參考圖1,圖1示意性地示出了本發明的實施方式可以在其中實施的示例性應用場景。其中,當業務A被迫中斷時,管理伺服器10會將業務A對應的任務21儲存到一個任務佇列30中,並將業務A在中斷前的業務資料
22保存到儲存伺服器41上,以及將任務21的當前存活狀態211保存到儲存伺服器42上(此時,由於任務21沒有被任何一個任務處理器處理,因此,任務21的當前存活狀態211被標記為死亡)。在此之後,當任務伺服器51在觸發下從任務佇列30中的提取任務21並啟動了任務21時,任務處理器51從儲存伺服器42中讀取任務21的當前存活狀態211,當確定當前存活狀態211為死亡時,先將任務21的當前存活狀態211從死亡標記為存活,再從儲存伺服器41中讀取業務A在中斷前的業務資料22,並基於業務資料22處理任務21。在任務處理器51處理任務21的過程中,如果任務處理器52也在觸發下啟動從任務佇列30中提取任務21並啟動了任務21,任務處理器52先從儲存伺服器42讀取任務21的當前存活狀態211,此時,由於確定出當前存活狀態211為存活,因此,任務處理器52不會對任務21進行處理。當任務處理器51對任務21處理完畢後,任務處理器51再將任務21的當前存活狀態211從存活重新標記為死亡。
管理伺服器10可以是Web伺服器,也可以是其他類型的伺服器,例如APP伺服器。任務處理器51和52還可以是任務程序。本領域技術人員可以理解,圖1所示的示意圖僅是本發明的實施方式可以在其中得以實現的一個示例。本發明實施方式的應用範圍不受到該框架任何方面的限制。
為使本發明的上述目的、特徵和優點能夠更加明顯易
懂,下面結合圖式對本發明實施例進行詳細描述。
請參閱圖2,其為本發明一個實施例提供的一種分散式系統中的任務處理方法的流程圖,所述分散式系統包括多個任務處理器,該方法包括以下步驟:
步驟201:所述多個任務處理器中的任一任務處理器在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活,如果是,進入步驟202,否則,進入步驟203。
在本發明的一個較佳實施方式中,讀取保存在儲存伺服器中的用於指示所述任務的當前存活狀態的標識,所述存活狀態包括存活和死亡;根據所述標識確定所述任務的當前存活狀態是否為存活。
具體地,可以將該任務的任務名以及當前存活狀態的標識以映射關係保存在儲存伺服器上,以便先根據任務名找到對應的當前存活狀態的標識,然後再從儲存伺服器中讀取該標識。
步驟202:不處理所述任務,結束流程。
步驟203:先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存活標記為死亡,結束流程。
需要說明的是,上述“任務”可以是一個任務,也可以是同一個業務類型下的多個任務。
在申請的另一個較佳實施方式中,每種類型下的任務在所述儲存伺服器上保存唯一一個所述標識。
另外,如果是由工作人員觸發重新處理中斷“業務”對應的任務,考慮到工作人員往往並不能及時進行觸發,就會影響到“業務”處理的即時性。特別是某些對於即時性要求比較高的“業務”,對於延遲幾乎是無法容忍的。
因此,在本發明的一個較佳實施方式中,如圖3所示,在啟動任務之前,判斷預設的工作週期是否到達,如果到達,自動啟動所述任務,如果沒有到達,不啟動所述任務(並繼續判斷預設的工作週期是否到達)。
可以理解的,作為一種替換方案,各任務處理器(或任務程序)並不是在工作人員的觸發下啟動並處理各中斷“業務”對應的任務,而是每隔一定的時間段就自動啟動中斷“業務”對應的任務,從而保證“業務”處理的即時性。
需要說明的是,在本發明的技術方案中,並不限定工作週期的具體長度。工作週期的長度可以由業務類型決定,即,對於即時性處理要求越高的業務,工作週期的長度越短,反之,對於即時性處理要求越低的業務,工作週期的長度越長。另外,各個任務處理器(或任務程序)之間的工作週期可以是同步的,但是,為了避免競爭,更較佳的方式是不同步。
由上述實施例可以看出,與現有技術相比,本發明技術方案的優點在於:當分散式系統中的一個任務處理器(或任務程序)正
在處理某任務時,該任務的存活狀態就會標記為存活,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為存活,進而就不會再去處理該任務。當該任務處理器(或任務程序)處理完該任務時,該任務的存活狀態就會標識為死亡,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為死亡,就可以處理該任務。保證多個任務伺服器(或任務程序)不會重複處理同一個任務,進而也保證了業務資料的冪等性。
如果任務處理器(或任務程序)在處理任務的過程中突然發生故障,如,任務處理器突然斷電,或者任務程序突然崩潰,就無法及時更新任務的當前存活狀態,即,任務將一直處於存活狀態。在這種情況下,其它任務處理器(或處理程序)將無法繼續處理該任務。為了解決這個問題,在實施例一的步驟203中,在將任務的當前存活狀態從死亡標記為存活後,所述多個任務處理器中的任一任務處理器還需要被設置為定時更新所述任務的當前存活時間。
其中,在儲存伺服器中,不僅保存有任務的任務名以及當前存活狀態的標識,還保存有任務的當前存活時間,並且任務的當前存活時間是即時更新的。
當儲存伺服器中保存有任務的當前存活時間時,分散式系統中的任意一個或任意多個任務伺服器(任務程序)就可以根據任務的當前存活時間對該任務進行定時的檢
測,一旦發現該任務持續存活的時間長度是否大於或等於預設的時間長度閾值,就將該任務的當前存活狀態更改為死亡。
請參閱圖4,其為本發明另一個實施例提供的一種分散式系統中的任務檢測方法的流程圖,在任務處理器(或任務程序)執行實施例一中的任務處理方法的同時,執行該任務檢測方法,其可以包括以下步驟:
步驟401:所述多個任務處理器中的任一任務處理器被設置為定時判斷所述任務的當前存活狀態是否為存活,如果是,進入步驟402,否則,返回步驟401。
步驟402:判斷所述任務持續存活的時間長度是否大於或等於預設的時間長度閾值,如果是,進入步驟403,否則,進入步驟404。
其中,預設的時間長度閾值可以是所述任務執行耗時的歷史最大值的N倍,N為非零整數。
步驟403:更改所述任務的當前存活狀態為死亡,結束流程。
步驟404:保持所述任務的當前存活狀態為存活,結束流程。
由上述實施例可以看出,與現有技術相比,本發明技術方案的優點在於:除了可以保證多個任務伺服器(或任務程序)不會重複處理同一個任務,進而也保證了業務資料的冪等性之外,還保證了當任務處理器(或任務程序)在處理任務的
過程中因突然發生故障而無法及時更新任務的當前存活狀態,使任務一直處於存活狀態時,其它任務處理器(或處理程序)還可以正常地繼續處理該任務。
下面以由三個任務處理器(分別為任務處理器1、2和3)所構成的分散式系統為例,說明三個任務處理器處理任務的方法。假設,任務處理器1、2和3每隔5分鐘啟動一次任務,並且,由任務處理器1每隔5分鐘進行一次任務檢測。
請參閱圖5,其為本發明另一個實施例提供的一種分散式系統場景下的任務處理方法的示意圖,該方法包括以下步驟:
步驟511:任務處理器1在1點10分啟動任務A。
其中,任務A表示業務類型A對應的所有任務,其可以為一個任務集合。
步驟512:任務處理器1從儲存伺服器中獲取任務A的當前存活狀態。
其中,任務A的當前存活狀態包括存活和死亡。
步驟513:任務處理器1根據任務A的當前存活狀態確定任務A死亡,將儲存伺服器中任務A的當前存活狀態從死亡標記為存活。
步驟514:任務處理器1處理任務A。
步驟515:任務處理器1在處理任務A的過程中,每隔30秒更新儲存伺服器中任務A的當前存活時間。
步驟516:任務處理器1在1點15分停止處理任務A
(此時任務A還沒有全部處理完畢),將儲存伺服器中任務A的當前存活狀態從存活標記為死亡。
步驟521:任務處理器2在1點12分啟動任務A。
步驟522:任務處理器2從儲存伺服器中獲取任務A的當前存活狀態。
步驟523:任務處理器2根據任務A的當前存活狀態確定任務A存活,不處理任務A。
步驟531:任務處理器3在1點16分啟動任務A。
步驟532:任務處理器3從儲存伺服器中獲取任務A的當前存活狀態。
步驟533:任務處理器3根據任務A的當前存活狀態確定任務A死亡,將儲存伺服器中任務A的當前存活狀態從死亡標記為存活。
步驟534:任務處理器3處理任務A。
步驟535:任務處理器3在處理任務A的過程中,每隔30秒更新儲存伺服器中任務A的當前存活時間。
步驟536:任務處理器3在1點19分處理完所有的任務A,將儲存伺服器中任務A的當前存活狀態從存活標記為死亡。
步驟541:任務處理器1在1點10分啟動檢測任務。
步驟542:任務處理器1從1點10分開始,每隔30秒從儲存伺服器中獲取任務A的當前存活狀態和當前存活時間。
步驟543:如果任務處理器1根據任務A的當前存活狀態確定任務A存活,並且根據任務A的當前存活時間確定任務A持續存活的時間長度大於或等於5分鐘,將儲存伺服器中任務A的當前存活狀態更改為死亡。
由上述實施例可以看出,與現有技術相比,本發明技術方案的優點在於:當分散式系統中的一個任務處理器(或任務程序)正在處理某任務時,該任務的存活狀態就會標記為存活,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為存活,進而就不會再去處理該任務。當該任務處理器(或任務程序)處理完該任務時,該任務的存活狀態就會標識為死亡,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為死亡,就可以處理該任務。保證多個任務伺服器(或任務程序)不會重複處理同一個任務,進而也保證了業務資料的冪等性。
另外,還保證了當任務處理器(或任務程序)在處理任務的過程中因突然發生故障而無法及時更新任務的當前存活狀態,使任務一直處於存活狀態時,其它任務處理器(或處理程序)還可以正常地繼續處理該任務。
與上述一種分散式系統中的任務處理方法相對應,本發明實施例還提供了一種分散式系統中的任務處理裝置。
請參閱圖6,其為本發明一個實施例提供的一種分散式系統中的任務處理裝置的結構框圖,該裝置包括第一判斷模組601和任務處理模組602。下面結合該裝置的工作原理進一步介紹其內部結構以及連接關係。
第一判斷模組601,用於在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活;任務處理模組602,用於如果所述第一判斷模組601的判斷結果為是,不處理所述任務,如果所述第一判斷模組601的判斷結果為否,先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存活標記為死亡。
在本發明的一個較佳實施方式中,如圖7所示,在圖6所示的結構的基礎之上,該裝置還包括:存活時間更新模組603a,用於在將所述任務的當前存活狀態從死亡標記為存活後,定時更新所述任務的當前存活時間。
在本發明的另一個較佳實施方式中,如圖8所示,該裝置進一步還包括:第二判斷模組604a,用於定時判斷所述任務的當前存活狀態是否為存活;第三判斷模組605a,用於如果所述第二判斷模組的判斷結果為是,進一步判斷所述任務持續存活的時間長度是否大於或等於預設的時間長度閾值;狀態修正模組606a,用於如果所述第三判斷模組的判斷結果為是,更改所述任務的當前存活狀態為死亡,如
果所述第三判斷模組的判斷結果為否,保持所述任務的當前存活狀態為存活。
在本發明的一個較佳實施方式中,如圖9所示,在圖6所示的結構的基礎之上,還裝置還包括:第四判斷模組603b,用於在啟動任務之前,判斷預設的工作週期是否到達;啟動模組604b,用於如果所述第四判斷模組的判斷結果為是,自動啟動所述任務,如果所述第四判斷模組的判斷結果為否,不啟動所述任務。
在本發明的一個較佳實施方式中,如圖10所示,第一判斷模組601包括:讀取子模組6011,用於讀取保存在儲存伺服器中的用於指示所述任務的當前存活狀態的標識;識別子模組6012,用於根據所述標識確定所述任務的當前存活狀態是否為存活。
在本發明的另一個較佳實施方式中,每種類型下的任務在所述儲存伺服器上的保存唯一一個所述標識。
由上述實施例可以看出,與現有技術相比,本發明技術方案的優點在於:當分散式系統中的一個任務處理器(或任務程序)正在處理某任務時,該任務的存活狀態就會標記為存活,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為存活,進而就不會再去處理該任務。當該任務處理器(或任務程序)處
理完該任務時,該任務的存活狀態就會標識為死亡,此時,如果有其它的任務處理器(或任務程序)也想要處理該任務,根據存活狀態就可以確定該任務為死亡,就可以處理該任務。保證多個任務伺服器(或任務程序)不會重複處理同一個任務,進而也保證了業務資料的冪等性。
另外,還保證了當任務處理器(或任務程序)在處理任務的過程中因突然發生故障而無法及時更新任務的當前存活狀態,使任務一直處於存活狀態時,其它任務處理器(或處理程序)還可以正常地繼續處理該任務。
所述領域的技術人員可以清楚地瞭解到,為了描述的方便和簡潔,上述描述的系統、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本發明所提供的幾個實施例中,應該理解到,所揭露的系統、裝置和方法,可以通過其它的方式實現。例如,以上所描述到的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些介面,裝置或單元的間接耦合或通信連接,可以是電性、機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以是物理上分開的,作為單元顯示的部件可以是或者也可以不是
物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,可以採用軟體功能單元的形式實現。
需要說明的是,本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過電腦程式來指令相關的硬體來完成,所述的程式可儲存於一電腦可讀取儲存介質中,該程式在執行時,可包括如上述各方法的實施例的流程。其中,所述的儲存介質可為磁碟、光碟、唯讀記憶體(Read-Only Memory,ROM)或隨機存取記憶體(Random Access Memory,RAM)等。
以上對本發明所提供的分散式系統中的任務處理方法和裝置進行了詳細介紹,本文中應用了具體實施例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
Claims (12)
- 一種分散式系統中的任務處理方法,所述分散式系統包括多個任務處理器,所述方法包括:所述多個任務處理器中的任一任務處理器在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活;如果所述任務的當前存活狀態為存活,則不處理所述任務;如果所述任務的當前存活狀態為死亡,先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存活標記為死亡。
- 根據申請專利範圍第1項所述的方法,其中,所述方法還包括:在將所述任務的當前存活狀態從死亡標記為存活後,所述多個任務處理器中的任一任務處理器被設置為定時更新所述任務的當前存活時間。
- 根據申請專利範圍第2項所述的方法,其中,所述方法還包括:所述多個任務處理器中的任一任務處理器被設置為定時判斷所述任務的當前存活狀態是否為存活;如果所述任務的當前存活狀態為存活,進一步判斷所述任務持續存活的時間長度是否大於或等於預設的時間長度閾值;如果是,更改所述任務的當前存活狀態為死亡,否則,保持所述任務的當前存活狀態為存活。
- 根據申請專利範圍第1項所述的方法,其中,所述方法還包括:在啟動任務之前,判斷預設的工作週期是否到達;如果是,自動啟動所述任務,否則,不啟動所述任務。
- 根據申請專利範圍第1項所述的方法,其中,所述分散式系統還包括與所述多個任務處理器通信的儲存伺服器,所述判斷所述任務的當前存活狀態是否為存活,包括:讀取保存在所述儲存伺服器中的用於指示所述任務的當前存活狀態的標識;根據所述標識確定所述任務的當前存活狀態是否為存活。
- 根據申請專利範圍第5項所述的方法,其中,每種類型下的任務在所述儲存伺服器上保存唯一一個所述標識。
- 一種分散式系統中的任務處理裝置,包括:第一判斷模組,用於在啟動任務之後且處理所述任務之前,判斷所述任務的當前存活狀態是否為存活;任務處理模組,用於如果所述第一判斷模組的判斷結果為是,不處理所述任務,如果所述第一判斷模組的判斷結果為否,先將所述任務的當前存活狀態從死亡標記為存活,再處理所述任務,並在處理完所述任務後,將所述任務的當前存活狀態從存活標記為死亡。
- 根據申請專利範圍第7項所述的裝置,其中,所述裝置還包括:存活時間更新模組,用於在將所述任務的當前存活狀態從死亡標記為存活後,定時更新所述任務的當前存活時間。
- 根據申請專利範圍第8項所述的裝置,其中,所述裝置還包括:第二判斷模組,用於定時判斷所述任務的當前存活狀態是否為存活;第三判斷模組,用於如果所述第二判斷模組的判斷結果為是,進一步判斷所述任務持續存活的時間長度是否大於或等於預設的時間長度閾值;狀態修正模組,用於如果所述第三判斷模組的判斷結果為是,更改所述任務的當前存活狀態為死亡,如果所述第三判斷模組的判斷結果為否,保持所述任務的當前存活狀態為存活。
- 根據申請專利範圍第7項所述的裝置,其中,所述裝置還包括:第四判斷模組,用於在啟動任務之前,判斷預設的工作週期是否到達;啟動模組,用於如果所述第四判斷模組的判斷結果為是,自動啟動所述任務,如果所述第四判斷模組的判斷結果為否,不啟動所述任務。
- 根據申請專利範圍第7項所述的裝置,其中,所述第一判斷模組包括:讀取子模組,用於讀取保存在儲存伺服器中的用於指示所述任務的當前存活狀態的標識;識別子模組,用於根據所述標識確定所述任務的當前存活狀態是否為存活。
- 根據申請專利範圍第11項所述的裝置,其中,每種類型下的任務在所述儲存伺服器上保存唯一一個所述標識。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??201410283561.7 | 2014-06-23 | ||
CN201410283561.7A CN105446801A (zh) | 2014-06-23 | 2014-06-23 | 分布式系统中的任务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201600975A TW201600975A (zh) | 2016-01-01 |
TWI671640B true TWI671640B (zh) | 2019-09-11 |
Family
ID=54869712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103134414A TWI671640B (zh) | 2014-06-23 | 2014-10-02 | 分散式系統中的任務處理方法和裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20150370599A1 (zh) |
CN (1) | CN105446801A (zh) |
TW (1) | TWI671640B (zh) |
WO (1) | WO2015200183A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016186704A (ja) * | 2015-03-27 | 2016-10-27 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
CN108022028B (zh) * | 2016-11-01 | 2021-02-26 | 南京途牛科技有限公司 | 一种资源处理方法及装置 |
CN107783828B (zh) * | 2017-02-17 | 2020-07-17 | 平安科技(深圳)有限公司 | 任务处理方法和装置 |
CN108647105B (zh) * | 2018-05-22 | 2022-02-01 | 创新先进技术有限公司 | 系统切换过程中的幂等控制方法、装置及系统 |
CN110245009B (zh) * | 2019-05-14 | 2024-03-08 | 平安科技(深圳)有限公司 | 周期任务分配方法、装置、计算机设备和存储介质 |
CN112416545A (zh) * | 2020-11-04 | 2021-02-26 | 北京五八信息技术有限公司 | 一种任务处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246998A1 (en) * | 2008-12-08 | 2011-10-06 | Kpit Cummins Infosystems Ltd | Method for reorganizing tasks for optimization of resources |
US20140157038A1 (en) * | 2012-12-04 | 2014-06-05 | International Business Machines Corporation | Using separate processes to handle short-lived and long-lived jobs to reduce failure of processes |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0115952D0 (en) * | 2001-06-29 | 2001-08-22 | Ibm | A scheduling method and system for controlling execution of processes |
DE102005048037A1 (de) * | 2005-10-07 | 2007-04-12 | Robert Bosch Gmbh | Verfahren zur Steuerung/Regelung wenigstens einer Task |
CN102521044B (zh) * | 2011-12-30 | 2013-12-25 | 北京拓明科技有限公司 | 一种基于消息中间件的分布式任务调度方法及系统 |
CN103581225A (zh) * | 2012-07-25 | 2014-02-12 | 中国银联股份有限公司 | 分布式系统中的节点处理任务的方法 |
-
2014
- 2014-06-23 CN CN201410283561.7A patent/CN105446801A/zh active Pending
- 2014-10-02 TW TW103134414A patent/TWI671640B/zh active
-
2015
- 2015-06-19 US US14/745,214 patent/US20150370599A1/en not_active Abandoned
- 2015-06-22 WO PCT/US2015/036908 patent/WO2015200183A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246998A1 (en) * | 2008-12-08 | 2011-10-06 | Kpit Cummins Infosystems Ltd | Method for reorganizing tasks for optimization of resources |
US20140157038A1 (en) * | 2012-12-04 | 2014-06-05 | International Business Machines Corporation | Using separate processes to handle short-lived and long-lived jobs to reduce failure of processes |
Also Published As
Publication number | Publication date |
---|---|
CN105446801A (zh) | 2016-03-30 |
WO2015200183A1 (en) | 2015-12-30 |
US20150370599A1 (en) | 2015-12-24 |
TW201600975A (zh) | 2016-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI671640B (zh) | 分散式系統中的任務處理方法和裝置 | |
KR101862273B1 (ko) | 가상화된 네트워킹 스택의 라이브 이주를 위한 시스템 및 방법 | |
US10037237B2 (en) | Method and arrangement for fault management in infrastructure as a service clouds | |
CN107016480B (zh) | 任务调度方法、装置及系统 | |
US9465704B2 (en) | VM availability during management and VM network failures in host computing systems | |
CN110083651B (zh) | 一种数据加载的方法和装置 | |
US10261841B2 (en) | System and method for task scheduling and device management | |
US9558082B2 (en) | VM availability during migration and VM network failures in host computing systems | |
JP2017513397A5 (zh) | ||
WO2017107656A1 (zh) | 虚拟化网元故障自愈方法及装置 | |
WO2017193737A1 (zh) | 一种软件测试方法及系统 | |
CN106713042B (zh) | 一种确定网络拓扑方法及装置 | |
CN108089915B (zh) | 基于消息队列的业务控件化处理的方法及系统 | |
US20160004566A1 (en) | Execution time estimation device and execution time estimation method | |
CN109165158B (zh) | 测试用例的调度方法、装置、计算设备及计算机存储介质 | |
WO2018188380A1 (zh) | 一种添加控件标识的方法和装置 | |
RU2018138001A (ru) | Система визуализации и платформа связи для связи между множеством узлов системы визуализации | |
CN108399095B (zh) | 支持动态管理定时任务的方法、系统、设备和存储介质 | |
CN111580948A (zh) | 任务调度方法、装置及计算机设备 | |
US20230216731A1 (en) | Method and system for monitoring switch on basis of bmc, and device and medium | |
US11068487B2 (en) | Event-stream searching using compiled rule patterns | |
US10678749B2 (en) | Method and device for dispatching replication tasks in network storage device | |
CN103577255A (zh) | 一种基于Zookeeper的多服务间异步进度控制的方法及系统 | |
US10970098B2 (en) | Methods for sharing input-output device for process automation on a computing machine and devices thereof | |
US11544091B2 (en) | Determining and implementing recovery actions for containers to recover the containers from failures |