zoukankan      html  css  js  c++  java
  • 微服务入门03 Consul

    consul是一个服务的管理者,用来服务注册 提供 消费

    下载地址
    https://www.consul.io/downloads.html

    运行

    consul.exe agent -dev 这是开发环境测试,生产环境要建集群,要至少一台 Server,多台 Agent。 开发环境中 consul 重启后数据就会丢失。

    consul启动后默认的端口是8500 这时候就可以访问 http://127.0.0.1:8500/

    consul 主要做三件事:

    • 提供服务到 ip 地址的注册;
    • 提供服务到 ip 地址列表的查询;
    • 对提供服务方的健康检查(HealthCheck);

    .netCore 中的配置

    Install-Package Consul
    

    心跳检测

    consul会定时向这个地址请求,证明这个服务还“有心跳” 还活着而不是已经关闭

    [Route("api/[controller]")]
    public class HealthController : Controller
    {
        [HttpGet]
        public IActionResult Get() {
             return Ok("ok"); 
        }
    }
    

    在Configure注册

    //服务名字
    var serviceName = "MsgService";
    var serviceId = serviceName + Guid.NewGuid();
    using (var consulClient = new ConsulClient(m =>
    {
        m.Address = new Uri("http://127.0.0.1:8500");
        m.Datacenter = "dcl";
    }))
    {
        consulClient.Agent.ServiceRegister(new AgentServiceRegistration
        {
            Address = ip,
             Port= Convert.ToInt32(port),
             ID=serviceId,
             Name=serviceName,
             Check =new AgentServiceCheck
             {
                 DeregisterCriticalServiceAfter=TimeSpan.FromSeconds(5),
                 HTTP=$"http://{ip}:{port}/api/Health",
                 Interval=TimeSpan.FromSeconds(10),
                 Timeout=TimeSpan.FromSeconds(5)
             }
        }).Wait();
    }
    

    终止服务
    在Configure 中注入IApplicationLifetime 在服务停止的时候注销该服务

        //服务停止
        applicationLifetime.ApplicationStopped.Register(() =>
        {
            using (var consulClient = new ConsulClient())
            {
                Console.WriteLine("应用退出了");
                consulClient.Agent.ServiceDeregister(serviceId).Wait();
            }
        });
    
  • 相关阅读:
    最好用的html复制插件——Clipboard.js
    最好用的轮播插件——Swiper.js
    媒体查询
    函数防抖和节流
    JQ增删改查localStorage实现搜索历史功能
    vscode如何设置html模板
    js中innerHTML、outerHTML、innerText、outerText的区别
    JS实现一个简单的网页钟表
    Sql Server 2014完全卸载
    照片尺寸大小怎样换算?
  • 原文地址:https://www.cnblogs.com/Amayer/p/9609254.html
Copyright © 2011-2022 走看看