色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

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

Android編程精選 ? 來源:CSDN ? 作者:CSDN ? 2022-04-20 09:52 ? 次閱讀

前言

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

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

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

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

優(yōu)雅下線

常見的下線方式

方式一:kill PID

使用方式:kill java進程ID

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

方式二:/shutdown端點

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

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

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

發(fā)送 POST 請求到/shutdown端點

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

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

方式三:/pause端點

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

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

management:
endpoint:
#啟用pause端點
pause:
enabled:true
#啟用restart端點,之所以要啟用restart端點,是因為pause端點的啟用依賴restart端點的啟用
restart:
enabled:true
endpoints:
web:
exposure:
include:pause,restart

發(fā)送 POST 請求到/actuator/pause端點:

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

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

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

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

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

缺點 & 局限

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

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

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

發(fā)送 POST 請求到/actuator/service-registry端點:

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

實行后的效果類似如下圖:

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

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

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

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

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

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

示例代碼如下:

@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)介紹了兩種相對優(yōu)雅的下線方式了。具體如何操作,我們可以根據(jù)實際上情況進行包裝,或者利用自動化的腳本來實現(xiàn)更加優(yōu)雅的下線方式。

灰度發(fā)布

藍綠部署

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

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

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

因為在使用藍綠部署的方式時,我們需要控制流量,所以我們需要借助路由服務(wù),如 Nginx 等。

滾動部署

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

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

這種部署方式相對于藍綠部署,更加節(jié)約資源,因為它不需要運行兩個集群。但這種方式也有很多缺點,例如:

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

并不是說滾動發(fā)布不好,滾動發(fā)布也有它非常合適的場景。

金絲雀部署

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

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

我們來看一下金絲雀部署的步驟:

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

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

金絲雀部署比較典型的例子,就是我們在使用某個應(yīng)用的時候,該應(yīng)用邀請我們進行“內(nèi)測”或者“新版本體驗”,如果我們同意了,那么我們就成了金絲雀。

-End-

