Asp.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健康检查最简单的应用。随着学习的深入,后面会有相应的学习笔记记录。
因为本人也是处于探索阶段,上面所写的也仅仅是一些学习笔记,所以一些理解可能不够准确,希望所写的一些内容出现错误大家能给予包容和指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步