日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Spring Cloud和Euraka的優(yōu)雅下線以及灰度發(fā)布

Android編程精選 ? 來(lái)源:CSDN ? 作者:CSDN ? 2022-04-20 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

在生產(chǎn)環(huán)境中,如何保證在服務(wù)升級(jí)的時(shí)候,不影響用戶的體驗(yàn),這個(gè)是一個(gè)非常重要的問(wèn)題。如果在我們升級(jí)服務(wù)的時(shí)候,會(huì)造成一段時(shí)間內(nèi)的服務(wù)不可用,這就是不夠優(yōu)雅的。那什么是優(yōu)雅的呢?主要就是指在服務(wù)升級(jí)的時(shí)候,不中斷整個(gè)服務(wù),讓用戶無(wú)感知,進(jìn)而不會(huì)影響用戶的體驗(yàn),這就是優(yōu)雅的。

實(shí)際上,優(yōu)雅下線是目標(biāo),而不是手段,它是一個(gè)相對(duì)的概念,例如kill PIDkill -9 PID都是暴力殺死服務(wù),相對(duì)于kill -9 PID來(lái)說(shuō),kill PID就是優(yōu)雅的。但如果單獨(dú)拿kill PID出來(lái)說(shuō),我們能說(shuō)它是優(yōu)雅的下線策略嗎?肯定不是啊,就是這個(gè)道理。

因此,本文講述的優(yōu)雅下線僅能稱之為“相對(duì)的優(yōu)雅下線”,但相對(duì)于暴力的殺死服務(wù),已經(jīng)足夠優(yōu)雅了。常見(jiàn)的優(yōu)雅解決方案,主要包括優(yōu)雅下線和灰度發(fā)布。而實(shí)際上,灰度發(fā)布的范圍就已經(jīng)包含優(yōu)雅下線了。

最后,在本文中,我們主要講述基于 Spring Cloud 和 Euraka 的優(yōu)雅下線以及灰度發(fā)布。

優(yōu)雅下線

常見(jiàn)的下線方式

方式一:kill PID

使用方式:kill java進(jìn)程ID

該方式借助的是 Spring Boot 應(yīng)用的 Shutdown hook,應(yīng)用本身的下線也是優(yōu)雅的,但如果你的服務(wù)發(fā)現(xiàn)組件使用的是 Eureka,那么默認(rèn)最長(zhǎng)會(huì)有 90 秒的延遲,其他應(yīng)用才會(huì)感知到該服務(wù)下線,這意味著:該實(shí)例下線后的 90 秒內(nèi),其他服務(wù)仍然可能調(diào)用到這個(gè)已下線的實(shí)例。因此,該方式是不夠優(yōu)雅的。

方式二:/shutdown端點(diǎn)

Spring Boot 提供了/shutdown端點(diǎn),可以借助它實(shí)現(xiàn)優(yōu)雅停機(jī)。

使用方式:在想下線應(yīng)用的application.yml中添加如下配置,從而啟用并暴露/shutdown端點(diǎn):

management:
endpoint:
shutdown:
enabled:true
endpoints:
web:
exposure:
include:shutdown

發(fā)送 POST 請(qǐng)求到/shutdown端點(diǎn)

curl-Xhttp://你想停止的服務(wù)地址/actuator/shutdown

該方式本質(zhì)和方式一是一樣的,也是借助 Spring Boot 應(yīng)用的 Shutdown hook 去實(shí)現(xiàn)的

方式三:/pause端點(diǎn)

Spring Boot 應(yīng)用提供了/pause端點(diǎn),利用該端點(diǎn)可實(shí)現(xiàn)優(yōu)雅下線。

使用方式:在想下線應(yīng)用的application.yml中添加配置,從而啟用并暴露/pause端點(diǎn):

management:
endpoint:
#啟用pause端點(diǎn)
pause:
enabled:true
#啟用restart端點(diǎn),之所以要啟用restart端點(diǎn),是因?yàn)閜ause端點(diǎn)的啟用依賴restart端點(diǎn)的啟用
restart:
enabled:true
endpoints:
web:
exposure:
include:pause,restart

發(fā)送 POST 請(qǐng)求到/actuator/pause端點(diǎn):

curl-XPOSThttp://你想停止的服務(wù)實(shí)例地址/actuator/pause

執(zhí)行后的效果類似下圖:

41fb98f6-bfd5-11ec-bce3-dac502259ad0.png圖片