審核編輯 :李倩


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

    關(guān)注

    29

    文章

    5678

    瀏覽量

    80176
  • springcloud
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    1561

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    無法在DLP650NIR上面顯示8位灰度圖嗎?

    購買了一個DLP Discovery 4100套件,該套件支持DLP7000、DLP9500、以及DLP650NIR型號的DMD,我們購買了DLP650NIR,我在官網(wǎng)查閱數(shù)據(jù)的時候發(fā)現(xiàn)
    發(fā)表于 02-28 06:12

    DLP6500FYE投影時灰度不連續(xù)是怎么回事?

    1、我使用的是反射式DMD+外部LED光源,投影時同樣出現(xiàn)了上面鏈接中投影灰度不連續(xù)的情況,灰度呈階梯狀變化,且在128bit處也是必有跳變,無法實現(xiàn)線性變化。 相機曝光時間約為2ms,投影曝光
    發(fā)表于 02-21 10:20

    中國中車兆瓦級PEM制氫電解槽下線發(fā)布

    近日,中國中車集團自主研制首臺兆瓦級PEM制氫電解槽下線發(fā)布,這是中車在氫能裝備領(lǐng)域的又一重大突破。
    的頭像 發(fā)表于 01-21 11:21 ?273次閱讀

    Google Cloud發(fā)布兩款針對企業(yè)客戶的全新解決方案

    Google Cloud 近期發(fā)布兩款專為企業(yè)客戶設(shè)計的全新解決方案——Google Agentspace與NotebookLM Plus,目的是通過 Gemini 先進的推理能力、Google 高質(zhì)量的搜索功能,以及無論存儲在
    的頭像 發(fā)表于 12-27 16:31 ?373次閱讀

    nginx+lua+redis實現(xiàn)灰度發(fā)布

    作者:馬仁喜 前言: 授人以魚不如授人以漁 .先學(xué)會用,在學(xué)原理,在學(xué)創(chuàng)造,可能一輩子用不到這種能力,但是不能不具備這種能力。這篇文章主要是沉淀使用nginx+lua+redis實現(xiàn)灰度,當(dāng)我們具備
    的頭像 發(fā)表于 12-17 10:01 ?181次閱讀

    全志亮相灰度科技2024年新品發(fā)布

    近日,國內(nèi)商顯方案廠商灰度科技在深圳召開主題為【智啟·賦能】的2024年新品發(fā)布會,全志科技作為新品方案的主控芯片提供商受邀參會。會上,全志科技IEBU副總經(jīng)理皮杰勇進行了主題為《全志芯片在商顯行業(yè)的技術(shù)和產(chǎn)品應(yīng)用》的分享。
    的頭像 發(fā)表于 11-14 15:14 ?911次閱讀

    Spring事務(wù)實現(xiàn)原理

    這些操作。 spring事務(wù)有編程式事務(wù)和聲明式事務(wù)兩種實現(xiàn)方式。編程式事務(wù)是通過編寫代碼來管理事務(wù)的提交、回滾、以及事務(wù)的邊界。這意味著開發(fā)者需要在代碼中顯式地調(diào)用事務(wù)的開始、提交和回滾。聲明式事務(wù)是通過配置來管理事務(wù),您可以使用注解或XML配置來
    的頭像 發(fā)表于 11-08 10:10 ?928次閱讀
    <b class='flag-5'>Spring</b>事務(wù)實現(xiàn)原理

    Commvault Cloud平臺提供Cloud Rewind功能

    混合云企業(yè)網(wǎng)絡(luò)彈性和數(shù)據(jù)保護解決方案領(lǐng)先提供商Commvault(納斯達克代碼:CVLT)宣布在Commvault Cloud平臺上提供Cloud Rewind功能。這項獨特的產(chǎn)品集成了通過收購
    的頭像 發(fā)表于 10-15 09:21 ?468次閱讀

    Spring Cloud Gateway網(wǎng)關(guān)框架

    Spring Cloud Gateway網(wǎng)關(guān)框架 本軟件微服務(wù)架構(gòu)中采用Spring Cloud Gateway網(wǎng)關(guān)控制框架,Spring
    的頭像 發(fā)表于 08-22 09:58 ?588次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> Gateway網(wǎng)關(guān)框架

    請問Mesh網(wǎng)絡(luò)是不是只能連接官方Espressif Cloud?

    請問,Mesh網(wǎng)絡(luò)是不是只能連接官方Espressif Cloud?可以在其他云平臺上使用嗎? 謝謝?
    發(fā)表于 07-22 07:47

    在哪里可以看一下RainMaker Cloud的后端系統(tǒng)?

    請問下,在哪里可以看一下RainMaker Cloud的后端系統(tǒng)? 另外,RainMaker cloud是否提供服務(wù)器端的OPEN API,我們希望RainMaker cloud能夠跟我們現(xiàn)有的系統(tǒng)進行對接。
    發(fā)表于 07-19 08:20

    求助,關(guān)于Espressif Cloud的問題求解

    現(xiàn)在我想要基于Espressif Cloud做一些IOT產(chǎn)品,但是有幾個問題不是很清楚,需要Espressif的技術(shù)給些答復(fù): 1.如果我想要基于Espressif Cloud做產(chǎn)品,是不是必須
    發(fā)表于 07-15 06:51

    螞蟻集團發(fā)布隱語Cloud大模型密算平臺

    在2024年世界人工智能大會的聚光燈下,螞蟻集團憑借其深厚的技術(shù)底蘊與創(chuàng)新精神,正式發(fā)布了革命性的“隱語Cloud”大模型密算平臺。這一平臺的問世,標(biāo)志著在人工智能領(lǐng)域,數(shù)據(jù)安全與隱私保護邁入了一個全新的發(fā)展階段。
    的頭像 發(fā)表于 07-09 14:37 ?793次閱讀

    玩轉(zhuǎn)Spring狀態(tài)機

    說起Spring狀態(tài)機,大家很容易聯(lián)想到這個狀態(tài)機和設(shè)計模式中狀態(tài)模式的區(qū)別是啥呢?沒錯,Spring狀態(tài)機就是狀態(tài)模式的一種實現(xiàn),在介紹Spring狀態(tài)機之前,讓我們來看看設(shè)計模式中的狀態(tài)模式
    的頭像 發(fā)表于 06-25 14:21 ?1099次閱讀
    玩轉(zhuǎn)<b class='flag-5'>Spring</b>狀態(tài)機

    ESP-Jumpstart例程中第5個工程:5_cloud連接報錯是哪里的問題?

    IDF版本:esp-idf-v4.4.4 配網(wǎng)成功后,連不上云,報錯信息如下: Starting cloud I (64403) cloud: Shadow Init I (64413
    發(fā)表于 06-12 07:20
    主站蜘蛛池模板: 东京热 百度影音 | 亚洲成年人在线观看 | 午夜性伦鲁啊鲁免费视频 | 高清无码中文字幕在线观看视频 | 久久精品一本到99热 | 日本高清在线一区二区三区 | 美女内射少妇三区五区 | 2019午夜福合集不打码 | 日韩精品人成在线播放 | YELLOW视频在线观看最新 | 国产亚洲精品 在线视频 香蕉 | 边做边爱免费视频 | 黑吊大战白女出浆 | 国产午夜精品不卡观看 | 乳色吐息在线观看全集免费观看 | 老师系列高H文 | 国产在线精品视频二区 | 午夜爽喷水无码成人18禁三级 | 国产婷婷一区二区在线观看 | 久久一er精这里有精品 | 男人网站在线 | 日日噜噜噜噜夜夜爽亚洲精品 | 色婷婷欧美在线播放内射 | 男人日女人的b | 久久国产精品高清一区二区三区 | 蜜芽在线影片 | 一级毛片两人添下面 | 猛烈抽插H1V1 | 国产亚洲精品在浅麻豆 | 国产AV国产精品国产三级在线L | 好男人在线视频 | 精品手机在线视频 | 色婷婷狠狠97成为人免费 | 久久一er精这里有精品 | 东京热 百度影音 | 亚洲 欧美 国产 综合不卡 | 国产 亚洲 中文字幕 在线 | 69夫妻交友网 | 无限好资源免费观看 | 99精品视频一区在线视频免费观看 | 国内一级一级毛片a免费 |