您好,登錄后才能下訂單哦!
這篇文章主要講解了“.Net Core服務治理Consul健康檢查方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“.Net Core服務治理Consul健康檢查方法是什么”吧!
經過之前的操作,我的consul已經支持自動擴展,并且調用也很靠譜。但是這里有個問題,一旦服務列表里的某個服務掛了,consul并不知道,還是會把實際無效的地址返回給我,就算重啟consul容器也無法刷新到最新的狀態。所以,咱們要監控服務可用性,主動區分出不可用服務,這種手段,就稱之為健康檢查。
進入編碼環節。老規矩,還是進入到之前我封裝好的注冊方法,在注冊時增加健康檢查的內容:
client.Agent.ServiceRegister(new AgentServiceRegistration() { ID = $"server {ip}:{port}", Name = "shenzhen-ma", Address = ip, Port = int.Parse(port), Tags = new string[] { weight }, Check = new AgentServiceCheck() { Interval = TimeSpan.FromSeconds(10),//每隔10秒發起檢查 HTTP = $"http://{ip}:{port}/v1/client/base/index",//檢查請求地址 Timeout = TimeSpan.FromSeconds(5),//超時時長5秒 DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10)//超過10秒還沒能連接到服務,就開始注銷本服務 } });
變色部分就是健康檢查的配置了。根據上面的配置,consul會周期性發起健康檢查,并且根據結果自動移除不可用的服務。
這次我要嚴謹一些,用真實的遠程服務器來模擬生產環境。手頭服務器太多,很多有項目在跑。仔細翻了翻,發現還有兩臺相對空閑的服務器,一臺是win server,另一臺centos,嘿嘿,正好。centos做consul服務器,win服務器用來做下游調用方。
先把consul搞起來:
進去訪問下:
OK了,現在轉到另一臺服務器跑幾個客戶端。這里偷個懶,直接把可運行文件拷貝過去,哈哈:
看下consul控制臺:
還是熟悉的shenzhen-ma,兩個服務已經穩穩的待在分組列表里了。注意我框起來的位置,它表示服務已經通過了健康檢查。這時候我把5051這個程序關掉,再來看看:
5051狀態自動更新成failing,而且沒過一會兒,它就會自動移除。5050這時候去再去訪問,就訪問不到5051了:
再然后偷偷把5051跑起來,重新調用:
又可以訪問了不是?
新實例啟動自動發現,實例狀態異常自動剔除,下端調用無需任何調整,舒坦。起碼我這個懶人覺得很舒服。
tips:新的服務默認狀態是failing,注冊成功后會馬上發起一次檢查,成功后才會變更狀態。而且服務注銷沒有那么快,耗時一般都會比設置的時間長。
感謝各位的閱讀,以上就是“.Net Core服務治理Consul健康檢查方法是什么”的內容了,經過本文的學習后,相信大家對.Net Core服務治理Consul健康檢查方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。