您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何理解分布式結(jié)構(gòu)下,服務(wù)部署發(fā)布”,在日常操作中,相信很多人在如何理解分布式結(jié)構(gòu)下,服務(wù)部署發(fā)布問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何理解分布式結(jié)構(gòu)下,服務(wù)部署發(fā)布”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
分布式系統(tǒng)架構(gòu)下,服務(wù)發(fā)布是一件很麻煩的事情,特別是在構(gòu)建自動(dòng)發(fā)布流程和灰度測(cè)試的策略兩個(gè)核心方面。通常情況下如果不涉及數(shù)據(jù)層面的灰度流程,服務(wù)可以灰度上線,或者滾動(dòng)上線,這兩種方式很常用;如果涉及到數(shù)據(jù)灰度,則可能需要中間服務(wù)做不同版本數(shù)據(jù)之間追平,或者停機(jī)維護(hù)一次性處理好數(shù)據(jù)和上線問(wèn)題,不過(guò)后面這種方式風(fēng)險(xiǎn)較大。
新版本上線的時(shí)候,并不停掉老版本,新舊兩個(gè)版本同時(shí)運(yùn)行,通常還會(huì)在負(fù)載均衡的策略上傾向于舊版本服務(wù)處理請(qǐng)求,這樣新版本就有一個(gè)執(zhí)行的觀察期過(guò)渡期,等到新版本平穩(wěn)運(yùn)行一段時(shí)間后,再把請(qǐng)求都發(fā)到新版服務(wù)上,舊版本服務(wù)完成下線。這種方式在分布式架構(gòu)下很少使用,對(duì)服務(wù)器要求過(guò)高。
滾動(dòng)發(fā)布可以避免藍(lán)綠部署的服務(wù)器資源占用問(wèn),首先發(fā)布一臺(tái)新版本服務(wù),然后停掉一臺(tái)老版本服務(wù),新版服務(wù)經(jīng)過(guò)觀察之后,再逐步替換掉所有老版本的服務(wù),這樣服務(wù)的環(huán)境變動(dòng)比較頻繁,相對(duì)不穩(wěn)定。
上述兩種方式在普通業(yè)務(wù)場(chǎng)景下都還算好操作,分布式系統(tǒng)下的灰度發(fā)布復(fù)雜程序相對(duì)高很多,基礎(chǔ)流程如下:
新版本上線,可能涉及分布式下多個(gè)灰度服務(wù),因此在服務(wù)在整個(gè)鏈路上分發(fā)時(shí),都要判斷下個(gè)請(qǐng)求是路由到正常服務(wù)還是灰度服務(wù),還要對(duì)灰度服務(wù)做請(qǐng)求的權(quán)重控制,不能讓灰度服務(wù)處理大量的請(qǐng)求。
實(shí)際策略:在實(shí)際的分布式系統(tǒng)灰度發(fā)布流程,通常會(huì)采用如下一個(gè)策略:
配置一個(gè)灰度是否開(kāi)啟的標(biāo)識(shí);
配置一批灰度賬戶,通常內(nèi)部人員;
配置灰度服務(wù)版本標(biāo)識(shí);
請(qǐng)求在鏈路執(zhí)行時(shí),判斷灰度是否開(kāi)啟;
判斷當(dāng)前用戶身份是否是灰度測(cè)試賬號(hào);
獲取當(dāng)前可以請(qǐng)求的服務(wù)列表;
根據(jù)灰度服務(wù)版本選擇請(qǐng)求的具體服務(wù);
這個(gè)流程非常的復(fù)雜,需要很多自定義的策略,還要熟悉分布式框架的底層API原理,要二次重寫(xiě)來(lái)適配灰度策略,設(shè)計(jì)重寫(xiě)原生API還容易觸發(fā)一些驚喜問(wèn)題。
如果說(shuō)最難處理的灰度模式是什么,就是數(shù)據(jù)庫(kù)的版本灰度問(wèn)題,通常業(yè)務(wù)對(duì)數(shù)據(jù)庫(kù)改造升級(jí),實(shí)際都是通過(guò)停機(jī)維護(hù)來(lái)處理的,可能很多開(kāi)發(fā)都經(jīng)歷過(guò),發(fā)布停服公告,然后在指定時(shí)間內(nèi)把數(shù)據(jù)全部追平或者二次搬運(yùn),再重新提供服務(wù)。但是總有些業(yè)務(wù)場(chǎng)景是不能停機(jī)維護(hù)的,處理灰度數(shù)據(jù)的基本策略如下:
該模式中,除了正常的灰度流程之外,需要在灰度數(shù)據(jù)庫(kù)和正常數(shù)據(jù)中間提供一個(gè)數(shù)據(jù)調(diào)配服務(wù),用來(lái)解決如下問(wèn)題:灰度數(shù)據(jù)庫(kù)缺失數(shù)據(jù),需要臨時(shí)從正常庫(kù)拉取,灰度版本失敗,新數(shù)據(jù)需要重新整合寫(xiě)入原本正常庫(kù);灰度版本成功,舊版數(shù)據(jù)遷移等;最終保證數(shù)據(jù)的平穩(wěn)升級(jí)。
GitHub·地址 https://github.com/cicadasmile/data-manage-parent GitEE·地址 https://gitee.com/cicadasmile/data-manage-parent
到此,關(guān)于“如何理解分布式結(jié)構(gòu)下,服務(wù)部署發(fā)布”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。