Spring colud 服務上線下線

2021-09-25 12:59:31 字數 1525 閱讀 4288

1,直接kill 

該方式借助的是spring boot應用的shutdown hook,應用本身的下線也是優雅的,但如果你的服務發現元件使用的是eureka,那麼預設最長會有90秒的延遲,其他應用才會感知到該服務下線,這意味著:該例項下線後的90秒內,其他服務仍然可能呼叫到這個已下線的例項。因此,該方式是不夠優雅

2, 主動關閉eureka客戶端

這種方式相對於直接關閉服務來說,優雅了許多,可以通過監控檢視是否下線後還有流量進來,等到完全沒有流量進來後再進行發布。因為eureka註冊中心在收到某個客戶端下線後不會馬上通知所有的註冊的客戶端,而是等到客戶端進行心跳的時候再將下線的資料返回。通過這種方式下線的話,可以在某個服務下線後防止其他服務呼叫此服務失敗。在專案中可以使用如下方式關閉客戶端:

@autowired

private eurekaclient client;

public string shutdown()

直接呼叫/eurekaunregister即可讓當前服務下線,做好許可權控制。 

特點:需要改**。 下線後服務程序還在,可以等沒有流量再發布。註冊中心服務下線。

3./shutdown端點

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

在想下線應用的 properties中新增如下配置,從而啟用並暴露/shutdown端點

#啟用shutdown

endpoints.shutdown.enabled=true

#禁用密碼驗證

endpoints.shutdown.sensitive=false

然後傳送post請求到/shutdown端點

特點:發現這個程序停止了。

4./pause 端點

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

使用方式:

在想下線應用的 properties中新增如下配置,從而啟用並暴露/pause端點

#啟用pause,restart,之所以要啟用restart端點,是因為pause端點的啟用依賴restart端點的啟用

endpoints.pause.enabled=true

endpoints.restart.enabled=true

#禁用密碼驗證

endpoints.pause.sensitive=false

#暴露端點

endpoints.web.exposure.include=pause

特點:pause後服務程序在;註冊中心顯示down;  如果你的服務發現元件用的是eureka,並且你的應用開啟了健康檢查(eureka.client.healthcheck.enabled = true那麼/pause端點無效!!!

上線服務觀察

上線乙個服務需要觀察的點有 1.服務的記憶體使用情況是否正常 在做agent的時候,由於後期改了監控的邏輯,導致一部分記憶體洩漏,記憶體持續增長。覺得觀察的步驟是在程式上線幾個週期,5分鐘持續關注,如果一直 得思考,一天後也要一直關注5分鐘,這時候如果不是很高一般問題不大,不過幾天後也要看記憶體的增...

shell lamp服務上線yum安裝

lamp服務上線yum安裝 啟動apache和mysql並設定開機自啟 開啟httpd service httpd start 開機自啟httpd chkconfig httpd on 檢視 chkconfig httpd list 開啟mysql service mysqld start 開機自啟...

專案上線之 部署伺服器

專案開發完成以後,合併 成果到master分支。部署到雲伺服器上執行。首先,在伺服器上建立資料夾放專案 mkdir p project 將 部分轉殖到code資料夾中 cd project cd code git clone git gitee.com zhangyao97 teamwork.git...