国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Spring Cloud和Euraka的優雅下線以及灰度發布

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

掃碼添加小助手

加入工程師交流群

前言

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

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

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

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

優雅下線

常見的下線方式

方式一:kill PID

使用方式:kill java進程ID

該方式借助的是 Spring Boot 應用的 Shutdown hook,應用本身的下線也是優雅的,但如果你的服務發現組件使用的是 Eureka,那么默認最長會有 90 秒的延遲,其他應用才會感知到該服務下線,這意味著:該實例下線后的 90 秒內,其他服務仍然可能調用到這個已下線的實例。因此,該方式是不夠優雅的。

方式二:/shutdown端點

Spring Boot 提供了/shutdown端點,可以借助它實現優雅停機。

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

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

發送 POST 請求到/shutdown端點

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

該方式本質和方式一是一樣的,也是借助 Spring Boot 應用的 Shutdown hook 去實現的

方式三:/pause端點

Spring Boot 應用提供了/pause端點,利用該端點可實現優雅下線。

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

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

發送 POST 請求到/actuator/pause端點:

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

執行后的效果類似下圖:

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

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

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

缺點 & 局限

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

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

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

發送 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圖片

優雅的下線方式

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

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

除了上述的下線方式之外,還有一種利用EurekaAutoServiceRegistration對象達到優雅下線的目標。

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

示例代碼如下:

@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.";
}
}

到這里,我們已經介紹了兩種相對優雅的下線方式了。具體如何操作,我們可以根據實際上情況進行包裝,或者利用自動化的腳本來實現更加優雅的下線方式。

灰度發布

藍綠部署

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

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

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

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

滾動部署

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

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

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

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

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

金絲雀部署

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

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

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

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

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

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

-End-

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化
    +關注

    關注

    31

    文章

    5930

    瀏覽量

    90222
  • springcloud
    +關注

    關注

    0

    文章

    17

    瀏覽量

    1669

原文標題:SpringCloud 優雅下線+灰度發布

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    由Memfault賦能的Nordic-nRF Cloud云服務將硬核加持物聯網通信應用

    全球低功耗無線通信半導體解決方案領導者 Nordic Semiconductor (以下簡稱 “Nordic”) 宣布,通過Memfault技術驅動的nRF Cloud平臺在 2025 年移動突破獎
    發表于 11-27 22:30

    小鵬汽車迎來第100萬臺整車正式下線

    11月21日,小鵬汽車迎來第100萬臺整車正式下線。小鵬汽車在廣州工廠舉行了第100萬臺下線暨首批X9超級增程車主交付,數百家海內外媒體和X9超級增程首批車主共同見證了這一里程碑時刻。
    的頭像 發表于 11-25 10:00 ?491次閱讀

    Anthill Cloud:以AI、模塊化內容與全渠道互動重塑醫藥營銷

    ? 丹麥哥本哈根2025年11月3日 /美通社/ -- 生命科學行業領先的卓越內容與技術合作伙伴Anthill宣布推出Anthill Cloud?,這一創新平臺將AI、模塊化內容與個性化互動融合
    的頭像 發表于 11-03 20:14 ?679次閱讀
    Anthill <b class='flag-5'>Cloud</b>:以AI、模塊化內容與全渠道互動重塑醫藥營銷

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

    Otsu 算法是由日本學者OTSU于1979年提出的一種對圖像進行二值化的高效算法,又稱“最大類間方差法”。當我們對一個圖象進行二值化操作的時候,需要根據一項灰度閾值來判決每個像素點應該被視作純黑
    發表于 10-28 06:49

    聯想moto第3億臺設備成功下線

    很少有人知道,在聯想moto賣瘋了背后,是聯想集團武漢產業基地燈火通明、日夜制造,如今它迎來第3億臺設備下線的里程碑時刻!
    的頭像 發表于 09-18 09:10 ?836次閱讀

    Spring攔截器:你的請求休想逃過我的五指山!

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

    比亞迪第1300萬輛新能源汽車下線

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

    如何使用nRF Cloud

    Nordic Semiconductor云服務和nRF Cloud構成了一個專為Nordic Semiconductor無線設備優化的物聯網平臺。該平臺為使用Nordic Semiconductor
    的頭像 發表于 07-04 11:12 ?970次閱讀
    如何使用nRF <b class='flag-5'>Cloud</b>

    東風嵐圖FREE+煥新下線

    近日,嵐圖FREE+下線儀式在東風嵐圖總裝工廠正式舉行,得益于高效穩定的供應鏈體系,高度自動化的智能生產線,成熟的研發能力,嵐圖FREE+正以超預期的速度與用戶見面,近日,這款“極智駕享大五座SUV”將正式開啟預售。
    的頭像 發表于 06-26 13:52 ?725次閱讀

    NVIDIA推出AI平臺DGX Cloud Lepton

    CoreWeave、Crusoe、Firmus、Foxconn、GMI Cloud、Lambda、Nebius、Nscale、SoftBank Corp. 和 Yotta Data Services 為 DGX Cloud Lepton Marketplace 提供數以萬
    的頭像 發表于 05-22 09:42 ?979次閱讀

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

    近日,理想MEGA家族新成員——理想MEGA Home家庭特別版,在理想汽車北京綠色智能制造基地正式下線,并將于5月23日陸續開啟全國交付。
    的頭像 發表于 05-22 09:17 ?827次閱讀

    nRF Cloud Wi-Fi 定位服務

    nRF Cloud 提供的定位服務專為 Nordic 硅芯片量身定制,具有快速、省電的定位功能。它們可以幫助需要定位數據而又不需要高功耗的設備和應用。提供多種定位技術,包括 Assisted-GPS
    發表于 04-17 15:07

    nRF Cloud 支持多種定位服務介紹

    nRF Cloud 中可用的位置服務在定位精度和功耗方面表現不同,您需要根據您的應用需求選擇最適合的一種
    的頭像 發表于 04-14 16:52 ?510次閱讀
    nRF <b class='flag-5'>Cloud</b> 支持多種定位服務介紹

    推薦!如何優雅地擺好PCB絲印?

    很多畫PCB的人,會認為絲印不影響電路的性能,所以,對絲印并不重視。但是,對于一個專業的硬件工程師來說,必須重視這些細節。 下面介紹如何優雅地弄好PCB絲印。 1 擺放的位置 一般來說,電阻、電容
    發表于 04-08 14:59

    使用修改后的基準C++工具推斷灰度圖像時的推理速度慢怎么解決?

    修改了 基準測試 C++ 工具 ,以加載灰度圖像。 獲得的推理速度非常低。
    發表于 03-06 07:11