zoukankan      html  css  js  c++  java
  • 微服务-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();
            }
    

      

      

  • 相关阅读:
    Linux下解压分包文件zip(zip/z01/z02)
    Ubuntu 16.04安装Notepadqq编辑器替代Notepad++
    Ubuntu 16.04安装NASM汇编IDE-SASM
    java命令--jstack 工具
    详述 hosts 文件的作用及修改 hosts 文件的方法
    译:Java 中的正则表达式性能概述
    译:25个面试中最常问的问题和答案
    Android中使用GoogleMap的地理位置服务
    Android 从imageview中获得bitmap的方法
    Android通过百度地图API用Service和Alarm在后台定时获取地理位置信息
  • 原文地址:https://www.cnblogs.com/besos/p/13437919.html
Copyright © 2011-2022 走看看