国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件的方法與裝置與流程

      文檔序號:12176705閱讀:428來源:國知局
      一種處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件的方法與裝置與流程

      本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件的方法與裝置



      背景技術(shù):

      分布式鎖(Distributed Lock)是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式;分布式鎖管理(Distributed Lock Manager,簡稱DLM)運(yùn)行在分布式系統(tǒng)中各個(gè)節(jié)點(diǎn)上,控制各資源在節(jié)點(diǎn)上的分布,提供資源訪問權(quán)限(即鎖權(quán)限)的授予策略以及管理共享資源的訪問權(quán)限。

      因?yàn)榉植际较到y(tǒng)中有多個(gè)節(jié)點(diǎn),因此可能會發(fā)生多個(gè)節(jié)點(diǎn)事件,并且節(jié)點(diǎn)事件相互重疊,現(xiàn)有處理重疊節(jié)點(diǎn)事件的方案為,分布式鎖管理(Distributed Lock Manager,簡稱DLM)采用先進(jìn)先出隊(duì)列(FIFO)接收節(jié)點(diǎn)事件,然后根據(jù)節(jié)點(diǎn)事件發(fā)生的時(shí)間先后順序從FIFO取出節(jié)點(diǎn)事件,逐一串行處理。例如,T1時(shí)刻,節(jié)點(diǎn)2故障,F(xiàn)IFO接收節(jié)點(diǎn)2故障事件,當(dāng)前沒有節(jié)點(diǎn)事件處理,于是啟動事件處理線程,處理節(jié)點(diǎn)2故障事件;T2時(shí)刻,節(jié)點(diǎn)6上線,F(xiàn)IFO接收節(jié)點(diǎn)6上線事件,此時(shí),還正在處理節(jié)點(diǎn)2故障事件,節(jié)點(diǎn)6上線事件處于排隊(duì)狀態(tài);當(dāng)節(jié)點(diǎn)2故障事件處理完畢后,發(fā)現(xiàn)FIFO非空,從FIFO中取出節(jié)點(diǎn)6上線事件進(jìn)行處理。

      現(xiàn)有技術(shù)的方案雖然保證了重疊節(jié)點(diǎn)事件的有序處理,當(dāng)分布式節(jié)點(diǎn)系統(tǒng)發(fā)生較多的重疊節(jié)點(diǎn)事件時(shí),串行處理所有的節(jié)點(diǎn)事件需要耗費(fèi)較長的時(shí)間,導(dǎo)致DLM恢復(fù)正常工作的時(shí)間也較長,顯著影響分布式系統(tǒng)的運(yùn)行效率。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明實(shí)施例提供了一種處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件的方法與裝置,當(dāng)分布式系統(tǒng)中發(fā)生的重疊節(jié)點(diǎn)事件時(shí),能夠同時(shí)處理多個(gè)節(jié)點(diǎn)事件,從而節(jié)省了處理重疊節(jié)點(diǎn)事件的時(shí)間,使DLM能較快地恢復(fù)正常工作,減少了對分布式系統(tǒng)運(yùn)行效率的影響。

      重疊節(jié)點(diǎn)事件之間的關(guān)系有兩種情況,一種情況是一個(gè)節(jié)點(diǎn)事件不影響另一個(gè)節(jié)點(diǎn)事件的處理,即不存在沖突;另一種情況是一個(gè)節(jié)點(diǎn)事件影響另一個(gè)節(jié)點(diǎn)事件的處理,即存在沖突?,F(xiàn)有技術(shù)中處理重疊節(jié)點(diǎn)事件的方案不對上述情況進(jìn)行區(qū)分,只是簡單地將所有的節(jié)點(diǎn)事件串行處理,從而導(dǎo)致重疊節(jié)點(diǎn)事件的處理時(shí)間較長,影響分布式系統(tǒng)運(yùn)行的效率。而本發(fā)明實(shí)施例提供的處理重疊節(jié)點(diǎn)事件的方法對重疊的節(jié)點(diǎn)事件分情況處理,不沖突的節(jié)點(diǎn)事件任務(wù)同時(shí)處理,沖突的節(jié)點(diǎn)事件才串行處理,從而節(jié)省了重疊節(jié)點(diǎn)事件的處理時(shí)間,減少了分布式系統(tǒng)運(yùn)行效率的影響。

      第一方法,提供了一種處理重疊節(jié)點(diǎn)事件的方法,該方法應(yīng)用在分布式系統(tǒng)中,該方法包括:首先目標(biāo)節(jié)點(diǎn)接收第一節(jié)點(diǎn)事件,生成第一節(jié)點(diǎn)事件任務(wù);其次確定第一節(jié)點(diǎn)事件任務(wù)與該目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且第一節(jié)點(diǎn)事件任務(wù)與該分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突,再將第一節(jié)點(diǎn)事件任務(wù)放入到運(yùn)行隊(duì)列中,其中,上述運(yùn)行隊(duì)列用于存放正在執(zhí)行的一個(gè)或多個(gè)節(jié)點(diǎn)事件任務(wù),上述沖突隊(duì)列用于存放等待執(zhí)行的節(jié)點(diǎn)事件任務(wù);然后執(zhí)行所述運(yùn)行隊(duì)列中的所述第一節(jié)點(diǎn)事件任務(wù)。

      結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,運(yùn)行隊(duì)列中存放有第二節(jié)點(diǎn)事件任務(wù),該方法還包括:確定第一節(jié)點(diǎn)事件任務(wù)與第二節(jié)點(diǎn)事件任務(wù)沖突,并且第一節(jié)點(diǎn)事件任務(wù)阻塞第二節(jié)點(diǎn)事件任務(wù)執(zhí)行,則停止執(zhí)行第二節(jié)點(diǎn)事件任務(wù);并將第二節(jié)點(diǎn)事件任務(wù)放入到?jīng)_突隊(duì)列中。該實(shí)現(xiàn)方式實(shí)現(xiàn)了DLM停止執(zhí)行先發(fā)生的節(jié)點(diǎn)事件任務(wù),從而保證了當(dāng)后發(fā)生的節(jié)點(diǎn)事件任務(wù)阻塞先發(fā)生的節(jié)點(diǎn)事件任務(wù)執(zhí)行時(shí),節(jié)點(diǎn)事件任務(wù)的有序執(zhí)行。并且該實(shí)現(xiàn)方式采用了運(yùn)行隊(duì)列管理正在執(zhí)行的節(jié)點(diǎn)事件任務(wù),當(dāng)需要改變某個(gè)正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)狀態(tài)時(shí),DLM可快速找到該節(jié)點(diǎn)事件任務(wù),并對其進(jìn)行相應(yīng)處理,從而提高了DLM處理節(jié)點(diǎn)事件的效率。

      結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,上述方法還包括:當(dāng)?shù)谝还?jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),將所述第二節(jié)點(diǎn)事件任務(wù)放入到運(yùn)行隊(duì)列;執(zhí)行第二節(jié)點(diǎn)事件任務(wù)。該實(shí)現(xiàn)方式實(shí)現(xiàn)了當(dāng)阻塞先發(fā)生的節(jié)點(diǎn)事件任務(wù)執(zhí)行的后發(fā)生節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),DLM執(zhí)行被阻塞的節(jié)點(diǎn)事件任務(wù),從而使得先發(fā)生的節(jié)點(diǎn)事件得到快速處理。

      結(jié)合第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,上述方法還包括:當(dāng)?shù)谝还?jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),確定沖突隊(duì)列中是否存在與第一事件任務(wù)沖突的第三節(jié)點(diǎn)事件任務(wù);如果存在所述第三節(jié)點(diǎn)事件任務(wù),則確定運(yùn)行隊(duì)列和沖突隊(duì)列中是否存在與所述第三節(jié)點(diǎn)事件任務(wù)沖突的第四節(jié)點(diǎn)事件任務(wù);如果不存在所述第四節(jié)點(diǎn)事件任務(wù),將所述第三節(jié)點(diǎn)事件任務(wù)放入到運(yùn)行隊(duì)列;執(zhí)行所述第三節(jié)點(diǎn)事件任務(wù)。該實(shí)現(xiàn)方式實(shí)現(xiàn)了DLM有序處理沖突的重疊節(jié)點(diǎn)事件任務(wù)。

      結(jié)合第一方面,在第一方面的第四種可能的實(shí)現(xiàn)方式中,上述確定第一節(jié)點(diǎn)事件任務(wù)與該目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且第一節(jié)點(diǎn)事件任務(wù)與該分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突包括:判斷所述第一節(jié)點(diǎn)事件任務(wù)與所述運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不存在執(zhí)行順序,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不存在執(zhí)行順序。在該實(shí)現(xiàn)方法中,重疊節(jié)點(diǎn)事件任務(wù)間不存在沖突,包括重疊節(jié)點(diǎn)事件任務(wù)之間不存在執(zhí)行順序,從而使得不存在執(zhí)行順序的重疊節(jié)點(diǎn)事件任務(wù)能夠同時(shí)執(zhí)行,節(jié)省了DLM處理重疊節(jié)點(diǎn)事件的所耗事件,提高了分布式系統(tǒng)的運(yùn)行效率。

      第二方面,提供了一種處理重疊節(jié)點(diǎn)事件的裝置,該裝置包括:接收單元,用于目標(biāo)節(jié)點(diǎn)接收第一事件和生成第一事件任務(wù);放入單元,確定第一節(jié)點(diǎn)事件任務(wù)與該目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且第一節(jié)點(diǎn)事件任務(wù)與分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突,該放入單元用于將第一節(jié)點(diǎn)事件任務(wù)放入到上述運(yùn)行隊(duì)列中,其中,上述運(yùn)行隊(duì)列用于存放正在執(zhí)行的一個(gè)或多個(gè)節(jié)點(diǎn)事件任務(wù),上述沖突隊(duì)列用于存放等待執(zhí)行的節(jié)點(diǎn)事件任務(wù);執(zhí)行單元,用于執(zhí)行上述運(yùn)行隊(duì)列中的第一事件任務(wù)。

      結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,運(yùn)行隊(duì)列中存放有第二節(jié)點(diǎn)事件任務(wù),上述裝置還包括:停止單元,確定第一節(jié)點(diǎn)事件任務(wù)與第二節(jié)點(diǎn)事件任務(wù)沖突,并且第一節(jié)點(diǎn)事件任務(wù)阻塞第二節(jié)點(diǎn)事件任務(wù)執(zhí)行,該停止單元用于停止執(zhí)行所述第二節(jié)點(diǎn)事件。該實(shí)現(xiàn)方式實(shí)現(xiàn)了DLM停止執(zhí)行先發(fā)生的節(jié)點(diǎn)事件任務(wù),從而保證了當(dāng)后發(fā)生的節(jié)點(diǎn)事件任務(wù)阻塞先發(fā)生的節(jié)點(diǎn)事件任務(wù)執(zhí)行時(shí),節(jié)點(diǎn)事件任務(wù)的有序執(zhí)行。并且該實(shí)現(xiàn)方式采用了運(yùn)行隊(duì)列管理正在執(zhí)行的節(jié)點(diǎn)事件任務(wù),當(dāng)需要改變某個(gè)正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)狀態(tài)時(shí),DLM可快速找到該節(jié)點(diǎn)事件任務(wù),并對其進(jìn)行相應(yīng)處理,從而提高了DLM處理節(jié)點(diǎn)事件的效率。

      結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述裝置還包括:判斷單元,用于判斷第一節(jié)點(diǎn)事件任務(wù)與運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不存在執(zhí)行順序,并且第一節(jié)點(diǎn)事件任務(wù)與沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不存在執(zhí)行順序。在該實(shí)現(xiàn)方法中,判斷單元能夠判斷重疊節(jié)點(diǎn)事件任務(wù)是否存在執(zhí)行順序,當(dāng)重疊節(jié)點(diǎn)事件任務(wù)間不存在執(zhí)行順序時(shí),則重疊節(jié)點(diǎn)事件間不存在沖突,從而保證了使得不存在執(zhí)行順序的重疊節(jié)點(diǎn)事件任務(wù)能夠同時(shí)執(zhí)行,節(jié)省了DLM處理重疊節(jié)點(diǎn)事件的所耗時(shí)間,提高了分布式系統(tǒng)的運(yùn)行效率。

      實(shí)施例提供的處理重疊節(jié)點(diǎn)事件的方法和裝置采用運(yùn)行隊(duì)列和沖突隊(duì)列兩個(gè)隊(duì)列來管理節(jié)點(diǎn)事件任務(wù),不沖突的節(jié)點(diǎn)事件任務(wù)放入運(yùn)行隊(duì)列中執(zhí)行,而無須等待處理,實(shí)現(xiàn)了多個(gè)節(jié)點(diǎn)事件同時(shí)處理,沖突的節(jié)點(diǎn)事件任務(wù)放入到?jīng)_突隊(duì)列中,實(shí)現(xiàn)了沖突的節(jié)點(diǎn)事件有序處理,從而節(jié)省了處理重疊節(jié)點(diǎn)事件的時(shí)間,使DLM能較快地恢復(fù)正常工作,減少了對分布式系統(tǒng)運(yùn)行效率的影響。

      附圖說明

      圖1為本發(fā)明實(shí)施例提供的處理重疊節(jié)點(diǎn)事件方法的應(yīng)用場景圖;

      圖2為本發(fā)明實(shí)施例中DLM管理分布式系統(tǒng)中共享資源的示意圖;

      圖3為本發(fā)明實(shí)施例中分布式系統(tǒng)中節(jié)點(diǎn)事件的示意圖;

      圖4為本發(fā)明實(shí)施例一提供的處理重疊節(jié)點(diǎn)事件方法的流程圖;

      圖5為本發(fā)明實(shí)施例三提供的恢復(fù)任務(wù)和遷移任務(wù)沖突的示意圖;

      圖6為本發(fā)明實(shí)施例四提供的恢復(fù)任務(wù)和遷移任務(wù)沖突的示意圖;

      圖7為本發(fā)明實(shí)施例五提供的恢復(fù)任務(wù)和遷移任務(wù)沖突的示意圖;

      圖8為本發(fā)明實(shí)施例六提供的遷移任務(wù)之間沖突的示意圖;

      圖9為本發(fā)明實(shí)施例七提供的遷移任務(wù)之間沖突的示意圖。

      具體實(shí)施方式

      為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

      分布式系統(tǒng)由多個(gè)節(jié)點(diǎn)組成。例如,如果多臺計(jì)算機(jī)組成一個(gè)分布式系統(tǒng),那么每臺計(jì)算機(jī)就是一個(gè)節(jié)點(diǎn);如果多臺服務(wù)器組成一個(gè)分布式系統(tǒng),那么每臺服務(wù)器就是一個(gè)節(jié)點(diǎn);如果多個(gè)計(jì)算機(jī)、智能終端、服務(wù)器等具有相應(yīng)數(shù)據(jù)處理能力和儲存功能的設(shè)備組成一個(gè)分布式系統(tǒng),那么其中的每個(gè)設(shè)備為一個(gè)節(jié)點(diǎn)。本發(fā)明實(shí)施例提供的處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件的方法和裝置的應(yīng)用場景如圖1所示,假設(shè)分布式系統(tǒng)中有N個(gè)節(jié)點(diǎn)(node,簡稱N):節(jié)點(diǎn)1、節(jié)點(diǎn)2、……、節(jié)點(diǎn)N,每個(gè)節(jié)點(diǎn)上運(yùn)行了一定數(shù)量的應(yīng)用程序(application,簡稱App)。假設(shè)分布式系統(tǒng)有M個(gè)共享資源(resource,簡稱res):res1、res2、……、resM(這些資源可能是LUN,文件系統(tǒng),或其他資源)。

      DLM把各res分布到分布式系統(tǒng)的各個(gè)節(jié)點(diǎn)上,即每個(gè)節(jié)點(diǎn)都會管理一定數(shù)量的res,管理res的對象稱為Mas(master,簡稱Mas),M個(gè)res對應(yīng)M個(gè)Mas,Mas分布在各節(jié)點(diǎn)上;同時(shí),每個(gè)res在每個(gè)節(jié)點(diǎn)上都有代理(proxy)。例如,res3由節(jié)點(diǎn)3管理,則其Mas也分布在節(jié)點(diǎn)3上面,但是res3在N個(gè)節(jié)點(diǎn)上都有自己的代理。

      各節(jié)點(diǎn)的App都可以訪問這些res,但必須向該res的Mas申請權(quán)限,權(quán)限申請成功后才能訪問。例如,節(jié)點(diǎn)3上的App 3-4,需要訪問節(jié)點(diǎn)1管理的res2,則申請?jiān)L問權(quán)限的過程是:App 3-4向位于本節(jié)點(diǎn)3上的代理2發(fā)起權(quán)限申請,節(jié)點(diǎn)3上的代理2再向分布在節(jié)點(diǎn)1上的Mas 2發(fā)起權(quán)限申請,之后Mas2向節(jié)點(diǎn)3的代理2授權(quán),最后代理2向App3-4授權(quán)。

      DLM采用一致性哈希(hash)算法管理分布式系統(tǒng)中的res,具體為采用哈希算法,計(jì)算分布式系統(tǒng)中各個(gè)節(jié)點(diǎn)的通用唯一識別碼(uuid)值,根據(jù)uuid值的大小,把各節(jié)點(diǎn)順時(shí)針排布到哈希環(huán)上,每個(gè)節(jié)點(diǎn)管理哈希環(huán)上的一段區(qū)間。如圖2所示,圓圈代表節(jié)點(diǎn),小方塊代表res。在本發(fā)明實(shí)施例中,分布式系統(tǒng)中有6個(gè)節(jié)點(diǎn),uuid值升序排列依次為節(jié)點(diǎn)1、節(jié)點(diǎn)2、節(jié)點(diǎn)3、節(jié)點(diǎn)4、節(jié)點(diǎn)5、節(jié)點(diǎn)6。進(jìn)一步約定,每個(gè)節(jié)點(diǎn)管理目標(biāo)節(jié)點(diǎn)逆時(shí)針方向的一段區(qū)間,則節(jié)點(diǎn)1管理區(qū)間(N5,N1],節(jié)點(diǎn)2管理區(qū)間(N1,N2],以此類推。然后采用相同的hash算法,把res分布到哈希環(huán)上,res落在哪個(gè)區(qū)間,就由管理該區(qū)間的節(jié)點(diǎn)管理,例如,節(jié)點(diǎn)2管理(N1,N2]間的2個(gè)res。

      為了保證res分布的均勻性,每個(gè)物理節(jié)點(diǎn)會對應(yīng)一定數(shù)量的虛擬節(jié)點(diǎn),如果每個(gè)物理節(jié)點(diǎn)虛擬出10個(gè)虛擬節(jié)點(diǎn),則6個(gè)物理節(jié)點(diǎn)可以虛擬出60個(gè)虛擬節(jié)點(diǎn)分布到哈希環(huán),從而使各物理節(jié)點(diǎn)管理的res數(shù)相當(dāng),實(shí)現(xiàn)各物理節(jié)點(diǎn)的負(fù)載均衡。

      每個(gè)res會在其歸屬節(jié)點(diǎn)創(chuàng)建一個(gè)Mas,作為資源訪問權(quán)限授予的決策者;并在分布式系統(tǒng)中每個(gè)在線節(jié)點(diǎn)創(chuàng)建一個(gè)代理,作為Mas在各節(jié)點(diǎn)上的代理。以res1為例進(jìn)行說明,res1歸屬節(jié)點(diǎn)2,那么res1的Mas部署在節(jié)點(diǎn)2,節(jié)點(diǎn)1至節(jié)點(diǎn)6各節(jié)點(diǎn)都會部署res1的代理,各節(jié)點(diǎn)上的APP需要訪問res1時(shí),先向本節(jié)點(diǎn)上的代理1申請權(quán)限,所述代理1再向位于節(jié)點(diǎn)2上的res1的Mas申請權(quán)限,res1的Mas向所述代理1授予權(quán)限后,所述代理1持有res1的訪問權(quán)限,然后再授權(quán)給所述各節(jié)點(diǎn)上的APP。

      DLM處理的節(jié)點(diǎn)事件包括節(jié)點(diǎn)上線、節(jié)點(diǎn)故障等。節(jié)點(diǎn)上線會引發(fā)鎖遷移任務(wù),在分布式系統(tǒng)中,新的節(jié)點(diǎn)N上線時(shí),DLM需要把歸屬于新節(jié)點(diǎn)N的res從其他節(jié)點(diǎn)遷移到新節(jié)點(diǎn)N上,即把該res的Mas從其他節(jié)點(diǎn)遷移到新節(jié)點(diǎn)N上。節(jié)點(diǎn)故障會引發(fā)鎖恢復(fù)任務(wù),在分布式系統(tǒng)中,當(dāng)在線節(jié)點(diǎn)M發(fā)生故障時(shí),DLM需要恢復(fù)原來歸屬于節(jié)點(diǎn)M的res的Mas。

      在本發(fā)明實(shí)施例中,分布式系統(tǒng)中的節(jié)點(diǎn)事件如圖3所示。分布式系統(tǒng)有N1~N5五個(gè)節(jié)點(diǎn)在線,現(xiàn)N6上線,根據(jù)新節(jié)點(diǎn)上線的處理規(guī)則,DLM需要把歸屬于N3的res3遷移到新節(jié)點(diǎn)N6上面,即把res3的Mas從節(jié)點(diǎn)N3遷移到新節(jié)點(diǎn)N6上。節(jié)點(diǎn)N1~N6正常工作,某時(shí)刻節(jié)點(diǎn)N2發(fā)生故障,則部署在N2上的res的Mas1和res2的Mas2丟失,此時(shí),DLM根據(jù)其他節(jié)點(diǎn)(N1、N3、N4、N5和N6)上的代理信息把Mas1和Mas2恢復(fù)到節(jié)點(diǎn)N6上,即由節(jié)點(diǎn)N6管理res1和res2。

      在本發(fā)明實(shí)施例中,分布式系統(tǒng)中的重疊節(jié)點(diǎn)事件如圖3所示,分布式系統(tǒng)有N1~N5五個(gè)節(jié)點(diǎn)在線,在T1時(shí)刻,節(jié)點(diǎn)N2發(fā)生故障,DLM需要把res的Mas1和res2的Mas2從節(jié)點(diǎn)N2恢復(fù)到節(jié)點(diǎn)N3上;T2時(shí)刻,節(jié)點(diǎn)N2故障的節(jié)點(diǎn)事件任務(wù)還沒有執(zhí)行完畢,新的節(jié)點(diǎn)6上線,節(jié)點(diǎn)N2故障事件的事件任務(wù)和節(jié)點(diǎn)N6上線事件的事件任務(wù)重疊;根據(jù)新節(jié)點(diǎn)上線的處理規(guī)則,res1、res2和res3的Mas需要遷移到新節(jié)點(diǎn)6上,但此時(shí),分布式系統(tǒng)中N2發(fā)生故障,res的Mas1和res2的Mas2在節(jié)點(diǎn)N3上面還沒有恢復(fù)出來,所以節(jié)點(diǎn)N6上線事件需要等待節(jié)點(diǎn)N2事件處理完畢后才能處理,即節(jié)點(diǎn)N6上線事件的事件任務(wù)和節(jié)點(diǎn)N2故障事件的事件任務(wù)存在執(zhí)行順序,兩事件任務(wù)沖突。

      如果在T1時(shí)刻,節(jié)點(diǎn)N5發(fā)生故障,DLM將res8的Mas8從節(jié)點(diǎn)N5恢復(fù)到節(jié)點(diǎn)N1上;T2時(shí)刻,節(jié)點(diǎn)N5故障事件的事件任務(wù)還沒有執(zhí)行完畢,新的節(jié)點(diǎn)N6上線,節(jié)點(diǎn)N5故障事件的事件任務(wù)和節(jié)點(diǎn)N6上線事件的事件任務(wù)重疊;根據(jù)新節(jié)點(diǎn)上線的處理規(guī)則,res3的Mas需要從節(jié)點(diǎn)N3遷移到新節(jié)點(diǎn)6上;節(jié)點(diǎn)N5故障事件的不影響節(jié)點(diǎn)N6上線事件的事件任務(wù)執(zhí)行,即節(jié)點(diǎn)N5故障事件的事件任務(wù)和節(jié)點(diǎn)N6上線事件的事件任務(wù)不存在執(zhí)行順序,兩事件任務(wù)不沖突。

      重疊節(jié)點(diǎn)事件,不止上述的一種場景。從實(shí)施例三的分析來看,重疊節(jié)點(diǎn)事件可能不那么頻繁。但是由于引入了虛擬節(jié)點(diǎn)的概念,1個(gè)物理節(jié)點(diǎn)對應(yīng)1組虛擬節(jié)點(diǎn),同一個(gè)物理節(jié)點(diǎn)的各虛擬節(jié)點(diǎn)在哈希環(huán)上離散分布,那么這種重疊節(jié)點(diǎn)事件就會變得十分尋常?,F(xiàn)有技術(shù)處理重疊節(jié)點(diǎn)事件的方案采用先進(jìn)先出隊(duì)列串行處理所有節(jié)點(diǎn)事件,導(dǎo)致DLM恢復(fù)正常工作的時(shí)間較長,顯著影響分布式系統(tǒng)的運(yùn)行效率。

      本發(fā)明實(shí)施例處理分布式系統(tǒng)中發(fā)生的重疊節(jié)點(diǎn)事件的思路為,將重疊的節(jié)點(diǎn)事件分類,分為不沖突的節(jié)點(diǎn)事件和沖突的節(jié)點(diǎn)事件,并采用運(yùn)行隊(duì)列和沖突隊(duì)列管理兩類節(jié)點(diǎn)事件任務(wù);不沖突的節(jié)點(diǎn)事件放入到運(yùn)行隊(duì)列中,立即處理;而沖突的節(jié)點(diǎn)事件放入到?jīng)_突隊(duì)列中,等待處理;從而避免了串行處理所有的節(jié)點(diǎn)事件,可以同時(shí)處理多個(gè)節(jié)點(diǎn)事件,減少了DLM處理節(jié)點(diǎn)事件的時(shí)間,提高了分布式系統(tǒng)的運(yùn)行效率。

      圖4為本發(fā)明實(shí)施例四提供的應(yīng)用在分布式系統(tǒng)中,處理重疊節(jié)點(diǎn)事件方法的流程圖,該方法的執(zhí)行主體為分布式系統(tǒng)中的DLM,DLM運(yùn)行在每個(gè)節(jié)點(diǎn)上。在本實(shí)施例中,當(dāng)一個(gè)節(jié)點(diǎn)事件發(fā)生時(shí),分布式系統(tǒng)中的每個(gè)節(jié)點(diǎn)都接收到該節(jié)點(diǎn)事件,并進(jìn)行相應(yīng)的處理,本實(shí)施例以其中一個(gè)節(jié)點(diǎn)如何處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件為例,對本實(shí)施例提供的處理分布式系統(tǒng)中重疊節(jié)點(diǎn)事件方法進(jìn)行說明,并將該節(jié)點(diǎn)稱為目標(biāo)節(jié)點(diǎn)。

      步驟401,目標(biāo)節(jié)點(diǎn)接收第一節(jié)點(diǎn)事件,生成第一節(jié)點(diǎn)事件任務(wù)。

      在本實(shí)施例中,DLM對1個(gè)節(jié)點(diǎn)事件的處理稱為1個(gè)任務(wù),節(jié)點(diǎn)上線事件和節(jié)點(diǎn)離線事件對應(yīng)Mas遷移任務(wù),節(jié)點(diǎn)故障事件對應(yīng)Mas恢復(fù)任務(wù)。根據(jù)目標(biāo)節(jié)點(diǎn)接收節(jié)點(diǎn)上線事件或者節(jié)點(diǎn)故障事件,運(yùn)行在目標(biāo)節(jié)點(diǎn)上的DLM生成遷移任務(wù)或恢復(fù)任務(wù)。

      步驟402,確定所述第一節(jié)點(diǎn)事件任務(wù)與所述目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突,將所述第一節(jié)點(diǎn)事件任務(wù)放入到所述運(yùn)行隊(duì)列中,其中,所述運(yùn)行隊(duì)列用于存放正在執(zhí)行的一個(gè)或多個(gè)節(jié)點(diǎn)事件任務(wù),所述沖突隊(duì)列用于存放等待執(zhí)行的節(jié)點(diǎn)事件任務(wù)。

      在本實(shí)施例中,DLM采用運(yùn)行隊(duì)列和沖突隊(duì)列管理節(jié)點(diǎn)事件任務(wù)。運(yùn)行隊(duì)列里存放著正在執(zhí)行的節(jié)點(diǎn)事件任務(wù);沖突隊(duì)列里存放著與運(yùn)行隊(duì)列中正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)沖突,或者與沖突隊(duì)列中先生成的節(jié)點(diǎn)事件任務(wù)沖突的節(jié)點(diǎn)事件任務(wù),沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)的位置按照所屬節(jié)點(diǎn)事件發(fā)生的先后順序排列。

      如果運(yùn)行隊(duì)列和沖突隊(duì)列中沒有事件任務(wù),DLM將第一節(jié)點(diǎn)事件任務(wù)放入到運(yùn)行隊(duì)列中;如果第一節(jié)點(diǎn)事件任務(wù)與運(yùn)行隊(duì)列中正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)不沖突,并且與沖突隊(duì)列中的事件任務(wù)也不沖突,DLM將第一節(jié)點(diǎn)事件任務(wù)放入到運(yùn)行隊(duì)列中。

      如果第一節(jié)點(diǎn)事件任務(wù)與運(yùn)行隊(duì)列中正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)沖突,或者與沖突隊(duì)列中的事件任務(wù)沖突,DLM將第一節(jié)點(diǎn)事件任務(wù)放入到?jīng)_突隊(duì)列中。

      步驟404,執(zhí)行所述運(yùn)行隊(duì)列中的所述第一節(jié)點(diǎn)事件任務(wù)。

      DLM將第一節(jié)點(diǎn)事件放入到運(yùn)行隊(duì)列后,立即執(zhí)行第一節(jié)點(diǎn)事件任務(wù)。

      可選的,所述運(yùn)行隊(duì)列中存放有第二節(jié)點(diǎn)事件任務(wù),在步驟401之后,上述方法還包括:

      確定所述第一節(jié)點(diǎn)事件任務(wù)與所述第二節(jié)點(diǎn)事件任務(wù)沖突,并且所述第一節(jié)點(diǎn)事件任務(wù)阻塞所述第二節(jié)點(diǎn)事件任務(wù)執(zhí)行,停止執(zhí)行所述第二節(jié)點(diǎn)事件任務(wù);將所述第二節(jié)點(diǎn)事件任務(wù)放入到所述沖突隊(duì)列中。

      具體為,新發(fā)生的第一節(jié)點(diǎn)事件,導(dǎo)致運(yùn)行隊(duì)列中的第二節(jié)點(diǎn)事件任務(wù)無法繼續(xù)被執(zhí)行,或者打亂了第二節(jié)點(diǎn)事件任務(wù)的執(zhí)行,則DLM在運(yùn)行隊(duì)列中查找第二節(jié)點(diǎn)事件,并停止執(zhí)行所述第二節(jié)點(diǎn)事件任務(wù)。第二節(jié)點(diǎn)事件停止執(zhí)行后,恢復(fù)到執(zhí)行前的狀態(tài),并被放入到?jīng)_突隊(duì)列中等待再次執(zhí)行。

      該可選步驟實(shí)現(xiàn)了DLM停止執(zhí)行先發(fā)生的節(jié)點(diǎn)事件任務(wù),從而保證了當(dāng)后發(fā)生的節(jié)點(diǎn)事件任務(wù)阻塞先發(fā)生的節(jié)點(diǎn)事件任務(wù)執(zhí)行時(shí),節(jié)點(diǎn)事件任務(wù)的有序執(zhí)行。并且本發(fā)明實(shí)施例采用了運(yùn)行隊(duì)列管理正在執(zhí)行的節(jié)點(diǎn)事件任務(wù),當(dāng)需要改變某個(gè)正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)狀態(tài)時(shí),DLM可快速找到該節(jié)點(diǎn)事件任務(wù),并對其進(jìn)行相應(yīng)處理,從而提高了DLM處理節(jié)點(diǎn)事件的效率。

      可選的,所述第二節(jié)點(diǎn)事件任務(wù)放入到運(yùn)行隊(duì)列之后,當(dāng)所述第一節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),上述方法還包括:將所述第二節(jié)點(diǎn)事件任務(wù)放入到所述運(yùn)行隊(duì)列;執(zhí)行所述第二節(jié)點(diǎn)事件任務(wù)。

      具體為,在前述步驟中,所述第一節(jié)點(diǎn)事件阻塞了所述第二節(jié)點(diǎn)事件任務(wù)的執(zhí)行。當(dāng)所述第一節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),即阻塞第二節(jié)點(diǎn)事件任務(wù)執(zhí)行的節(jié)點(diǎn)事件已消除,DLM將所述第二節(jié)點(diǎn)事件放入到運(yùn)行隊(duì)列中,并立即執(zhí)行所述第二節(jié)點(diǎn)事件任務(wù)。

      該可選步驟實(shí)現(xiàn)了當(dāng)阻塞先發(fā)生的節(jié)點(diǎn)事件任務(wù)執(zhí)行的后發(fā)生節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),DLM執(zhí)行被阻塞的節(jié)點(diǎn)事件任務(wù),從而使得先發(fā)生的節(jié)點(diǎn)事件得到快速處理。

      可選的,在步驟404之后,上述方法還包括:

      當(dāng)所述第一節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢時(shí),確定所述沖突隊(duì)列中是否存在與所述第一事件任務(wù)沖突的第三節(jié)點(diǎn)事件任務(wù);

      具體為,所述第一節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢之前,可能會發(fā)生第三節(jié)點(diǎn)事件,根據(jù)所述第三節(jié)點(diǎn)事件生成的第三節(jié)點(diǎn)事件任務(wù)與所述第一節(jié)點(diǎn)事件任務(wù)沖突,被DLM放入到?jīng)_突隊(duì)列;與所述第三節(jié)點(diǎn)事件沖突的所述第一節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢,DLM考慮執(zhí)行所述第三節(jié)點(diǎn)事件任務(wù)。

      如果存在所述第三節(jié)點(diǎn)事件任務(wù),則確定所述運(yùn)行隊(duì)列和所述沖突隊(duì)列中是否存在與所述第三節(jié)點(diǎn)事件任務(wù)沖突的第四節(jié)點(diǎn)事件任務(wù);

      具體為,雖然與所述第三節(jié)點(diǎn)事件沖突的所述第一節(jié)點(diǎn)事件已消除,DLM在執(zhí)行所述第三節(jié)點(diǎn)事件前,仍需確定運(yùn)行隊(duì)列和沖突隊(duì)列中是否還存在與第三節(jié)點(diǎn)事件沖突的第四節(jié)點(diǎn)事件任務(wù)。

      如果不存在所述第四節(jié)點(diǎn)事件任務(wù),將所述第三節(jié)點(diǎn)事件任務(wù)放入到所述運(yùn)行隊(duì)列;

      執(zhí)行所述第三節(jié)點(diǎn)事件任務(wù)。

      該可選步驟實(shí)現(xiàn)了DLM有序處理沖突的重疊節(jié)點(diǎn)事件任務(wù)。

      可選的,上述確定第一節(jié)點(diǎn)事件任務(wù)與該目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且第一節(jié)點(diǎn)事件任務(wù)與該分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突包括:判斷所述第一節(jié)點(diǎn)事件任務(wù)與所述運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不存在執(zhí)行順序,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不存在執(zhí)行順序。

      判斷所述第一節(jié)點(diǎn)事件任務(wù)與運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且與沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突,則需要判斷所述第一節(jié)點(diǎn)事件任務(wù)的執(zhí)行不以運(yùn)行隊(duì)列中的正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)執(zhí)行完畢為前體,并且沖突隊(duì)列中等待的節(jié)點(diǎn)事件任務(wù)不影響所述第一節(jié)點(diǎn)事件任務(wù)的執(zhí)行。

      在該可選步驟中,重疊節(jié)點(diǎn)事件任務(wù)間不存在沖突,包括重疊節(jié)點(diǎn)事件任務(wù)之間不存在執(zhí)行順序,從而使得不存在執(zhí)行順序的重疊節(jié)點(diǎn)事件任務(wù)能夠同時(shí)執(zhí)行,節(jié)省了DLM處理重疊節(jié)點(diǎn)事件的所耗事件,提高了分布式系統(tǒng)的運(yùn)行效率。

      實(shí)施例一提供的處理重疊節(jié)點(diǎn)事件的方法采用運(yùn)行隊(duì)列和沖突隊(duì)列兩個(gè)隊(duì)列來管理節(jié)點(diǎn)事件任務(wù),不沖突的節(jié)點(diǎn)事件任務(wù)放入運(yùn)行隊(duì)列中執(zhí)行,而無須等待處理,實(shí)現(xiàn)了多個(gè)節(jié)點(diǎn)事件同時(shí)處理,沖突的節(jié)點(diǎn)事件任務(wù)放入到?jīng)_突隊(duì)列中,實(shí)現(xiàn)了沖突的節(jié)點(diǎn)事件有序處理,從而節(jié)省了處理重疊節(jié)點(diǎn)事件的時(shí)間,使DLM能較快地恢復(fù)正常工作,減少了對分布式系統(tǒng)運(yùn)行效率的影響。

      另外,需要說明的是沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)總有機(jī)會執(zhí)行,下面在本發(fā)明實(shí)施例二中分情況對此進(jìn)行說明:

      情況一:沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)A與運(yùn)行隊(duì)列中正在執(zhí)行的節(jié)點(diǎn)事件任務(wù)B沖突,而不與沖突隊(duì)列中的其他事件任務(wù)沖突,則當(dāng)節(jié)點(diǎn)事件任務(wù)B執(zhí)行完畢時(shí),節(jié)點(diǎn)事件任務(wù)A可以被執(zhí)行。

      情況二:節(jié)點(diǎn)事件任務(wù)A與沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)C沖突,節(jié)點(diǎn)事件任務(wù)C在沖突隊(duì)列中等待執(zhí)行,說明節(jié)點(diǎn)事件任務(wù)C與隊(duì)列或運(yùn)行隊(duì)列中存在節(jié)點(diǎn)事件任務(wù)D沖突,如此追根溯源,總能找到與沖突隊(duì)列中節(jié)點(diǎn)事件任務(wù)沖突并正在運(yùn)行的節(jié)點(diǎn)事件任務(wù)X,當(dāng)節(jié)點(diǎn)事件任務(wù)X執(zhí)行完畢后,與節(jié)點(diǎn)事件任務(wù)X沖突的節(jié)點(diǎn)事件任務(wù)可逐步獲得執(zhí)行機(jī)會。

      在本發(fā)明實(shí)施例中,分布式系統(tǒng)中的節(jié)點(diǎn)事件包括節(jié)點(diǎn)上線、節(jié)點(diǎn)離線、節(jié)點(diǎn)故障等,其中,節(jié)點(diǎn)上線、節(jié)點(diǎn)離線生成的事件任務(wù)對應(yīng)Mas遷移任務(wù),簡稱遷移任務(wù),節(jié)點(diǎn)故障生成的事件任務(wù)對應(yīng)著Mas恢復(fù)任務(wù)。節(jié)點(diǎn)事件任務(wù)沖突包括恢復(fù)任務(wù)和遷移任務(wù)的沖突、遷移任務(wù)之間的沖突。

      此外,雖然恢復(fù)任務(wù)之間的可能也會有沖突,但是此類沖突可以優(yōu)化,以圖3所示的節(jié)點(diǎn)為例,如果節(jié)點(diǎn)N1故障了,Mas需要從節(jié)點(diǎn)N1恢復(fù)到節(jié)點(diǎn)N2,在恢復(fù)的過程中節(jié)點(diǎn)N2又故障了,那么Mas需要從節(jié)點(diǎn)N2恢復(fù)到節(jié)點(diǎn)N3,原位于節(jié)點(diǎn)N1和節(jié)點(diǎn)N2的Mas同時(shí)恢復(fù)到N3即可。

      本發(fā)明實(shí)施例三提供了一種恢復(fù)任務(wù)和遷移任務(wù)沖突的情況,如圖5所示。某個(gè)節(jié)點(diǎn)正在作為Mas恢復(fù)的目的地,但又需要作為Mas的遷移源,就產(chǎn)生沖突,T1時(shí)刻發(fā)生節(jié)點(diǎn)N2故障事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收節(jié)點(diǎn)N2故障事件,并生成將節(jié)點(diǎn)N2管理的res的Mas恢復(fù)到節(jié)點(diǎn)N3上的恢復(fù)任務(wù),將該恢復(fù)任務(wù)放入到運(yùn)行隊(duì)列,并執(zhí)行該恢復(fù)任務(wù)。在該恢復(fù)任務(wù)執(zhí)行完畢前的T2時(shí)刻,發(fā)生節(jié)點(diǎn)N6上線事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收該事件,生成將在節(jié)點(diǎn)N3上的原節(jié)點(diǎn)2管理的res的Mas以及節(jié)點(diǎn)N3管理的部分res的Mas遷移到節(jié)點(diǎn)N6上的遷移任務(wù);但此時(shí),節(jié)點(diǎn)N3上的恢復(fù)任務(wù)還正在被執(zhí)行,即節(jié)點(diǎn)N3正在作為Mas恢復(fù)的目的地,又需要作為Mas的遷移源。節(jié)點(diǎn)N3的DLM在該恢復(fù)任務(wù)執(zhí)行完畢時(shí),才能執(zhí)行該遷移任務(wù),該遷移任務(wù)和該恢復(fù)任務(wù)沖突,將該遷移任務(wù)放入到?jīng)_突隊(duì)列中。

      本發(fā)明實(shí)施例四提供了另一種恢復(fù)任務(wù)和遷移任務(wù)沖突的情況,如圖6所示。某個(gè)節(jié)點(diǎn)作為Mas遷移目的地,又需要作為Mas恢復(fù)目的地的,T1時(shí)刻發(fā)生節(jié)點(diǎn)N6上線事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收該事件,生成將節(jié)點(diǎn)N3管理的部分res的Mas遷移到節(jié)點(diǎn)N6上的遷移任務(wù)。在該遷移任務(wù)執(zhí)行完畢前的T2時(shí)刻,發(fā)生節(jié)點(diǎn)N2故障事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收節(jié)點(diǎn)N2故障事件,生成在節(jié)點(diǎn)N6上恢復(fù)節(jié)點(diǎn)N2管理的res的Mas的恢復(fù)任務(wù),即節(jié)點(diǎn)N6既要作為Mas遷移目的地,又需要作為Mas恢復(fù)目的地。節(jié)點(diǎn)N3的DLM在該遷移任務(wù)執(zhí)行完畢時(shí),才能執(zhí)行該恢復(fù)任務(wù),該恢復(fù)任務(wù)和該遷移任務(wù)沖突,將該恢復(fù)任務(wù)放入沖突隊(duì)列。

      本發(fā)明實(shí)施例五提供了又一種恢復(fù)任務(wù)和遷移任務(wù)沖突的情況,如圖7所示。某個(gè)節(jié)點(diǎn)作為Mas遷移目的地,又需要作為Mas恢復(fù)目的地從而導(dǎo)致恢復(fù)任務(wù)和遷移任務(wù)之間沖突的另一可能情況是,T1時(shí)刻發(fā)生節(jié)點(diǎn)N6離線事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收該事件,生成將節(jié)點(diǎn)N6管理的res的Mas遷移到節(jié)點(diǎn)N3上的遷移任務(wù)。在該遷移任務(wù)執(zhí)行完畢前的T2時(shí)刻,發(fā)生節(jié)點(diǎn)N2故障事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收節(jié)點(diǎn)N2故障事件,生成在節(jié)點(diǎn)N3上恢復(fù)節(jié)點(diǎn)N2管理的res的Mas的恢復(fù)任務(wù),即節(jié)點(diǎn)N3既要作為Mas遷移目的地,又需要作為Mas恢復(fù)目的地。節(jié)點(diǎn)N3的DLM在該遷移任務(wù)執(zhí)行完畢時(shí),才能執(zhí)行該恢復(fù)任務(wù),該恢復(fù)任務(wù)和該遷移任務(wù)沖突,將該恢復(fù)任務(wù)放入沖突隊(duì)列。

      本發(fā)明實(shí)施例六提供了一種遷移任務(wù)之間沖突的情況,如圖8所示。某個(gè)節(jié)點(diǎn)正在作為一個(gè)節(jié)點(diǎn)上Mas的遷移目的地,又需要作為Mas遷移到另一節(jié)點(diǎn)的遷移源,T1時(shí)刻發(fā)生節(jié)點(diǎn)N6上線事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收該事件,生成將節(jié)點(diǎn)N3管理的部分res的Mas從節(jié)點(diǎn)N3遷移到節(jié)點(diǎn)N6上的遷移任務(wù)A,將遷移任務(wù)A放入運(yùn)行隊(duì)列,并執(zhí)行遷移任務(wù)A。在遷移任務(wù)A執(zhí)行完畢前的T2時(shí)刻,發(fā)生節(jié)點(diǎn)N7上線事件,節(jié)點(diǎn)N3接收該事件,生成將節(jié)點(diǎn)N6管理的部分res的Mas從節(jié)點(diǎn)N6遷移到節(jié)點(diǎn)N7的遷移任務(wù)B,即節(jié)點(diǎn)N6正作為節(jié)點(diǎn)N3上的Mas的遷移目的地,又需要作為Mas遷移到節(jié)點(diǎn)N7上的遷移源。節(jié)點(diǎn)N3的DLM在遷移任務(wù)A執(zhí)行完畢時(shí),才能執(zhí)行遷移任務(wù)B,遷移任務(wù)A和遷移任務(wù)B沖突,將遷移任務(wù)B放入到?jīng)_突隊(duì)列。

      本發(fā)明實(shí)施例七提供了另一種遷移任務(wù)之間沖突的情況,如圖9所示。某個(gè)節(jié)點(diǎn)正作為Mas遷移一個(gè)節(jié)點(diǎn)的遷移源,又需要作為Mas遷移另一節(jié)點(diǎn)的遷移源,T1時(shí)刻發(fā)生節(jié)點(diǎn)N7上線事件,運(yùn)行在節(jié)點(diǎn)N3的DLM接收該事件,生成將節(jié)點(diǎn)N3管理的部分res的Mas從節(jié)點(diǎn)N3遷移到節(jié)點(diǎn)N7的遷移任務(wù)A,將遷移任務(wù)A放入運(yùn)行隊(duì)列,并執(zhí)行遷移任務(wù)A。在遷移任務(wù)A執(zhí)行完畢前的T2時(shí)刻,發(fā)生節(jié)點(diǎn)N6上線事件,節(jié)點(diǎn)N3接收該事件,生成將節(jié)點(diǎn)N3管理的部分res的Mas從節(jié)點(diǎn)N3遷移到節(jié)點(diǎn)N6的遷移任務(wù)B,即節(jié)點(diǎn)N3正作為將Mas遷移到節(jié)點(diǎn)N7的遷移源,又需要作為Mas遷移到節(jié)點(diǎn)N6的遷移源。節(jié)點(diǎn)N3的DLM在遷移任務(wù)A執(zhí)行完畢時(shí),才能執(zhí)行遷移任務(wù)B,遷移任務(wù)A和遷移任務(wù)B沖突,將遷移任務(wù)B放入到?jīng)_突隊(duì)列。

      實(shí)施例3-7列舉了幾種重疊節(jié)點(diǎn)事件具有沖突的情況,但本發(fā)明實(shí)施例提供的處理重疊節(jié)點(diǎn)事件的方法的應(yīng)用范圍不局限上述幾種情況。凡是在重疊的節(jié)點(diǎn)事件中存在節(jié)點(diǎn)事件任務(wù)的執(zhí)行順序,或者某一節(jié)點(diǎn)事件阻塞另一節(jié)點(diǎn)事件任務(wù)的執(zhí)行,即可認(rèn)為節(jié)點(diǎn)事件任務(wù)沖突,屬于本發(fā)明實(shí)施例提供的處理重疊節(jié)點(diǎn)事件的方法的應(yīng)用范圍。

      本發(fā)明實(shí)施例八提供了一種處理重疊節(jié)點(diǎn)事件的裝置,該裝置設(shè)置在節(jié)點(diǎn)中,本發(fā)明實(shí)施例中的節(jié)點(diǎn)包括服務(wù)器、計(jì)算機(jī)、智能終端等。該裝置用于執(zhí)行上述發(fā)明實(shí)施例提供的處理重疊節(jié)點(diǎn)事件的方法。

      該裝置包括通信接口、處理器等。其中,處理器用于實(shí)現(xiàn)目標(biāo)節(jié)點(diǎn)從通信接口處接收第一事件和生成第一事件任務(wù);并且用于確定所述第一節(jié)點(diǎn)事件任務(wù)與所述目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突,所述放入單元用于將所述第一節(jié)點(diǎn)事件任務(wù)放入到所述運(yùn)行隊(duì)列中,其中,所述運(yùn)行隊(duì)列用于存放正在執(zhí)行的一個(gè)或多個(gè)節(jié)點(diǎn)事件任務(wù),所述沖突隊(duì)列用于存放等待執(zhí)行的節(jié)點(diǎn)事件任務(wù);以及用于執(zhí)行運(yùn)行隊(duì)列中的第一事件任務(wù)。

      當(dāng)然,如果所述第一節(jié)點(diǎn)事件任務(wù)與所述目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)沖突,和/或,所述第一節(jié)點(diǎn)事件任務(wù)與所述分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)沖突,該處理器還用于將所述第一節(jié)點(diǎn)事件任務(wù)放入到所述沖突隊(duì)列中。

      可選的,所述運(yùn)行隊(duì)列中存放有第二節(jié)點(diǎn)事件任務(wù),該處理器還用于確定所述第一節(jié)點(diǎn)事件任務(wù)與所述第二節(jié)點(diǎn)事件任務(wù)沖突,并且所述第一節(jié)點(diǎn)事件任務(wù)阻塞所述第二節(jié)點(diǎn)事件任務(wù)執(zhí)行,該處理器停止執(zhí)行所述第二節(jié)點(diǎn)事件。

      可選的,該處理器還用于判斷所述第一節(jié)點(diǎn)事件任務(wù)與所述運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不存在執(zhí)行順序,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不存在執(zhí)行順序。

      由于該裝置的有益效果可以參見上述方法的有益效果,重復(fù)之處不再贅述。

      本發(fā)明實(shí)施例九提供了另一種處理重疊節(jié)點(diǎn)事件的裝置,該裝置用于執(zhí)行上述發(fā)明實(shí)施例提供的處理重疊節(jié)點(diǎn)事件的方法。

      該裝置包括:接收單元,用于目標(biāo)節(jié)點(diǎn)接收第一事件和生成第一事件任務(wù);放入單元,確定所述第一節(jié)點(diǎn)事件任務(wù)與所述目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不沖突,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不沖突,所述放入單元用于將所述第一節(jié)點(diǎn)事件任務(wù)放入到所述運(yùn)行隊(duì)列中,其中,所述運(yùn)行隊(duì)列用于存放正在執(zhí)行的一個(gè)或多個(gè)節(jié)點(diǎn)事件任務(wù),所述沖突隊(duì)列用于存放等待執(zhí)行的節(jié)點(diǎn)事件任務(wù);執(zhí)行單元,用于執(zhí)行運(yùn)行隊(duì)列中的第一事件任務(wù)。

      當(dāng)然,如果所述第一節(jié)點(diǎn)事件任務(wù)與所述目標(biāo)節(jié)點(diǎn)的分布式鎖管理DLM中的運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)沖突,和/或,所述第一節(jié)點(diǎn)事件任務(wù)與所述分布式鎖管理DLM中的沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)沖突,所述放入單元還用于將所述第一節(jié)點(diǎn)事件任務(wù)放入到所述沖突隊(duì)列中。

      可選的,所述運(yùn)行隊(duì)列中存放有第二節(jié)點(diǎn)事件任務(wù),該裝置還包括:停止單元,確定所述第一節(jié)點(diǎn)事件任務(wù)與所述第二節(jié)點(diǎn)事件任務(wù)沖突,并且所述第一節(jié)點(diǎn)事件任務(wù)阻塞所述第二節(jié)點(diǎn)事件任務(wù)執(zhí)行,所述停止單元用于停止執(zhí)行所述第二節(jié)點(diǎn)事件。

      可選的,該裝置還包括:判斷單元,用于判斷所述第一節(jié)點(diǎn)事件任務(wù)與所述運(yùn)行隊(duì)列中的節(jié)點(diǎn)事件任務(wù)不存在執(zhí)行順序,并且所述第一節(jié)點(diǎn)事件任務(wù)與所述沖突隊(duì)列中的節(jié)點(diǎn)事件任務(wù)也不存在執(zhí)行順序。

      由于該裝置的有益效果可以參見上述方法的有益效果,重復(fù)之處不再贅述。

      專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

      本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令處理器完成,所述的程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,所述存儲介質(zhì)是非短暫性(英文:non-transitory)介質(zhì),例如隨機(jī)存取存儲器,只讀存儲器,快閃存儲器,硬盤,固態(tài)硬盤,磁帶(英文:magnetic tape),軟盤(英文:floppy disk),光盤(英文:optical disc)及其任意組合。

      以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1