如圖所示,該應(yīng)用在 Eureka Server 上的狀已被標(biāo)記為DOWN,但是應(yīng)用本身其實(shí)依然是可以正常對(duì)外服務(wù)的。在 Spring Cloud 中,Ribbon 做負(fù)載均衡時(shí),只會(huì)負(fù)載到標(biāo)記為UP的實(shí)例上。

利用這兩點(diǎn),你可以:先用/pause端點(diǎn),將要下線的應(yīng)用標(biāo)記為DOWN,但不去真正停止應(yīng)用;然后過(guò)一定的時(shí)間(例如 90 秒,或者自己做個(gè)監(jiān)控,看當(dāng)前實(shí)例的流量變成 0 后)再去停止應(yīng)用,例如kill應(yīng)用。

缺點(diǎn) & 局限

42109dc8-bfd5-11ec-bce3-dac502259ad0.png圖片
方式四:/service-registry端點(diǎn)

使用方式:在想下線應(yīng)用的application.yml中添加配置,從而暴露/service-registry端點(diǎn):

management:
endpoints:
web:
exposure:
include:service-registry

發(fā)送 POST 請(qǐng)求到/actuator/service-registry端點(diǎn):

curl-X"POST""http://localhost:8000/actuator/service-registry?status=DOWN"
-H"Content-Type:application/vnd.spring-boot.actuator.v2+json;charset=UTF-8"

實(shí)行后的效果類似如下圖:

41fb98f6-bfd5-11ec-bce3-dac502259ad0.png圖片

優(yōu)雅的下線方式

在上文中,我們講述了四種常見(jiàn)的下線方式,對(duì)比來(lái)看,方式四是一種比較優(yōu)雅的下線方式。

在實(shí)際項(xiàng)目中,我們可以先使用/service-registry端點(diǎn),將服務(wù)標(biāo)記為DOWN,然后監(jiān)控服務(wù)的流量,當(dāng)流量為 0 時(shí),即可升級(jí)該服務(wù)。當(dāng)然,這里假設(shè)我們部署了多個(gè)服務(wù)實(shí)例,當(dāng)一個(gè)服務(wù)實(shí)例DOWN掉之后,其他服務(wù)實(shí)例仍然是可以提供服務(wù)的,如果就部署一臺(tái)服務(wù)的話,那么討論優(yōu)不優(yōu)雅就沒(méi)那么重要了。

除了上述的下線方式之外,還有一種利用EurekaAutoServiceRegistration對(duì)象達(dá)到優(yōu)雅下線的目標(biāo)。

  • 執(zhí)行eurekaAutoServiceRegistration.start()方法時(shí),當(dāng)前服務(wù)向 Eureka 注冊(cè)中心注冊(cè)服務(wù);
  • 執(zhí)行eurekaAutoServiceRegistration.stop()方法時(shí),當(dāng)前服務(wù)會(huì)向 Eureka 注冊(cè)中心進(jìn)行反注冊(cè),注冊(cè)中心收到請(qǐng)求后,會(huì)將此服務(wù)從注冊(cè)列表中刪除。

示例代碼如下:

@RestController
@RequestMapping(value="/graceful/registry-service")
publicclassGracefulOffline{

@Autowired
privateEurekaAutoServiceRegistrationeurekaAutoServiceRegistration;

@RequestMapping("/online")
publicStringonline(){
this.eurekaAutoServiceRegistration.start();
return"executeonlinemethod,onlinesuccess.";
}

@RequestMapping("/offline")
publicStringoffline(){
this.eurekaAutoServiceRegistration.stop();
return"executeofflinemethod,offlinesuccess.";
}
}

到這里,我們已經(jīng)介紹了兩種相對(duì)優(yōu)雅的下線方式了。具體如何操作,我們可以根據(jù)實(shí)際上情況進(jìn)行包裝,或者利用自動(dòng)化的腳本來(lái)實(shí)現(xiàn)更加優(yōu)雅的下線方式。

灰度發(fā)布

藍(lán)綠部署

藍(lán)綠部署,英文名為 Blue Green Deployment,是一種可以保證系統(tǒng)在不間斷提供服務(wù)的情況下上線的部署方式。

如何保證系統(tǒng)不間斷提供服務(wù)呢?那就是同時(shí)部署兩個(gè)集群,但僅對(duì)外提供一個(gè)集群的服務(wù),當(dāng)需要升級(jí)時(shí),切換集群進(jìn)行升級(jí)。藍(lán)綠部署無(wú)需停機(jī),并且風(fēng)險(xiǎn)較小。其大致步驟為:

  • 部署集群 1 的應(yīng)用(初始狀態(tài)),將所有外部請(qǐng)求的流量都打到這個(gè)集群上
  • 部署集群 2 的應(yīng)用,集群 2 的代碼與集群 1 不同,如新功能或者 Bug 修復(fù)等
  • 將流量從集群 1 切換到集群 2
  • 如集群 2 測(cè)試正常,就刪除集群 1 正在使用的資源(例如實(shí)例),使用集群 2 對(duì)外提供服務(wù)

