專利名稱::下一代群集的制作方法下一代群集版權(quán)聲明本專利文檔的一部分公開包含受版權(quán)保護(hù)的材料。如專利文檔或?qū)@_出現(xiàn)在專利商標(biāo)局的專利文件或記錄中那樣,版權(quán)所有者不拒絕任何人對它的拓制,然而在別的方面卻保留無論什么樣的所有版權(quán)權(quán)利。優(yōu)先權(quán)要求美國臨時專利申請?zhí)?0/747,364,標(biāo)題為"NextGenerationClustering",由NareshRevanuru等人在2006年5月16日提交[代理人案號BEAS-01937US0]。美國專利申請?zhí)?1/425,784,標(biāo)題為"AutomaticMigratableServices",由AaronFiske在2006年6月22日提交[代理人案號BEAS-02030US0]。美國專利申請?zhí)?1/548,239,標(biāo)題為"JobScheduler",由NareshRevanuru等人在2006年10月10日提交[代理人案號BEAS-02031US0]。美國專利申請?zhí)?1/550,551,標(biāo)題為"Database-LessLeasing",由NareshRevanuru等人在2006年10月18日提交[代理人案號BEAS-02029US0]。
背景技術(shù):
:為了處理大量的交互,企業(yè)軟件應(yīng)用可使用應(yīng)用服務(wù)器,例如像從SanJose,California的BEASystems,Inc.可得到的WebLogicServerTM這樣的J2EE應(yīng)用服務(wù)器。這些應(yīng)用服務(wù)器可用在可相互交互的群集中。應(yīng)用服務(wù)器的某些服務(wù),稱為單例服務(wù),應(yīng)當(dāng)僅運行在群集的一個應(yīng)用服務(wù)器上。這些單例服務(wù)可包括IMS服務(wù)器、事務(wù)恢復(fù)服務(wù)或者應(yīng)當(dāng)僅以單個實例運行的任何其它軟件。圖l示出了基于數(shù)據(jù)庫的租賃系統(tǒng)。圖2示出了本發(fā)明的一個實施例的無數(shù)據(jù)庫的租賃系統(tǒng)。圖3A和3B示出了本發(fā)明的一個實施例的無數(shù)據(jù)庫的租賃系統(tǒng)。圖4A到4C示出了本發(fā)明的一個實施例的自動可遷移服務(wù)系統(tǒng)。圖5A和5B示出了作業(yè)調(diào)度器系統(tǒng)。實施方式無數(shù)據(jù)庫的租賃圖1示出了使用數(shù)據(jù)庫102的租賃系統(tǒng)的示例。在該示例中,群集110的應(yīng)用服務(wù)器104、106和108可依靠數(shù)據(jù)庫來提供對租約表102的訪問。在租約表102處的租約可用于指示什么應(yīng)用服務(wù)器應(yīng)當(dāng)運行單例服務(wù)。這些租約可由運行該單例服務(wù)的應(yīng)用服務(wù)器來更新。在崩潰的情況下,租約將不再被更新并且將變?yōu)闊o效。這可使得群集110的應(yīng)用服務(wù)器之一可以接替曾在控制租賃系統(tǒng)的崩潰或隔離的應(yīng)用服務(wù)器。在某些情況下,期望避免對用于租賃的高可用性(HA)數(shù)據(jù)庫的需要。本發(fā)明的實施例包括無數(shù)據(jù)庫的租賃系統(tǒng)。本發(fā)明的一個實施例是包括應(yīng)用服務(wù)器204、206、208和210的群集202的計算機(jī)實現(xiàn)的方法。方法可包括確定群集領(lǐng)導(dǎo)者202,使用群集領(lǐng)導(dǎo)者212在應(yīng)用服務(wù)器之一處建立租約表214,并且使用租約表214來維持用于單例服務(wù)218的至少一個租約216。由于租約表存儲在應(yīng)用服務(wù)器處,故不需要數(shù)據(jù)庫。在一個實施例中,在群集中的每個應(yīng)用服務(wù)器處維持租約表的副本,使得在崩潰或隔離的情況下租約表的副本是可得到的。.租約表可用于允許單例服務(wù)的自動遷移。節(jié)點管理器可用于確定群集中應(yīng)用服務(wù)器的狀態(tài)。節(jié)點管理器可以是在應(yīng)用服務(wù)器主機(jī)上運行的軟件程序。節(jié)點管理器可用于開始和停止應(yīng)用服務(wù)器的實例??蛇x擇群集中最早開始的應(yīng)用服務(wù)器來成為群集領(lǐng)導(dǎo)者。在一個實施例中,通過一種競爭來選擇群集領(lǐng)導(dǎo)者。群集中的每個服務(wù)器可周期性地嘗試成為群集領(lǐng)導(dǎo)者。例如,群集中的每個服務(wù)器可每隔30秒嘗試成為群集領(lǐng)導(dǎo)者一次。如果群集領(lǐng)導(dǎo)者已經(jīng)存在,它們的嘗試被拒絕。如果當(dāng)前不存在群集領(lǐng)導(dǎo)者,則第一個嘗試成為它的服務(wù)器成為群集領(lǐng)導(dǎo)者,從而阻止其它任何一個成為群集領(lǐng)導(dǎo)者。以該方式,可選擇群集中最早開始的應(yīng)用服務(wù)器來成為群集領(lǐng)導(dǎo)者。作為候選,系統(tǒng)可設(shè)計為使得可通過另一方法選擇群集領(lǐng)導(dǎo)者。群集領(lǐng)導(dǎo)者212可以維活(heartbeat)群集的其它應(yīng)用服務(wù)器。群集領(lǐng)導(dǎo)者212可在群集202的其它應(yīng)用服務(wù)器中存儲租約表的副本,以在一個或多個應(yīng)用服務(wù)器崩潰或隔離的情況下操作。在一個實施例中,如果當(dāng)前的群集服務(wù)器212未能維活其它應(yīng)用服務(wù)器,則其它應(yīng)用服務(wù)器可選擇另一群集領(lǐng)導(dǎo)者。本發(fā)明的一個實施例包括應(yīng)用服務(wù)器204、206、208和210的群集202。基于首先啟動的應(yīng)用服務(wù)器選擇群集領(lǐng)導(dǎo)者。群集領(lǐng)導(dǎo)者212用于在一個應(yīng)用服務(wù)器204處建立租約表214。本發(fā)明的一個實施例包括計算機(jī)實現(xiàn)的系統(tǒng),其中在應(yīng)用服務(wù)器的群集202的應(yīng)用服務(wù)器204處維持租約表214。群集的其它應(yīng)用服務(wù)器可使用租約表214來維持用于單例服務(wù)218的至少一個租約216。圖3A示出了群集領(lǐng)導(dǎo)者為群集的其它應(yīng)用服務(wù)器提供數(shù)據(jù)。圖3B示出了在成為當(dāng)前群集領(lǐng)導(dǎo)者的應(yīng)用服務(wù)器崩潰的情況下另一群集領(lǐng)導(dǎo)者被選擇。圖3C示出了在網(wǎng)絡(luò)隔離使得第一應(yīng)用服務(wù)器不可用的情況下另一群集領(lǐng)導(dǎo)者被選擇。自動可遷移服務(wù)本發(fā)明的一個實施例是計算機(jī)實現(xiàn)的系統(tǒng),其包括群集404中運行單例服務(wù)406的第一應(yīng)用服務(wù)器402。第一應(yīng)用服務(wù)器102在租約表410處維持用于單例服務(wù)406的租約408。遷移主控412檢査租約表410并且如果第一應(yīng)用服務(wù)器402未能維持租約408則將單例服務(wù)406重新分配給群集404的第二應(yīng)用服務(wù)器414。租約表410可在數(shù)據(jù)庫中維持,或者通過使用如上所述的無數(shù)據(jù)庫的租賃來維持。由于第一應(yīng)用服務(wù)器402的崩潰,第一應(yīng)用服務(wù)器可未能更新租約,如圖4B中所示,或者因為第一應(yīng)用服務(wù)器402從租約表隔離,第一應(yīng)用服務(wù)器402可未能更新租約,如圖4C中所示。第一應(yīng)用服務(wù)器402可維活租約408以維持對單例服務(wù)406的控制。單例服務(wù)可以是JMS服務(wù)器、定時器主控或者應(yīng)當(dāng)以單個實例運行的任何其它軟件。在得到單例服務(wù)之前,第二應(yīng)用服務(wù)器414可運行預(yù)定的啟動腳本。在放棄單例服務(wù)之后,第一應(yīng)用服務(wù)器402可運行預(yù)定的停用腳本。遷移主控412可選擇下一個應(yīng)用服務(wù)器來運行單例服務(wù),例如通過選擇下一應(yīng)用服務(wù)器。在一個實施例中,如果單例服務(wù)是Java消息傳送系統(tǒng)(JMS)服務(wù)則可存在專門的規(guī)則。如果單例服務(wù)是JMS服務(wù),在任何遷移之前遷移管理器可嘗試第一應(yīng)用服務(wù)器上的重新啟動。一個實施例是計算機(jī)實現(xiàn)的方法或計算機(jī)可讀介質(zhì),該介質(zhì)包含代碼以進(jìn)行更新租約表410處用于單例服務(wù)的租約408的步驟。在第一應(yīng)用服務(wù)器402處,用遷移主控412檢査租約表410。另外,如果第一應(yīng)用服務(wù)器不維持租約408,將單例服務(wù)406重新分配給第二應(yīng)用服務(wù)器。作業(yè)調(diào)度器本發(fā)明的一個實施例是在群集506的應(yīng)用服務(wù)器504處的定時器主控502。定時器主控502將所調(diào)度的作業(yè)分配給群集的其它應(yīng)用服務(wù)器508、510和512。應(yīng)用服務(wù)器504維持來自租約表516的用于定時器主控的租賃514。定時器主控502在數(shù)據(jù)庫中存儲所調(diào)度作業(yè)的作業(yè)信息520。在應(yīng)用服務(wù)器504崩潰的情況下,可向群集506的另一應(yīng)用服務(wù)器510分配可使用作業(yè)信息來分配所調(diào)度作業(yè)的定時器主控502。所調(diào)度作業(yè)可包括報告,例如數(shù)據(jù)庫報告。這種報告可需要大量的數(shù)據(jù)庫訪問并且因而占用大量的系統(tǒng)資源。所調(diào)度作業(yè)可因而調(diào)度為在非高峰時間運行以便不降低其它應(yīng)用的性能。租約表可在數(shù)據(jù)庫中,或者可使用無數(shù)據(jù)庫的租賃系統(tǒng)作為候選。定時器主控502可以是單例服務(wù)。定時器主控502可由遷移主控分配給應(yīng)用服務(wù)器510。其它應(yīng)用服務(wù)器可從定時器主控502請求作業(yè)。本發(fā)明的一個實施例是計算機(jī)實現(xiàn)的系統(tǒng),其包括在群集的應(yīng)用服務(wù)器504處的定時器主控502。定時器主控502可將所調(diào)度作業(yè)分配到群集506的其它應(yīng)用服務(wù)器508、510和512。在應(yīng)用服務(wù)器504崩潰的情況下,可向群集506的另一應(yīng)用服務(wù)器510分配可分配所調(diào)度作業(yè)的定時器主控。本發(fā)明的一個實施例是群集506的應(yīng)用服務(wù)器504,其將所調(diào)度作業(yè)分配給群集504的其它應(yīng)用服務(wù)器。在應(yīng)用服務(wù)器504崩潰的情況下,向另一應(yīng)用服務(wù)器510分配定時器主控502。其后,使用在另一應(yīng)用服務(wù)器510處的定時器主控502來分配所調(diào)度作業(yè)。具體實施例方式下面描述一個示例實施例的細(xì)節(jié)。這些細(xì)節(jié)給出了如何實現(xiàn)所要求的本發(fā)明的一個示例并且不意味著限制本發(fā)明的范圍或者縮小所要求項中任何一個的范圍。像自動服務(wù)器和服務(wù)遷移、群集范圍單例和鎖管理器這樣的先進(jìn)的群集特征可使用租賃和租約管理。租賃可保證群集中僅一個成員在可展期的某時間段內(nèi)得到租約的所有權(quán)。知道它具有租約的排它所有權(quán),租約所有者然后能夠執(zhí)行某些特權(quán)操作,像遷移失敗的服務(wù)器。本說明書描述了如何可實現(xiàn)租賃和群集主控型功能,而無需依賴于像高可用性數(shù)據(jù)庫這樣的外部仲裁者??捎勺酉到y(tǒng)使用租約管理器來獲得租約,登記在租約可用時得到租約的興趣,找出租賃的當(dāng)前所有者等。用于自動服務(wù)器遷移的一類租賃基礎(chǔ)需要高可用性(HA)數(shù)據(jù)庫的存在。換言之,租約表總是寄宿于數(shù)據(jù)庫中并且數(shù)據(jù)庫對于群集應(yīng)當(dāng)是高度可用的,以查詢和更新租約。租約表可寄宿在群集中的服務(wù)器之一中并且不在數(shù)據(jù)庫中。這意味著群集成員可選舉將容宿租約表并且成為群集領(lǐng)導(dǎo)者的服務(wù)器。該被選舉的群集領(lǐng)導(dǎo)者可以負(fù)責(zé)分發(fā)租約,更新租約表以及原子地將更新復(fù)制到群集。復(fù)制對于故障用途是重要的。如果群集領(lǐng)導(dǎo)者變?yōu)椴豢捎貌⑶也幌蛉航M發(fā)送心跳來聲稱它的存在,則成員可開始另一輪的投票來選舉新的群集主控。新選舉的主控可獲得租約表的所有權(quán)。除了獲得所有權(quán)和容宿租約表之外,群集主控還可執(zhí)行故障群集節(jié)點的自動服務(wù)器遷移。在一個實施例中,基于合意(consensus)的租賃可滿足以下的要求1.在任何給定的時間點處將至多有一個群集主控。這意味著將從不會有一個以上的群集主控,但是可能在短暫的時期內(nèi)群集沒有群集主控。2.就在群集啟動之后當(dāng)沒有群集主控時將有短暫的時期。時期可能是分鐘的階數(shù)。3.在當(dāng)前群集主控死去時,新群集主控的選舉所可以花費的時間等于以下各項的和1.心跳超時(下一投票時間)。這是在其間群集成員沒有接收到來自群集主控的任何心跳的時間段。默認(rèn)該時段為30秒。2.算法為達(dá)到合意而花費的時間。4.用戶可標(biāo)記其中可產(chǎn)生群集主控的群集子集。由于冗余網(wǎng)絡(luò)連接的存在等,該子集更好地適于參與合意。但是這意味著,如果合意列表中的所有成員死去,那么群集將沒有群集主控。強(qiáng)烈建議合意列表屬于分離的機(jī)器。可充當(dāng)群集主控并且參與合意算法的群集成員可用(xmfig.xml中的專用ConsensusProcessIdentifier來標(biāo)記。該標(biāo)識符可以是唯一的整數(shù)值。這可以是關(guān)于ServerMBean的屬性??蛻魬?yīng)當(dāng)恰能夠標(biāo)記可充當(dāng)群集主控的服務(wù)器并且產(chǎn)品應(yīng)當(dāng)能夠自動生成標(biāo)識符。可存在關(guān)于ClusterMBean的另一屬性,其指定合意參與者的總數(shù)目。在一個實施例中,該屬性稱為ConsensusParticipants。它可以是群集中具有CunsensusProcessIdentifier的服務(wù)器的總計。達(dá)成誰將是群集領(lǐng)導(dǎo)者的協(xié)議可以是耗費時間的過程。一旦選舉了群集領(lǐng)導(dǎo)者,可由群集領(lǐng)導(dǎo)者直接仲裁對于租約的請求,而不必經(jīng)過一輪合意。群集領(lǐng)導(dǎo)者將更新租約表并且將更新復(fù)制到合意列表中的所有其它成員。這可以不同于數(shù)據(jù)庫租賃。在數(shù)據(jù)庫租賃中,包括用于群集領(lǐng)導(dǎo)者的租約的所有租約可在數(shù)據(jù)庫中同等維持。以合意租賃的基礎(chǔ),群集領(lǐng)導(dǎo)者租約可用于快速地準(zhǔn)予其它租約。選擇默認(rèn)的租賃基礎(chǔ)是可能的。合意租賃基礎(chǔ)可以是默認(rèn)的設(shè)置。消費者可用數(shù)據(jù)庫租賃基礎(chǔ)來覆蓋默認(rèn),如果他們想要這樣。諸如ClusterMBean.setMigrationBasis()之類的值可控制默認(rèn)。控制臺可允許客戶選擇哪些群集節(jié)點可充當(dāng)群集主控并且自動生成合意過程標(biāo)識符。它還可基于在群集中選擇的服務(wù)器的數(shù)目來設(shè)置值ClusterMBean.setConsensusParticipants()。合意租賃基礎(chǔ),像所有其它的LeasingBasis接口的實現(xiàn)一樣,可對子系統(tǒng)和外部用戶隱藏。子系統(tǒng)可通過實現(xiàn)weblogic.cluster.singleton.SingletonService接口并且然后向SingletonService管理器登記來請求單例服務(wù)。鎖管理器也可以實現(xiàn)于租賃之上。當(dāng)可遷移服務(wù)由于任何原因(服務(wù)代碼中的程序缺陷、服務(wù)器崩潰、網(wǎng)絡(luò)隔離)而變?yōu)椴豢捎脮r,它可在其當(dāng)前位置被停用并且在新服務(wù)器上啟用。如果在新服務(wù)器上啟用時存在故障,它可在該服務(wù)器上停用并且再次遷移。默認(rèn)地,我們可嘗試在群集中的每個候選服務(wù)器上開始直到它已經(jīng)開始或者在每一個上失敗為止。如果它在每一個候選服務(wù)器上失敗,它可記錄錯誤并且讓它停用。服務(wù)的活性可由租賃的維持來證實。其上存活有服務(wù)的服務(wù)器可以負(fù)責(zé)經(jīng)由心跳機(jī)制保持租約存活。服務(wù)器崩潰可自然地導(dǎo)致租賃超時。在一個實施例中,每個可遷移目標(biāo)僅存在一個租約。該目標(biāo)上的所有服務(wù)可共享該租約。在一個實施例中,可認(rèn)為目標(biāo)上的所有服務(wù)有些相互依賴。(或者至少,用戶應(yīng)當(dāng)容忍目標(biāo)上一個失敗的服務(wù)造成整個目標(biāo)遷移)。在一個實施例中,管理服務(wù)器不需要對于自動遷移是活動的。遷移主控(MM)可跟蹤應(yīng)當(dāng)保持存活的所有服務(wù)。信息可從配置得到。這是有用的,因為如果服務(wù)是未租出的,那么它將不在存在于要監(jiān)視的表中。跨越群集中的所有服務(wù),配置可以是相同的。服務(wù)器可以處于管理器服務(wù)獨立(MSI)模式并且仍然參與自動遷移。唯一的限制是不可開始新服務(wù)。在一個實施例中,如果它們部署到單個服務(wù)器,沒有管理服務(wù)器分發(fā)配置改變,服務(wù)將不會被自動遷移。當(dāng)管理服務(wù)器開始并且同步每個人的配置時,可為任何新添加的服務(wù)啟用遷移(并且即使管理服務(wù)器隨后關(guān)機(jī),遷移可持續(xù))。如果租約丟失(例如,網(wǎng)絡(luò)發(fā)布可造成租約丟失),服務(wù)器可停用其服務(wù)。MM可在另外某處開始服務(wù)。如果網(wǎng)絡(luò)連接在停用之后但是在MM注意租約超時之前恢復(fù),這可導(dǎo)致冗余的停用調(diào)用,但是停用是等冪的。如果服務(wù)是不健康的然而尚未斷開的,它將向可遷移目標(biāo)傳達(dá)并且告訴它放棄租賃。MM將注意租賃消失/超時,并且將遷移它。以下方法可添加到MigratableTarget:/氺承*當(dāng)Migratable類檢測到故障并且需要停止和在不同服務(wù)器上開始時被它們調(diào)用。應(yīng)當(dāng)僅用于可遷移對象的不可恢復(fù)故障。如果shutdownServer為true(如對于JTA它將是這樣),那么服務(wù)器將關(guān)機(jī)并且服務(wù)因此而停用。*/publicvoidfailedService(StringserviceName,BooleanshutdownServer)圍欄的處理可以不同于JTA的情況。如果停用花費很長時間,則無法保證在下一服務(wù)器嘗試啟用服務(wù)之前停用它。在該情況下,如果優(yōu)雅的關(guān)機(jī)花費的時間比租約時段更長,服務(wù)器可立即并且突然地退出。它的服務(wù)可由為可遷移服務(wù)新選擇的家來接管和恢復(fù)。遷移主控在注意到期滿租約時,可開始遷移。它可設(shè)置注釋已為特定服務(wù)開始遷移的標(biāo)志。這可防止在之前遷移的中間重新注意期滿租賃并且再次遷移。(同樣的機(jī)制用在服務(wù)器遷移中。)服務(wù)(如果它仍是可用的)的當(dāng)前位置可停用它本身。然后新位置可調(diào)用目標(biāo)上的啟用。這可以是與原始可遷移服務(wù)中相同的代碼路徑。然而,可引入另外的步驟。當(dāng)目標(biāo)正被啟用時,它的第一動作可以是要求租賃。這可使遷移主控停止經(jīng)常地檢查它的活性。它還可提供關(guān)于操作的原子鎖;當(dāng)該目標(biāo)持有租賃時,沒有另外的一個可以是啟用的。接下來,服務(wù)可檢查是否為其指定了指名的節(jié)點主控(MM)預(yù)遷移腳本。然后,它可檢查當(dāng)前機(jī)器上節(jié)點管理器的存在。如果節(jié)點管理器不在那,但是存在指定的腳本,它可停止遷移。如果節(jié)點管理器在那,它可檢查看節(jié)點管理器是否已執(zhí)行了指定的預(yù)遷移腳本。如果節(jié)點管理器尚未運行腳本,它可告訴節(jié)點管理器運行預(yù)遷移腳本。額外標(biāo)志可傳遞到該腳本,以允許在我們正遷移JTA、JMS或完全不同的某些東西時腳本做某些不同的事情。例如,可提供占位符腳本,但是不需要完成特定的tk)g遷移。在一個實施例中,在節(jié)點管理器肯定地響應(yīng)它已運行了預(yù)遷移腳本之前,啟用將不會繼續(xù)下去。我們可進(jìn)行重復(fù)的嘗試來運行預(yù)遷移腳本。如果由于某些原因未成功,遷移將停止,并且我們將讓遷移主控將我們遷移到新服務(wù)器。在此時,我們依次調(diào)用可遷移服務(wù)的activate()方法。如果它們都運行沒有異常,遷移現(xiàn)在完成。如果在啟用期間存在錯誤,我們可停止并且進(jìn)入停用模式。停用本質(zhì)上是啟用的反面。首先,停用服務(wù)器可以指定順序調(diào)用所有服務(wù)上的停用。將記錄異常,但是不采取動作。一旦所有的服務(wù)已被調(diào)用了停用,我們將執(zhí)行另一節(jié)點主控檢查。服務(wù)將檢查是否為其指定了指名的節(jié)點主控后遷移腳本。然后,它可檢查當(dāng)前機(jī)器上節(jié)點管主控的存在。如果節(jié)點管理器在那,檢査看節(jié)點管理器是否已執(zhí)行了指定的后遷移腳本。如果節(jié)點管理器尚未運行腳本,告訴節(jié)點管理器運行后遷移腳本。額外標(biāo)記可傳遞到該腳本,以允許在我們正遷移JTA、JMS或完全不同的某些東西時腳本做某些不同的事情。例如在一個實施例中,我們可提供占位符腳本,但是無法完成特定的tlog遷移。如果后遷移腳本失敗,將運行殺死腳本,如果可得到的話。如果殺死腳本失敗,啟用可照常繼續(xù)。在最壞的情況下,當(dāng)已解決問題時,我們可在各處停用并且讓管理器重啟用它。最后,當(dāng)腳本部分是完整的時,服務(wù)將放棄租賃。腳本將在手工遷移期間被運行,如果指定的話。在一個實施例中,沒有自動恢復(fù)機(jī)制。默認(rèn)地,服務(wù)可永遠(yuǎn)活在它的新位置。管理員可在任何時間以與他們之前所做的同樣方式來手工將目標(biāo)遷移到新(或者,在自動恢復(fù)的情況下為舊)服務(wù)器。如果服務(wù)遷移到每個服務(wù)器并且從未成功啟用,它可被停用。關(guān)于MigratableTargetMBean的可選設(shè)置可控制根據(jù)完整群集循環(huán)數(shù)目要進(jìn)行多少次嘗試。注意,現(xiàn)有可遷移目標(biāo)限制仍然可應(yīng)用如果指定候選服務(wù)器,將僅嘗試候選服務(wù)器列表中的服務(wù)器。AdditionaiMigrationAttempts可默認(rèn)為零。它可控制我們將嘗試跨越群集(或者候選服務(wù)器列表,如果指定的話)中的每個服務(wù)器遷移服務(wù)的次數(shù)。例如,如果群集有3個成員,并且AdditionaiMigrationAttempts設(shè)置為2,我們可嘗試在群集中的每個服務(wù)器上開始它,然后暫停,再嘗試,暫停,并且嘗試最后一次。在該示例中,這意味著每個服務(wù)器可有3次機(jī)會來成功地啟用服務(wù)。在遷移嘗試之間的暫??捎芍T如MillisToSleepBetweenAttempts之類的值來控制。在一個實施例中,這僅控制當(dāng)服務(wù)未能在任何服務(wù)器上啟用所以我們返回最初并且再次嘗試時發(fā)生的暫停。當(dāng)進(jìn)行正常遷移時,不需要存在延遲。<MigratableTargetCluster=,,mycluster,,ConstrainedCandidateServers="serverl,server2"Name="MIG-TAR-l"UserPreferredServer=,,server1,,AdditionalMigrationAttempts="2"MillisToSleepBetweenAttempts=,,12000"AutoMigratable="true,,/>以下方法可添加到MigratableTargetMBean:/**可遷移服務(wù)可未能在每個可能配置的服務(wù)器上啟用。該屬性控制在服務(wù)已在每個服務(wù)器上失敗至少一次之后,還應(yīng)當(dāng)嘗試多少次。注意,這里指定的每次嘗試表示在所有經(jīng)配置服務(wù)器之間的遷移的另一完全流程。所以對于3服務(wù)器的群集并且值為2的情況,將嘗試總共4次另外的遷移。(原始服務(wù)器從不是有效的目的地)*/get/setAdditionalMigrationAttempts()/承氺*控制在getAdditionalMigrationAttempts()中描述的遷移嘗試之間應(yīng)當(dāng)有多長的暫停。注意,該延遲僅在服務(wù)在每個服務(wù)器上都未能啟用時發(fā)生。它不會造成其他遷移嘗試之間的任何類型的延遲。*/get/setMillisToSleepBetweenAttempts()JMS應(yīng)當(dāng)能夠重新啟動它本身,而不必經(jīng)受實際的遷移(對于正在討論的問題,為了性能目的,進(jìn)行完全的遷移將是浪費時間。為了它們的目的,將方法添加到遷移管理器,該方法將請求對指定服務(wù)的服務(wù)重新啟動,或者在相同服務(wù)器上的停用和重新啟用;沒有資源被釋放或獲得。請求'軟遷移'。指定的可遷移服務(wù)將停用并且然后在相同的服務(wù)器上重新啟用。節(jié)點管理器腳本將不被調(diào)用。依賴該可遷移的服務(wù)也將重新啟動restartMigratable(Migratablem)。在滿足某閾值之后,在一個服務(wù)器上的重復(fù)、快速的重新啟動嘗試將解釋為錯誤,并且目標(biāo)將遷移。因為這是僅設(shè)計用于內(nèi)部使用的方法,不需要提供閾值的外部配置。ServerMBean上的隱藏get/set方法可控制可進(jìn)行多少次嘗試并且時段是多長。(例如,它可設(shè)置為在12小時時段內(nèi)允許最多3次重新啟動。)get/setAllowedRestartedAttempts()控審U在getlntervalForRestartAttemptThrottling()中指定的間隔內(nèi)服務(wù)可以重新啟動多少次。getlntervalForRestartAttemptThrottling()控制將多長的間隔用于節(jié)流重新啟動嘗試。參見getAllowedRestartAttempts(),get/setlntervalForRestartAttemptThrottling()。遷移主控可以是類似于群集主控的服務(wù)。它可以是輕量單例的,無狀態(tài)的,并且以與群集主控相同的方式通過租賃競爭來維持。每個服務(wù)器可登記對獲得遷移主控租約的永久興趣。無論服務(wù)器當(dāng)前持有什么,它可執(zhí)行遷移任務(wù)的開始和停止。如果當(dāng)前遷移主控崩潰或者關(guān)機(jī),將由租賃基礎(chǔ)設(shè)施選擇等待服務(wù)器之一來接管租約,從而成為新的遷移主控。遷移主控不必與群集主控并列排置。遷移主控可以是遷移信息的儲存庫。它可保持它已完成的所有遷移的記錄(目標(biāo)名、源服務(wù)器、目的服務(wù)器、時間戳)。如果管理服務(wù)器可用,它可向管理服務(wù)器報告遷移以供控制臺/JMX/WLST顯示。當(dāng)遷移發(fā)生時,可添加非調(diào)試級記錄以向用戶提供信息??捎涗浄?wù)器上目標(biāo)的啟用和停用。當(dāng)前遷移主控可記錄遷移的細(xì)節(jié)源、目的、目標(biāo)名、時間。它還可記錄每次遷移是通過還是失敗??蓪⑹〉倪w移記錄為警告,而非錯誤。如果服務(wù)不能在任何服務(wù)器上成功地開始,我們將記錄錯誤??纱嬖谛陆涌?,SingletonService。MigmtableTarget可修改為擴(kuò)展SingletonService。MigratableTarget可以存活在MigratableTarget上的某些當(dāng)前服務(wù)所需的預(yù)/后啟用腳本的方式來提供另外的功能。注意,某些服務(wù)可實現(xiàn)的Migratable接口不是SingletonService。Migratable僅意味著類可針對MigratableTarget。實際上由代碼操作的是MigratableTarget本身。目標(biāo)可視情況開始/停止Migratable類,如它們總是這樣。SingletonService接口可由尋找輕量群集范圍單例的客戶或內(nèi)部用戶來實現(xiàn)。它沒有與MigratableTarget(其將支持腳本、候選機(jī)器等)一樣多的特征,但是更易于配置和創(chuàng)建。SingletonService可通過對本身調(diào)用停用來請求立即遷移。MM將注意消失的租約并且將把服務(wù)遷移到新位置。InterfaceSingletonService/承*這在服務(wù)器開始時并且在遷移的啟用階段期間被調(diào)用。它應(yīng)當(dāng)獲得任何系統(tǒng)資源并且啟動SingletonService要開始服務(wù)請求所需的任何服務(wù)。承/publicvoidactivate()/承*這在服務(wù)器關(guān)機(jī)時并且在遷移的停用階段期間被調(diào)用。它應(yīng)當(dāng)釋放在啟用時獲得的任何資源,并且停止應(yīng)當(dāng)僅可以從群集中一個提供者得到的任何服務(wù)。承/16publicvoiddeactivateOMigratableTargetMBean可具有額夕卜、可選的屬性。PreScript、PostScript禾口AutoMigmtable。<MigratableTargetCluster=,,mycluster"ConstrainedCandidateServers=,,serverl,server2,,Name="MIG-TAR-l"UserPreferredServer=,,serverl,,PreScript=,,../scriptdir/runMeBeforeActivation"PostScript=,,../scriptdir/runMeAflerDeactivation"KillScript="../anotherscriptdir/runMeInCaseOfFailure"AutoMigratable="true,,/〉以下方法可添加到MigratableTargetMBean/*承*設(shè)置自動可遷移值。如果可遷移目標(biāo)是自動可遷移的,則它將在其當(dāng)前存活于的服務(wù)器關(guān)機(jī)或故障時被自動遷移。承/Get/setAutoMigratable()/承承*設(shè)置在可遷移目標(biāo)實際被啟用之前運行的腳本。在啟用目標(biāo)前,如果存在指定的腳本和可用的節(jié)點管理器,我們將運行腳本。在沒有可用的節(jié)點管理器的情況下設(shè)置腳本將導(dǎo)致在遷移時的錯誤。如果腳本失敗或者不能找到,遷移將不會在當(dāng)前服務(wù)器上繼續(xù)進(jìn)行,并且將在下一適合服務(wù)器上被嘗試。(候選服務(wù)器列表中的下一服務(wù)器,如果沒有候選者列表則為群集中的下一服務(wù)器。)承/get/setPreScriptFileName()/氺承*設(shè)置在完全停用可遷移目標(biāo)之后運行的腳本。在停用目標(biāo)之后,如果存在指定的腳本和可用的節(jié)點管理器,我們將運行腳本。在沒有可用的節(jié)點管理器的情況下設(shè)置腳本將導(dǎo)致在遷移時的錯誤。如果腳本失敗或者不能找到,遷移將仍繼續(xù)進(jìn)行。get/setPostScriptFileName()/承承*設(shè)置在可遷移目標(biāo)的后腳本失敗的情況下運行的腳本。沒有可用的節(jié)點管理器的情況下設(shè)置腳本將導(dǎo)致在遷移時的錯誤。如果腳本失敗或者不能找到,遷移仍將繼續(xù)進(jìn)行。承/Get/setKillScriptFileNameO控制臺可遷移目標(biāo)頁可需要額外的復(fù)選框來允許使得能夠進(jìn)行自動遷移。不需要預(yù)腳本和后腳本,但是如果它們存在將會被執(zhí)行。用于可遷移目標(biāo)的控制臺編輯頁可具有可設(shè)置的這些選項。在存在依賴的情況下,針對一個可遷移目標(biāo)的多個可遷移服務(wù)可指定它們啟用的順序。自動可遷移的目標(biāo)不需要相關(guān)于彼此來排序。服務(wù)順序?qū)⑷匀挥嘘P(guān)于目標(biāo)是否是自動可遷移的。排序不需要暴露給消費者??蛇w移目標(biāo)基礎(chǔ)設(shè)施通常僅是內(nèi)部的??稍试S可遷移服務(wù)指定在它們的MBean中的部署順序。行為在部署順序上建模??纱嬖诮邮苷麛?shù)的稱為'Order'的值。(包括負(fù)值。)當(dāng)請求目標(biāo)啟用它的組件服務(wù)時,它可以從最小Order到最大Order的順序來這么做。如果沒有指定Order,可指定默認(rèn)值。為了一致性,這可以是部署順序使用的同樣的默認(rèn)100。如果兩個服務(wù)具有相同的Order數(shù),不保證它們的啟用順序相關(guān)于彼此。當(dāng)請求目標(biāo)停用它的組件服務(wù)時,它可以從最大Order到最小Order的順序來這么做。注意,如果兩個服務(wù)具有相同的Order數(shù),不保證它們的停用順序是它們啟用順序的相反。Order可以是動態(tài)值。Order的當(dāng)前值總是使用過的。這意味著,如果Order在啟用和停用之間改變,序列可能不是彼此的精確相反。失敗啟用的情況可遵循與正常啟用和停用相同的規(guī)則。成功啟用的服務(wù)的停用可以相反的順序發(fā)生,除非Order號是一樣的。在該情況下,停用順序可以不是啟用順序的相反。Weblogic.cluster.migration.Migratable接口可具有以下添力口的方法/氺承*返回用于該特定可遷移對象的順序值。這控制該對象相關(guān)于部署在可遷移目標(biāo)上的其它可遷移對象將以哪個順序來啟用和停用。承/publicintgetOrder()可用另外的setOrder方法來擴(kuò)充實現(xiàn)和MBeans,以允許該值的用戶配置。然而,這不是必需的。它取決于每個單個實現(xiàn)者來判定他們是否想要順序可配置。默認(rèn)的順序變量可在基礎(chǔ)接口DEFAULT—ORDER中提供。默認(rèn)地,所有當(dāng)前的實現(xiàn)類將從getOrder()調(diào)用將其返回。這可保證當(dāng)前的行為將不會改變,直到人們進(jìn)行了特定的努力來改變它們的排序為止。作業(yè)調(diào)度器可使得定時器知道群集并且提供了在群集中任何地方執(zhí)行它們的能力。定時器不再依靠創(chuàng)建它們的服務(wù)器。本說明書的目的是1.使得定時器知道群集。定時器應(yīng)當(dāng)能夠在群集中任何地方執(zhí)行并且按需要故障轉(zhuǎn)移(failover)。2.提供在應(yīng)用服務(wù)器群集內(nèi)的執(zhí)行的守護(hù)程序作業(yè)類型。用戶應(yīng)當(dāng)能夠指定像"重復(fù)地在群集中的某些地方執(zhí)行該作業(yè)。如果在群集中存在至少一個運行的成員,作業(yè)應(yīng)當(dāng)運行。"一樣的事情。對實際創(chuàng)建定時器的服務(wù)器沒有依賴。定時器執(zhí)行是跨越群集平衡的負(fù)載并且能夠在故障的情況下故障轉(zhuǎn)移到另一運行成員。存在基于它們的生命周期不同的兩類定時器。本地定時器本地定時器可在服務(wù)器JAVA虛擬機(jī)(JVM)內(nèi)調(diào)度并且在相同的20JVM內(nèi)永遠(yuǎn)存活。只要JVM存活,定時器運行,并且當(dāng)JVM退出時定時器死去。應(yīng)用需要在隨后的服務(wù)器啟動時重新調(diào)度定時器。群集范圍的定時器群集范圍的定時器可知道形成相同群集的部分的其它服務(wù)器JVM并且能夠負(fù)載平衡和故障轉(zhuǎn)移。定時器生命周期不綁定到創(chuàng)建它的服務(wù)器而是綁定到群集的生命周期。只要至少一個群集成員存活,定時器能夠執(zhí)行。這種定時器能夠幸免于完整的群集重新啟動。群集范圍的定時器由作業(yè)調(diào)度器創(chuàng)建和處理。每種類型具有它自己的優(yōu)點和缺點。本地定時器可以毫秒的階數(shù)處理微粒度的周期。作業(yè)調(diào)度器不能用如定時器需要被持續(xù)的精度來處理微粒度的周期。群集范圍的定時器以幾秒或更大的階數(shù)用粗粒度的間隔工作得很好。作業(yè)調(diào)度器可用于調(diào)度作業(yè),像每天或者在每周結(jié)束時運行報告。即使創(chuàng)建它的服務(wù)器不再可用也運行作業(yè)是重要的。其它群集成員可確保作業(yè)繼續(xù)執(zhí)行。作業(yè)調(diào)度器可滿足以下要求1.使用客戶配置的數(shù)據(jù)庫來持續(xù)定時器并且使得它們對于整個群集可用。作業(yè)調(diào)度器是依賴于數(shù)據(jù)庫的并且不能沒有它而工作。支持Oracle、DB2、Informix、MySQL、Sybase、MSSQL。2.在一個實施例中,作業(yè)調(diào)度器將僅在群集中工作。3.所提交的作業(yè)可在群集中任何地方運行。作業(yè)的兩個連續(xù)執(zhí)行可在相同服務(wù)器上或不同服務(wù)器上運行。僅一個服務(wù)器可在任何給定的時間點執(zhí)行作業(yè)。4.作業(yè)調(diào)度器依賴于租賃。需要租賃支持來選舉定時器主控。每個服務(wù)器在執(zhí)行作業(yè)之前也可使用租賃來要求對作業(yè)的所有權(quán)。5.作業(yè)調(diào)度器可使用與服務(wù)器遷移和單例服務(wù)相同的租賃基礎(chǔ)。6.作業(yè)調(diào)度器可使用良好定義的名稱綁定到每個服務(wù)器的全局JNDI樹內(nèi)。JNDI名可以是"weblogic.JobSclieduler"。用戶可將所查找的對象轉(zhuǎn)型為commonj.timers.TimerManager并且使用它的方法來創(chuàng)建作業(yè)。7.作業(yè)調(diào)度器僅接受可串行化的作業(yè)。非可串行化的作業(yè)可使用20IllegalArgumentException來拒絕。8.ClusterMBean可暴露稱為DataSourceForJobScheduler的屬性,該屬性將用于訪問數(shù)據(jù)庫。在一個實施例中,作業(yè)調(diào)度器功能僅在配置數(shù)據(jù)源的情況下可得到。9.在一個實施例中,作業(yè)調(diào)度器將僅支持以固定延遲調(diào)度的功能。兩個連續(xù)的作業(yè)執(zhí)行由1司隔'時期分離。10.在一個實施例中,僅支持作業(yè)的循環(huán)負(fù)載平衡。每個群集成員將周期性地投票定時器主控(其僅僅是另一群集成員)用于要執(zhí)行的就緒作業(yè)。定時器主控將向每個成員給出總的就緒作業(yè)的片段用于執(zhí)行。作業(yè)調(diào)度器可需要數(shù)據(jù)庫用于持續(xù)定時器。服務(wù)器遷移功能支持的所有數(shù)據(jù)庫也可由作業(yè)調(diào)度器支持。作業(yè)調(diào)度器可使用ClusterMBean.getDataSourceForJobScheduler()訪問數(shù)據(jù)庫。用戶可創(chuàng)建稱為"weblogic—timers"的表,其具有以下字段名稱類型TIMER—IDNUMBERTIMER—INFOVARCHAR2(100)TIMER—MANAGER—NAMEVARCHAR2(滿)CLUSTER—NAMEVARCHAR2(100)DOMAIN—NAMEVARCHAR2(100)TIMER—LISTENERBLOBNEXT—EXECUTION—TIMENUMBERINTERVALNUMBER在一個實施例中,作業(yè)調(diào)度器僅在群集中工作。所有群集節(jié)點可參與執(zhí)行作業(yè)而沒有區(qū)別。在一個實施例中,僅在將DataSourceForJobSchedulerClusterMBean屬性設(shè)置為config.xml中的有效數(shù)據(jù)源時,將開啟作業(yè)調(diào)度器。這里是示例<domain><cluster><name〉Cluster-0</name><multicast-address>239.192.0.0</multicast-address><multi-port>7466</multicast-port><data-source-for-job-scheduler>JDBCDataSource匿0〈/data畫source-for-job-scheduler〉</cluster><jdbc-system-resource><name>JDBCDataSource-0</name><target〉myserver,server-0</target><description-file-name>jdbc/JDBC—Data—Source-0-3407-jdbc.xml</description-file-name></jdbc-system-resource></domain>可使用JNDI名"weblogic.JobScheduler"來查找作業(yè)調(diào)度器并且將其轉(zhuǎn)型為commonj.timers.TimerManager。這里是示例InitialContextic=newInitialContext();commonj.timers.TimerManagerjobScheduler=(common.timers.TimerManager)ic.lookup("weblogic.JobScheduler");Commonj.timers.TimerListenertimeListener=newMySerializableTimerListener();jobScheduler.schedule(timerListener,0,30承1000);〃每隔30秒執(zhí)行該作業(yè)privatestaticclassMySerializableTimerListenerimplementscommonj.timers.TimerListener,java.io.Serializable{publicvoidtimerExpired(Timertimer){...}作業(yè)調(diào)度器可在執(zhí)行之前使用租賃功能來要求單個定時器的所有權(quán),并且選擇定時器主控。定時器主控可完全在一個群集成員上運行并且負(fù)責(zé)將定時器分配到單個服務(wù)器。租賃基礎(chǔ)可依賴于ClusterMBean.getLeasingBasising()屬性。如果LeasingBasis設(shè)置到數(shù)據(jù)庫,那么與數(shù)據(jù)庫租賃相關(guān)聯(lián)的配置可就像在服務(wù)器遷移中一樣來設(shè)置。如果LeasingBasis設(shè)置為"合意",那么對于租賃不需要數(shù)據(jù)庫支持??刂婆_可提供選項來設(shè)置ClusterMBean.setDataSourceForJobScheduler()。數(shù)據(jù)源可從在關(guān)機(jī)期間的服務(wù)器遷移或者會話連續(xù)性繼承。如果客戶配置用于一個的數(shù)據(jù)源,他們應(yīng)當(dāng)也能夠?qū)τ谧鳂I(yè)調(diào)度器功能重用它??墒褂酶鶕?jù)本公開教導(dǎo)編程的常規(guī)通用的專用數(shù)字計算機(jī)或微處理器來實現(xiàn)一個實施例,如對于計算機(jī)領(lǐng)域技術(shù)人員將是明顯的?;诒竟_的教導(dǎo)可容易地由熟練的編程者準(zhǔn)備適當(dāng)?shù)能浖幋a,如對于軟件領(lǐng)域技術(shù)人員將是明顯的。本發(fā)明還可通過準(zhǔn)備集成電路或者通過互連常規(guī)組件電路的適當(dāng)網(wǎng)絡(luò)來實現(xiàn),如對于本領(lǐng)域技術(shù)人員將很容易明顯的。一個實施例包括作為存儲介質(zhì)(媒體)的計算機(jī)程序產(chǎn)品,所述存儲介質(zhì)在其上/其中存儲了可用于編程計算機(jī)以執(zhí)行這里給出的任何特征的指令。存儲介質(zhì)可包括但不限于任何類型的磁盤,包括軟盤、光盤、DVD、CD-ROM、微驅(qū)動器、和磁光盤、ROM、RAM、EPROM、EEPROM、DRAM、媒體的閃存或者適于存儲在任何一種計算機(jī)可讀介質(zhì)(媒體)上存儲的指令和/或數(shù)據(jù)的設(shè)備,本發(fā)明可包括用于控制通用/專用計算機(jī)的硬件或微處理器,并且用于使得計算機(jī)或微處理器能夠與人類用戶或者利用本發(fā)明結(jié)果的其它機(jī)構(gòu)交互的軟件。該軟件可包括但不限于設(shè)備驅(qū)動、操作系統(tǒng)、執(zhí)行環(huán)境/容器、和用戶應(yīng)用。本發(fā)明的實施例可包括提供用于實現(xiàn)本發(fā)明過程的代碼。該提供可包括以任何方式將代碼提供給用戶。例如,提供可包括向用戶發(fā)送包含代碼的數(shù)字信號;向用戶提供物理媒體上的代碼;或者使得代碼可得到的任何其它方法。本發(fā)明的實施例可包括用于發(fā)送代碼的計算機(jī)實現(xiàn)的方法,該代碼可在計算機(jī)上執(zhí)行以執(zhí)行本發(fā)明實施例的任何一種過程。發(fā)送可包括通過網(wǎng)絡(luò)的任何部分,例如因特網(wǎng)的;通過線纜、空氣或空間的;或者通過任何其它類型的傳輸來傳送。發(fā)送可包括發(fā)起代碼傳輸;或者使得代碼從另一區(qū)域或者國家傳遞進(jìn)入任何區(qū)域或者國家。例如,發(fā)送包括使得作為之前尋址的結(jié)果將代碼通過網(wǎng)絡(luò)的部分傳送并且將包括代碼的數(shù)據(jù)發(fā)送到用戶。到用戶的傳輸可包括由任何區(qū)域或國家中的用戶接收任何傳輸,不管傳輸從什么位置發(fā)送。本發(fā)明的實施例可包括包含可在計算機(jī)上執(zhí)行以執(zhí)行本發(fā)明實施例的任何一種過程的代碼的信號。信號可通過網(wǎng)絡(luò),例如因特網(wǎng);通過線纜、空氣或空間;或者通過任何其它類型的傳輸來發(fā)送。不需要全部信號同時在運輸中。信號可隨著它的傳送周期而及時擴(kuò)展。信號不被認(rèn)作為當(dāng)前運輸中的快照。已為說明和描述的目的提供了本發(fā)明的優(yōu)選實施例的前述描述。它不旨在是窮盡的或者將本發(fā)明限于公開的精確形式。對于有關(guān)領(lǐng)域中的普通技術(shù)人員來說,許多修改和變化將是明顯的。例如,所公開的本發(fā)明實施例中執(zhí)行的步驟可以交替順序來執(zhí)行,可省略某些步驟,并且可添加另外的步驟。選擇和描述實施例以便最好地說明本發(fā)明的原理及其實際應(yīng)用,由此使得本領(lǐng)域其它技術(shù)人員能夠理解用于各種實施例并且具有各種修改的本發(fā)明,所述修改適于特定使用的預(yù)期。旨在本發(fā)明的范圍由權(quán)利要求及其等同物來定義。權(quán)利要求1.一種計算機(jī)實現(xiàn)的方法,包括在應(yīng)用服務(wù)器的群集處,確定群集領(lǐng)導(dǎo)者;使用所述群集領(lǐng)導(dǎo)者來在所述應(yīng)用服務(wù)器之一處建立租約表;使用所述租約表來維持用于單例服務(wù)的至少一個租約。2.根據(jù)權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其中所述租約表用于允許所述單例服務(wù)的自動遷移。3.根據(jù)權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其中所述群集領(lǐng)導(dǎo)者在競爭中選擇。4.根據(jù)權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其中每個應(yīng)用服務(wù)器周期性地嘗試成為所述群集領(lǐng)導(dǎo)者。5.根據(jù)權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其中所述確定步驟包括選擇最早開始的所述應(yīng)用服務(wù)器。6.根據(jù)權(quán)利要求1所述的計算機(jī)實現(xiàn)的方法,其中所述群集領(lǐng)導(dǎo)者維活所述群集的其它應(yīng)用服務(wù)器。7.根據(jù)權(quán)利要求6所述的計算機(jī)可讀介質(zhì),其中,如果所述群集領(lǐng)導(dǎo)者未能維活所述其它應(yīng)用服務(wù)器則所述其它應(yīng)用服務(wù)器選擇另一群集領(lǐng)導(dǎo)者。8.根據(jù)權(quán)利要求1所述的計算機(jī)實現(xiàn)的介質(zhì),其中所述租約表在與所述租約領(lǐng)導(dǎo)者相同的應(yīng)用服務(wù)器處建立。9.一種計算機(jī)實現(xiàn)的系統(tǒng),包括群集中用于運行單例服務(wù)的第一應(yīng)用服務(wù)器,所述第一應(yīng)用服務(wù)器在租約表處為所述單例服務(wù)維持租約;和遷移主控,其檢査所述租約表并且如果所述第一應(yīng)用服務(wù)器未能維持所述租約則將所述單例服務(wù)重新分配給所述群集的第二應(yīng)用服務(wù)器。10.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述重新分配所述單例服務(wù)是因為所述第一應(yīng)用服務(wù)器崩潰。11.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述重新分配所述單例服務(wù)是因為所述第一應(yīng)用服務(wù)器從所述租約表隔離。12.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述第一應(yīng)用服務(wù)器維活所述租約以維持對所述單例服務(wù)的控制。13.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述單例服務(wù)是JMS服務(wù)器。14.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述單例服務(wù)是事務(wù)恢復(fù)服務(wù)。15.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述單例服務(wù)是定時器主控。16.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述第二應(yīng)用服務(wù)器運行預(yù)定的啟用腳本。17.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述第一應(yīng)用服務(wù)器運行預(yù)定的停用腳本。18.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述遷移主控選擇所述下一應(yīng)用服務(wù)器來運行所述單例服務(wù)。19.根據(jù)權(quán)利要求9所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述單例服務(wù)是JMS服務(wù)并且其中在任何遷移之前所述遷移管理器嘗試在所述第一應(yīng)用服務(wù)器上的重新啟動。20.—種計算機(jī)實現(xiàn)的系統(tǒng),包括在群集的應(yīng)用服務(wù)器處的定時器主控,所述定時器主控將所調(diào)度作業(yè)分配到所述群集的其它應(yīng)用服務(wù)器;所述應(yīng)用服務(wù)器維持來自租約表的用于所述定時器主控的租約;所述定時器主控在數(shù)據(jù)庫上存儲所調(diào)度作業(yè)的作業(yè)信息,其中在所述應(yīng)用服務(wù)器崩潰的情況下,所述群集的另一應(yīng)用服務(wù)器被分配了所述定時器主控并且使用所述作業(yè)信息來分配所調(diào)度作業(yè)。21.根據(jù)權(quán)利要求20所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所調(diào)度作業(yè)包括報告。22.根據(jù)權(quán)利要求21所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述報告是數(shù)據(jù)庫報告。23.根據(jù)權(quán)利要求20所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述租約表在所述數(shù)據(jù)庫中。24.根據(jù)權(quán)利要求20所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述定時器主控是單例服務(wù)。25.根據(jù)權(quán)利要求24所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述定時器主控由遷移主控分配給另一應(yīng)用服務(wù)器。26.根據(jù)權(quán)利要求20所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述其它應(yīng)用服務(wù)器從所述定時器主控請求作業(yè)。27.根據(jù)權(quán)利要求20所述的計算機(jī)實現(xiàn)的系統(tǒng),其中所述作業(yè)被調(diào)度為在非高峰時間處運行。全文摘要本發(fā)明的一個實施例包括確定群集領(lǐng)導(dǎo)者并且使用群集領(lǐng)導(dǎo)者來在應(yīng)用服務(wù)器群集的一個應(yīng)用服務(wù)器處建立租約表。租約表可用于維持用于單例服務(wù)的至少一個租約。文檔編號G06F7/00GK101460921SQ200780017766公開日2009年6月17日申請日期2007年1月4日優(yōu)先權(quán)日2006年5月16日發(fā)明者萬凱特森·蘭加那森,亞倫·菲斯克,普拉賽德·佩達(dá)達(dá),普里西拉·C·方,迪安·伯納德·雅各布斯,那瑞什·瑞萬努魯申請人:Bea系統(tǒng)公司