.Net?Core服務治理Consul健康檢查
繼續(xù)上一篇的話題,順便放上一篇的傳送門:點這里。
健康檢查
經過之前的操作,我的consul已經支持自動擴展,并且調用也很靠譜。但是這里有個問題,一旦服務列表里的某個服務掛了,consul并不知道,還是會把實際無效的地址返回給我,就算重啟consul容器也無法刷新到最新的狀態(tài)。所以,咱們要監(jiān)控服務可用性,主動區(qū)分出不可用服務,這種手段,就稱之為健康檢查。
進入編碼環(huán)節(jié)。老規(guī)矩,還是進入到之前我封裝好的注冊方法,在注冊時增加健康檢查的內容:
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秒發(fā)起檢查 HTTP = $"http://{ip}:{port}/v1/client/base/index",//檢查請求地址 Timeout = TimeSpan.FromSeconds(5),//超時時長5秒 DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10)//超過10秒還沒能連接到服務,就開始注銷本服務 } });
變色部分就是健康檢查的配置了。根據上面的配置,consul會周期性發(fā)起健康檢查,并且根據結果自動移除不可用的服務。
這次我要嚴謹一些,用真實的遠程服務器來模擬生產環(huán)境。手頭服務器太多,很多有項目在跑。仔細翻了翻,發(fā)現還有兩臺相對空閑的服務器,一臺是win server,另一臺centos,嘿嘿,正好。centos做consul服務器,win服務器用來做下游調用方。
先把consul搞起來:
進去訪問下:
OK了,現在轉到另一臺服務器跑幾個客戶端。這里偷個懶,直接把可運行文件拷貝過去,哈哈:
看下consul控制臺:
還是熟悉的shenzhen-ma,兩個服務已經穩(wěn)穩(wěn)的待在分組列表里了。注意我框起來的位置,它表示服務已經通過了健康檢查。這時候我把5051這個程序關掉,再來看看:
5051狀態(tài)自動更新成failing,而且沒過一會兒,它就會自動移除。5050這時候去再去訪問,就訪問不到5051了:
再然后偷偷把5051跑起來,重新調用:
又可以訪問了不是?
新實例啟動自動發(fā)現,實例狀態(tài)異常自動剔除,下端調用無需任何調整,舒坦。起碼我這個懶人覺得很舒服。
tips:新的服務默認狀態(tài)是failing,注冊成功后會馬上發(fā)起一次檢查,成功后才會變更狀態(tài)。而且服務注銷沒有那么快,耗時一般都會比設置的時間長。
最后一點
關于consul寫了3篇了,要是都看完,想在項目里用起來是沒問題的,不過要上生產環(huán)境仍然有個隱患:單點故障。你想啊,consul這么能干,萬一它掛了可咋整。。。。所以集群是必要的,而且集群之后的服務注冊、調用自然就不能和單體一樣。這問題三言兩語還說不清,后面再寫吧。
到此這篇關于.Net Core服務治理Consul健康檢查的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解讀ASP.NET 5 & MVC6系列教程(1):ASP.NET 5簡介
這篇文章主要介紹ASP.NET 5簡介以及對各個版本號進行解釋,ASP.NET 5中新的變化,需要的朋友可以參考下。2016-06-06在ASP.NET 2.0中操作數據之一:創(chuàng)建一個數據訪問層
本文主要介紹創(chuàng)建數據訪問層的具體步驟,從配置數據庫連接到插入,更新和刪除數據的具體實現方法,希望對大家有所幫助。2016-04-04Microsoft .Net Remoting系列教程之三:Remoting事件處理全接觸
本文主要講解.Net Remoting中的Remoting事件處理,需要的朋友可以參考下。2016-05-05《解剖PetShop》之四:PetShop之ASP.NET緩存
本文主要講解PetShop4.0的ASP.NET緩存,極大的提高的網站的性能,需要的朋友可以參考下。2016-05-05Visual Studio 2017使用EF選擇MySQL數據源
這篇文章介紹了Visual Studio 2017使用EF選擇MySQL數據源,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01ASP.NET MVC4入門教程(五):從控制器訪問數據模型
本文介紹ASP.NET MVC4中在創(chuàng)建控制器的時候,同時使用Entity Framework為模型生成增刪改查等方法,方便控制器調用。2016-04-04在ASP.NET 2.0中操作數據之十六:概述插入、更新和刪除數據
本文主要介紹ASP.NET中插入、更新和刪除數據的原理,ObjectDataSource在頁面和潛在的數據之間扮演一個代理的角色,配合業(yè)務邏輯可以執(zhí)行Select()、Insert()、Update()和Delete()方法。2016-05-05