因?yàn)樵谑褂盟{(lán)綠部署的方式時(shí),我們需要控制流量,所以我們需要借助路由服務(wù),如 Nginx 等。

滾動(dòng)部署

滾動(dòng)部署,英文名為 Rolling Update,同樣是一種可以保證系統(tǒng)在不間斷提供服務(wù)的情況下上線的部署方式。和藍(lán)綠部署不同的是,滾動(dòng)部署對(duì)外提供服務(wù)的版本并不是非此即彼,而是在更細(xì)的粒度下平滑完成版本的升級(jí)。

如何做到細(xì)粒度平滑升級(jí)版本呢?滾動(dòng)部署只需要一個(gè)集群,集群下的不同節(jié)點(diǎn)可以獨(dú)立進(jìn)行版本升級(jí)。比如在一個(gè) 12 節(jié)點(diǎn)的集群中,我們每次升級(jí) 4 個(gè)節(jié)點(diǎn),并將升級(jí)后的節(jié)點(diǎn)重新投入使用,周而復(fù)始,直到集群中所有的節(jié)點(diǎn)都更新為新版本。

這種部署方式相對(duì)于藍(lán)綠部署,更加節(jié)約資源,因?yàn)樗恍枰\(yùn)行兩個(gè)集群。但這種方式也有很多缺點(diǎn),例如:

  • 沒(méi)有一個(gè)確定 OK 的環(huán)境。使用藍(lán)綠部署,我們能夠清晰地知道老版本是 OK 的,而使用滾動(dòng)發(fā)布,我們無(wú)法確定。
  • 修改了現(xiàn)有的環(huán)境。
  • 如果需要回滾,很困難。舉個(gè)例子,在某一次發(fā)布中,我們需要更新 100 個(gè)實(shí)例,每次更新 10 個(gè)實(shí)例,每次部署需要 5 分鐘。當(dāng)滾動(dòng)發(fā)布到第 80 個(gè)實(shí)例時(shí),發(fā)現(xiàn)了問(wèn)題,需要回滾。這時(shí),我們估計(jì)就要瘋了。
  • 有的時(shí)候,我們還可能對(duì)系統(tǒng)進(jìn)行動(dòng)態(tài)伸縮,如果部署期間,系統(tǒng)自動(dòng)擴(kuò)容/縮容了,我們還需判斷到底哪個(gè)節(jié)點(diǎn)使用的是哪個(gè)代碼。盡管有一些自動(dòng)化的運(yùn)維工具,但是依然令人心驚膽戰(zhàn)。

并不是說(shuō)滾動(dòng)發(fā)布不好,滾動(dòng)發(fā)布也有它非常合適的場(chǎng)景。

金絲雀部署

金絲雀部署又稱灰度部署(或者,灰度發(fā)布),英文名為 Canary Deployment,是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式。

金絲雀的名稱來(lái)源于「礦井中的金絲雀」,早在 17 世紀(jì),英國(guó)礦井工人發(fā)現(xiàn),金絲雀對(duì)瓦斯這種氣體十分敏感,空氣中哪怕有極其微量的瓦斯,金絲雀也會(huì)停止歌唱;而當(dāng)瓦斯含量超過(guò)一定限度時(shí),雖然魯鈍的人類毫無(wú)察覺(jué),金絲雀卻早已毒發(fā)身亡。當(dāng)時(shí)在采礦設(shè)備相對(duì)簡(jiǎn)陋的條件下,工人們每次下井都會(huì)帶上一只金絲雀作為“瓦斯檢測(cè)指標(biāo)”,以便在危險(xiǎn)狀況下緊急撤離。

我們來(lái)看一下金絲雀部署的步驟:

  • 準(zhǔn)備好部署各個(gè)階段的工件,包括:構(gòu)建工件,測(cè)試腳本,配置文件和部署清單文件
  • 從負(fù)載均衡列表中移除掉“金絲雀”服務(wù)器
  • 升級(jí)“金絲雀”應(yīng)用(切斷原有流量并進(jìn)行部署)
  • 對(duì)應(yīng)用進(jìn)行自動(dòng)化測(cè)試
  • 將“金絲雀”服務(wù)器重新添加到負(fù)載均衡列表中(連通性和健康檢查) 如果“金絲雀”在線使用測(cè)試成功,升級(jí)剩余的其他服務(wù)器(否則就回滾)

