方槍槍的java世界

          不要因?yàn)轱L(fēng)雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

          定時(shí)任務(wù)的灰度發(fā)布機(jī)制

          定時(shí)任務(wù)的灰度發(fā)布實(shí)現(xiàn)思路 

          1、啟動(dòng)階段-注冊(cè)執(zhí)行節(jié)點(diǎn) 
               所有執(zhí)行節(jié)點(diǎn)在啟動(dòng)的時(shí)候注冊(cè)自己能執(zhí)行哪些定時(shí)任務(wù) 
               執(zhí)行節(jié)點(diǎn)如果停機(jī)重啟(如:停機(jī)重啟,發(fā)布重啟),主節(jié)點(diǎn)會(huì)感知這個(gè)變化,從而從上述注冊(cè)中剝離該執(zhí)行節(jié)點(diǎn),后續(xù)任務(wù)就不會(huì)再分配到原先節(jié)點(diǎn)

          2、啟動(dòng)階段-選舉管理節(jié)點(diǎn),
               所有節(jié)點(diǎn)注冊(cè)完畢,會(huì)參與選舉,產(chǎn)生一個(gè)管理節(jié)點(diǎn)
               管理節(jié)點(diǎn)可以參與或不參與任務(wù)執(zhí)行。
               管理節(jié)點(diǎn)隨機(jī)在執(zhí)行節(jié)點(diǎn)中產(chǎn)生,如果管理節(jié)點(diǎn)停機(jī),zk會(huì)感知并通知所有節(jié)點(diǎn)重新選舉產(chǎn)生新管理節(jié)點(diǎn)。 

          3、運(yùn)行階段-管理節(jié)點(diǎn)創(chuàng)建定時(shí)任務(wù)實(shí)例,分配給合適的執(zhí)行節(jié)點(diǎn) 
               管理節(jié)點(diǎn)選舉出來(lái),就會(huì)周期性的掃描定時(shí)任務(wù)模版,提前創(chuàng)建定時(shí)任務(wù)實(shí)例并分配執(zhí)行節(jié)點(diǎn), 分配執(zhí)行節(jié)點(diǎn)其實(shí)是更新實(shí)例的節(jié)點(diǎn)字段。 這叫做主動(dòng)分配。 
               管理節(jié)點(diǎn)為任務(wù)實(shí)例分配執(zhí)行節(jié)點(diǎn)時(shí)遍歷具備該業(yè)務(wù)執(zhí)行能力的執(zhí)行節(jié)點(diǎn)集合,依次分發(fā)給執(zhí)行節(jié)點(diǎn),
               開(kāi)始時(shí)記錄開(kāi)始節(jié)點(diǎn),每輪掃描回到開(kāi)始節(jié)點(diǎn),就結(jié)束為本實(shí)例分配執(zhí)行節(jié)點(diǎn)動(dòng)作
               如果此節(jié)點(diǎn)沒(méi)有執(zhí)行節(jié)點(diǎn),就放棄等待下一輪掃描。 

          4、運(yùn)行階段-執(zhí)行節(jié)點(diǎn)收到通知,掃描執(zhí)行任務(wù)實(shí)例 
               管理節(jié)點(diǎn)分配定時(shí)任務(wù)實(shí)例后,會(huì)通知執(zhí)行節(jié)點(diǎn), 
               執(zhí)行節(jié)點(diǎn)受到通知,會(huì)到數(shù)據(jù)庫(kù)里撈取執(zhí)行分配給自己的待執(zhí)行任務(wù)實(shí)例 

          5、 關(guān)于灰度發(fā)布 
               發(fā)布人員會(huì)修改系統(tǒng)參數(shù)greyRegions,并刷新到緩存
               發(fā)布人員會(huì)停機(jī)需要升級(jí)灰度版本的部分節(jié)點(diǎn),修改配置標(biāo)記為灰度節(jié)點(diǎn)
               發(fā)布人員發(fā)布灰度應(yīng)用并啟動(dòng)應(yīng)用實(shí)例
               
               灰度節(jié)點(diǎn)啟動(dòng)過(guò)程中重新注冊(cè)到定時(shí)任務(wù)管理機(jī)制中,標(biāo)記自己是灰度節(jié)點(diǎn),注冊(cè)自己的定時(shí)任務(wù)業(yè)務(wù)能力,參與執(zhí)行分配 
               管理節(jié)點(diǎn)發(fā)現(xiàn)要執(zhí)行的實(shí)例屬于灰度region時(shí),會(huì)尋找具備該能力的灰度節(jié)點(diǎn)執(zhí)行該定時(shí)任務(wù),
               如果沒(méi)有找到就放棄等待下一輪再掃,可能此時(shí)灰度節(jié)點(diǎn)還沒(méi)有啟動(dòng)或注冊(cè)加入執(zhí)行節(jié)點(diǎn)集合。

          posted on 2016-09-20 17:43 做強(qiáng)大的自己 閱讀(1468) 評(píng)論(0)  編輯  收藏 所屬分類: 專題方案


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 海口市| 盐边县| 新宾| 嵊州市| 太仓市| 乌恰县| 弋阳县| 寿宁县| 武威市| 大名县| 建瓯市| 利津县| 确山县| 凤山县| 南木林县| 大名县| 玛纳斯县| 武清区| 大宁县| 木里| 崇信县| 临沭县| 长宁区| 北京市| 甘孜县| 徐闻县| 沛县| 秦安县| 南汇区| 青海省| 康平县| 普格县| 苗栗市| 大埔县| 卓尼县| 翼城县| 化州市| 赤水市| 稻城县| 桂平市| 柳州市|