定時任務(wù)的灰度發(fā)布機制
定時任務(wù)的灰度發(fā)布實現(xiàn)思路1、啟動階段-注冊執(zhí)行節(jié)點
所有執(zhí)行節(jié)點在啟動的時候注冊自己能執(zhí)行哪些定時任務(wù)
執(zhí)行節(jié)點如果停機重啟(如:停機重啟,發(fā)布重啟),主節(jié)點會感知這個變化,從而從上述注冊中剝離該執(zhí)行節(jié)點,后續(xù)任務(wù)就不會再分配到原先節(jié)點
2、啟動階段-選舉管理節(jié)點,
所有節(jié)點注冊完畢,會參與選舉,產(chǎn)生一個管理節(jié)點
管理節(jié)點可以參與或不參與任務(wù)執(zhí)行。
管理節(jié)點隨機在執(zhí)行節(jié)點中產(chǎn)生,如果管理節(jié)點停機,zk會感知并通知所有節(jié)點重新選舉產(chǎn)生新管理節(jié)點。
3、運行階段-管理節(jié)點創(chuàng)建定時任務(wù)實例,分配給合適的執(zhí)行節(jié)點
管理節(jié)點選舉出來,就會周期性的掃描定時任務(wù)模版,提前創(chuàng)建定時任務(wù)實例并分配執(zhí)行節(jié)點, 分配執(zhí)行節(jié)點其實是更新實例的節(jié)點字段。 這叫做主動分配。
管理節(jié)點為任務(wù)實例分配執(zhí)行節(jié)點時遍歷具備該業(yè)務(wù)執(zhí)行能力的執(zhí)行節(jié)點集合,依次分發(fā)給執(zhí)行節(jié)點,
開始時記錄開始節(jié)點,每輪掃描回到開始節(jié)點,就結(jié)束為本實例分配執(zhí)行節(jié)點動作
如果此節(jié)點沒有執(zhí)行節(jié)點,就放棄等待下一輪掃描。
4、運行階段-執(zhí)行節(jié)點收到通知,掃描執(zhí)行任務(wù)實例
管理節(jié)點分配定時任務(wù)實例后,會通知執(zhí)行節(jié)點,
執(zhí)行節(jié)點受到通知,會到數(shù)據(jù)庫里撈取執(zhí)行分配給自己的待執(zhí)行任務(wù)實例
5、 關(guān)于灰度發(fā)布
發(fā)布人員會修改系統(tǒng)參數(shù)greyRegions,并刷新到緩存
發(fā)布人員會停機需要升級灰度版本的部分節(jié)點,修改配置標(biāo)記為灰度節(jié)點
發(fā)布人員發(fā)布灰度應(yīng)用并啟動應(yīng)用實例
灰度節(jié)點啟動過程中重新注冊到定時任務(wù)管理機制中,標(biāo)記自己是灰度節(jié)點,注冊自己的定時任務(wù)業(yè)務(wù)能力,參與執(zhí)行分配
管理節(jié)點發(fā)現(xiàn)要執(zhí)行的實例屬于灰度region時,會尋找具備該能力的灰度節(jié)點執(zhí)行該定時任務(wù),
如果沒有找到就放棄等待下一輪再掃,可能此時灰度節(jié)點還沒有啟動或注冊加入執(zhí)行節(jié)點集合。
posted on 2016-09-20 17:43 做強大的自己 閱讀(1468) 評論(0) 編輯 收藏 所屬分類: 專題方案