.net core學習筆記,組件篇:服務的注冊與發現(Consul)初篇(二)


在上一篇文章我們簡單了解了什么是注冊中心以及Consul的一些概念,也簡單的實現了Consul在.net core api中的使用。

.net core學習筆記,組件篇:服務的注冊與發現(Consul)初篇(一)

今天,我們在上一篇的基礎上做一下擴展,來簡單實現.net core中Consul的健康檢查的功能。

首先,我們添加一個健康檢查的控制器,用來給Consul調用:

 1     /// <summary>
 2     /// consul心跳檢測地址
 3     /// </summary>
 4     [Route("HealthCheck")]
 5     [ApiController]
 6     public class HealthCheckController : ControllerBase
 7     {
 8         // GET: api/Teams
 9         [HttpGet]
10         public ActionResult GetHealthCheck()
11         {
12             Console.WriteLine($"進行心跳檢測:{DateTime.Now}");
13             return Ok("連接正常");
14         }
15     }

 

然后,我們再回到上一篇的服務注冊代碼:

 1 // 創建Consul的客戶端連接
 2 var consulClient = new ConsulClient(configuration =>
 3 {
 4     // Consul的連接地址
 5     configuration.Address = new Uri("http://127.0.0.1:8500");
 6 });
 7 // 創建Consul的服務注冊信息
 8 var registration = new AgentServiceRegistration()
 9 {
10     // 服務ID
11     ID = Guid.NewGuid().ToString(),
12     // 服務名稱
13     Name = "demoService",
14     // 服務連接地址
15     Address = "https://localhost",
16     // 端口
17     Port = 5001,
18     // AgentServiceRegistration對象還有一些其他屬性,后面有機會再了解
19     Check = new AgentServiceCheck
20     {
21         // consul健康檢查超時間
22         Timeout = TimeSpan.FromSeconds(10),
23         // 服務停止5秒后注銷服務
24         DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),
25         // consul健康檢查地址
26         HTTP = "https://localhost:5001/HealthCheck",
27         // consul健康檢查間隔時間
28         Interval = TimeSpan.FromSeconds(3),
29     }
30 };
31 // 注冊服務
32 consulClient.Agent.ServiceRegister(registration);

上面這段代碼的AgentServiceRegistration對象,比之前多了一個Check的屬性:

  • Timeout:超時時間,超過多長時間Consul就會判斷這個服務掛了
  • DeregisterCriticalServiceAfter:服務注銷時間,Consul判斷你超時之后,過一段時間會注銷服務,注銷時間可能與設置時間會有一段延遲
  • HTTP:Consul健康檢查地址,就是我們剛才添加的HealthCheckController
  • Interval:Consul健康檢查間隔時間,沒過多長時間去請求HealthCheckController一次

 

接下來,我們啟動服務提供者項目,來看看實際效果:

 

從第一張圖我們可以看出來,健康檢查已經成功執行,並且執行時間間隔也是我們設置的3秒一次。

第二張圖我們可以看到多了個All service checks passing的標識,也就是所有服務檢查通過的意思。

 

接下來我們關閉demoService這個服務,再看看效果:

 

 可以發現該服務顯示檢查失敗,過一段時間后該服務也會自動注銷。


 這篇文章暫時就到這里,上面就是.net core對Consul健康檢查最簡單的應用。隨着學習的深入,后面會有相應的學習筆記記錄。

因為本人也是處於探索階段,上面所寫的也僅僅是一些學習筆記,所以一些理解可能不夠准確,希望所寫的一些內容出現錯誤大家能給予包容和指正。

demoService


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM