• 微服务-2.Consul服务的注册与发现


    1.下载Consul

    2.在Consul程序所在文件夹使用CMD命令:consul.exe agent -dev

    3.打开浏览器输入: http://loclhost:8500

    4.注册服务与发现服务(应在项目执行时进行注册)

      1)打开接口项目

      2)引用Consul包

      3)新建HealthController 写健康检查接口(通过调用接口,根据返回状态判断是否正常)

    [Route("api/[controller]/[action]")]
        [ApiController]
        public class HealthController : ControllerBase
        {
            public IActionResult Index()
            {
                return new JsonResult("ok");
            }
        }
    

      

      4)新建一个ConsulHelper帮助类,定义一个注册方法

    public static void ConsulRegist(this IConfiguration configuration)
            {
                ConsulClient client = new ConsulClient(c =>
                {
                    c.Address = new Uri("http://localhost:8500");
                    c.Datacenter = "dc1";
                });
           // 该项目文件夹下cmd命令:dotnet xx.dll --urls="http://*:9090" --ip:"127.0.0.1" --port:9090
                var address = configuration["ip"];  // 使用命令执行项目传递的ip地址;
                var port = int.Parse(configuration["port"]); // 使用命令执行项目传递的端口
            
                client.Agent.ServiceRegister(new AgentServiceRegistration()
                {
                    ID = "service" + Guid.NewGuid(), // 唯一的
                    Name = "BesosService", // 组名称-Group
                    Address = address,
                    Port = port,
                    Tags = new string[] { $"http://{address}:{port}/api/Health/Index" }, // 标签,
              // 心跳健康检查 Check = new AgentServiceCheck() { Interval = TimeSpan.FromSeconds(12), // 间隔12s一次 HTTP = $"http://{address}:{port}/api/Health/Index", // 调健康检查接口 Timeout = TimeSpan.FromSeconds(5), // 检查等待时间 DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(60) // 失败后多久移除 最小值60s } }) ; }

      5)可放在Starup.cs文件的Configure方法中或者Program.cs文件的主程序入库处

        // 执行且执行一次,注册Consul
          ConsulHelper.ConsulRegist();
    

      6)服务的发现(如何获得已注册的服务的信息)

    public void Found()
            {
                ConsulClient client = new ConsulClient(c =>
                {
                    c.Address = new Uri("http://localhost:8500");
                    c.Datacenter = "dc1";
                })
                var response = client.Agent.Services().Result.Response;
                var serviceDictionary = response.Where(c => c.Value.Service.Equals("BesosService", StringComparison.OrdinalIgnoreCase))
                                               .ToArray();
            }
    

      

      

  • 相关阅读:
    2018 秋招找工作总结
    Java 实现 LRU 缓存
    历时2个月,星云链DApp开发总结
    Java 版快速排序 + 最挫的优化
    MacOS 下防止 rm 命令误删
    Java使用Log日志系统(common-logging和log4j)
    IDEA+Maven+Spring+SpringMVC+SpringJDBC整合Demo
    Java简单实现并发编程
    设计模式学习笔记——单例模式
    Java获取网页内容
  • 原文地址:https://www.cnblogs.com/besos/p/13437919.html
Copyright © 2020-2023  润新知