在金絲雀部署中,常常按照用戶量設(shè)置路由權(quán)重,例如 90% 的用戶維持使用老版本,10% 的用戶嘗鮮新版本。不同版本應(yīng)用共存,經(jīng)常與 A/B 測(cè)試一起使用,用于測(cè)試選擇多種方案。

金絲雀部署比較典型的例子,就是我們?cè)谑褂媚硞€(gè)應(yīng)用的時(shí)候,該應(yīng)用邀請(qǐng)我們進(jìn)行“內(nèi)測(cè)”或者“新版本體驗(yàn)”,如果我們同意了,那么我們就成了金絲雀。

-End-

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    31

    文章

    5989

    瀏覽量

    90696
  • springcloud
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    1674

原文標(biāo)題:SpringCloud 優(yōu)雅下線+灰度發(fā)布

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    NVIDIA與Google Cloud攜手推進(jìn)代理式與物理AI發(fā)展

    企業(yè)可以使用 NVIDIA Vera Rubin 驅(qū)動(dòng)的 A5X 實(shí)例 (可擴(kuò)展至近 100 萬(wàn)個(gè) Rubin GPU)、Google Distributed Cloud 上的 Gemini、機(jī)密
    的頭像 發(fā)表于 04-27 15:35 ?396次閱讀

    比亞迪第1600萬(wàn)輛新能源汽車下線

    2026年4月17日,比亞迪第1600萬(wàn)輛新能源汽車在長(zhǎng)沙工廠迎來(lái)下線,科技豪華旗艦MPV——第二代騰勢(shì)D9成為第1600萬(wàn)輛下線車型,這也是全球首臺(tái)第二代騰勢(shì)D9下線
    的頭像 發(fā)表于 04-17 16:46 ?1475次閱讀

    大華云面向OpenClaw生態(tài)發(fā)布Dahua Cloud Open Skills

    近日,大華云開(kāi)發(fā)者平臺(tái)面向OpenClaw生態(tài)正式發(fā)布Dahua Cloud Open Skills(大華云開(kāi)放技能),——一套專為OpenClaw生態(tài)打造的一站式智慧物聯(lián)技能,以“開(kāi)箱即用、零代碼
    的頭像 發(fā)表于 03-26 15:20 ?579次閱讀

    比亞迪第1500萬(wàn)輛新能源汽車下線

    2025年12月18日,比亞迪第1500萬(wàn)輛新能源汽車下線儀式在濟(jì)南工廠順利舉行,“大六座安全豪華SUV”騰勢(shì)N8L成為第1500萬(wàn)輛下線車型,這也是騰勢(shì)N8L的第15000輛下線。比亞迪達(dá)成這一
    的頭像 發(fā)表于 12-19 09:50 ?586次閱讀

    由Memfault賦能的Nordic-nRF Cloud云服務(wù)將硬核加持物聯(lián)網(wǎng)通信應(yīng)用

    全球低功耗無(wú)線通信半導(dǎo)體解決方案領(lǐng)導(dǎo)者 Nordic Semiconductor (以下簡(jiǎn)稱 “Nordic”) 宣布,通過(guò)Memfault技術(shù)驅(qū)動(dòng)的nRF Cloud平臺(tái)在 2025 年移動(dòng)突破獎(jiǎng)
    發(fā)表于 11-27 22:30

    小鵬汽車迎來(lái)第100萬(wàn)臺(tái)整車正式下線

    11月21日,小鵬汽車迎來(lái)第100萬(wàn)臺(tái)整車正式下線。小鵬汽車在廣州工廠舉行了第100萬(wàn)臺(tái)下線暨首批X9超級(jí)增程車主交付,數(shù)百家海內(nèi)外媒體和X9超級(jí)增程首批車主共同見(jiàn)證了這一里程碑時(shí)刻。
    的頭像 發(fā)表于 11-25 10:00 ?622次閱讀

    Anthill Cloud:以AI、模塊化內(nèi)容與全渠道互動(dòng)重塑醫(yī)藥營(yíng)銷

    ? 丹麥哥本哈根2025年11月3日 /美通社/ -- 生命科學(xué)行業(yè)領(lǐng)先的卓越內(nèi)容與技術(shù)合作伙伴Anthill宣布推出Anthill Cloud?,這一創(chuàng)新平臺(tái)將AI、模塊化內(nèi)容與個(gè)性化互動(dòng)融合
    的頭像 發(fā)表于 11-03 20:14 ?816次閱讀
    Anthill <b class='flag-5'>Cloud</b>:以AI、模塊化內(nèi)容與全渠道互動(dòng)重塑醫(yī)藥營(yíng)銷

    使用Otsu閾值算法將灰度圖像二值化

    Otsu 算法是由日本學(xué)者OTSU于1979年提出的一種對(duì)圖像進(jìn)行二值化的高效算法,又稱“最大類間方差法”。當(dāng)我們對(duì)一個(gè)圖象進(jìn)行二值化操作的時(shí)候,需要根據(jù)一項(xiàng)灰度閾值來(lái)判決每個(gè)像素點(diǎn)應(yīng)該被視作純黑
    發(fā)表于 10-28 06:49

    聯(lián)想moto第3億臺(tái)設(shè)備成功下線

    很少有人知道,在聯(lián)想moto賣瘋了背后,是聯(lián)想集團(tuán)武漢產(chǎn)業(yè)基地?zé)艋鹜鳌⑷找怪圃?,如今它迎?lái)第3億臺(tái)設(shè)備下線的里程碑時(shí)刻!
    的頭像 發(fā)表于 09-18 09:10 ?1009次閱讀

    Spring攔截器:你的請(qǐng)求休想逃過(guò)我的五指山!

    Spring框架中,攔截器(Interceptor)是一種強(qiáng)大的機(jī)制,它允許開(kāi)發(fā)者在請(qǐng)求處理的不同階段插入自定義邏輯。WebApplicationContext作為Spring Web應(yīng)用的上下文容器,為攔截器的配置和管理提供了基礎(chǔ)支持。
    的頭像 發(fā)表于 07-26 11:25 ?811次閱讀
    <b class='flag-5'>Spring</b>攔截器:你的請(qǐng)求休想逃過(guò)我的五指山!

    比亞迪第1300萬(wàn)輛新能源汽車下線

    2025年7月21日,比亞迪在深汕工廠舉行第1300萬(wàn)輛新能源汽車下線儀式,超級(jí)四電旗艦轎車仰望U7作為下線車型亮相
    的頭像 發(fā)表于 07-22 18:13 ?1305次閱讀

    如何使用nRF Cloud

    Nordic Semiconductor云服務(wù)和nRF Cloud構(gòu)成了一個(gè)專為Nordic Semiconductor無(wú)線設(shè)備優(yōu)化的物聯(lián)網(wǎng)平臺(tái)。該平臺(tái)為使用Nordic Semiconductor
    的頭像 發(fā)表于 07-04 11:12 ?1117次閱讀
    如何使用nRF <b class='flag-5'>Cloud</b>

    東風(fēng)嵐圖FREE+煥新下線

    近日,嵐圖FREE+下線儀式在東風(fēng)嵐圖總裝工廠正式舉行,得益于高效穩(wěn)定的供應(yīng)鏈體系,高度自動(dòng)化的智能生產(chǎn)線,成熟的研發(fā)能力,嵐圖FREE+正以超預(yù)期的速度與用戶見(jiàn)面,近日,這款“極智駕享大五座SUV”將正式開(kāi)啟預(yù)售。
    的頭像 發(fā)表于 06-26 13:52 ?851次閱讀

    NVIDIA推出AI平臺(tái)DGX Cloud Lepton

    CoreWeave、Crusoe、Firmus、Foxconn、GMI Cloud、Lambda、Nebius、Nscale、SoftBank Corp. 和 Yotta Data Services 為 DGX Cloud Lepton Marketplace 提供數(shù)以萬(wàn)
    的頭像 發(fā)表于 05-22 09:42 ?1214次閱讀

    理想MEGA Home家庭特別版正式下線

    近日,理想MEGA家族新成員——理想MEGA Home家庭特別版,在理想汽車北京綠色智能制造基地正式下線,并將于5月23日陸續(xù)開(kāi)啟全國(guó)交付。
    的頭像 發(fā)表于 05-22 09:17 ?948次閱讀
    日喀则市| 高要市| 临沧市| 祁连县| 松溪县| 鄂伦春自治旗| 铜陵市| 和林格尔县| 开远市| 金坛市| 上犹县| 广元市| 澄江县| 定陶县| 屯门区| 延边| 新安县| 壤塘县| 托克逊县| 新邵县| 德保县| 定远县| 泸溪县| 白城市| 聂荣县| 南华县| 沙坪坝区| 彭山县| 体育| 兴仁县| 孟州市| 泽普县| 宁海县| 桐城市| 腾冲县| 奎屯市| 普兰县| 天全县| 天峻县| 芦溪县| 宁蒗|