.net core中使用consul完成注册服务,销毁服务

1.consul在微服务中的作用

   consul主要做三件事:1.提供服务到ip的注册 

                                       2.提供ip到服务地址的列表查询

                                       3.对提供服务方做健康检查(定时调用服务方一个用于健康检查的api接口 告诉消费方,服务方的服务是否还存在)

2.consul的下载及安装

   1.consul的下载地址 www..consul.io 

   2.consul的安装   consul agent -dev  开发环境测试,在生产环境中要建立集群

   3.consul的监控页面 http://127.0.0.1:8500

3.相关代码

   新建一个Asp.net core Web应用程序,选择Web API

在新创建的Web API程序的Startup.cs中完成服务的注册

public void Configure(IApplicationBuilder app,IHostEnvironment env,IApplicationLifetime applicationTime)

{

     

   if (env.IsDevelopment())
  {
       app.UseDeveloperExceptionPage();
  }
  else
  {
      app.UseHsts();
  }

  string ip = Configuration["ip"];//获取服务的ip地址

  string port = Configuration["port"];//获取服务的端口号

  string serviceName = "MsgService";//服务的名称

  string serviceId = serviceName +Guid().NewGuid();//服务的ID 必须保证每一个服务的id是不一样的

 //consul的本地默认的ip及端口号为http://127.0.0.1:8500 

  using(var consulClient = new ConsulClient(a=>{a.Address = new Uri("http://127.0.0.1:8500";a.DataCenter="dic1";)})){

        AgentServiceRegistration asr = new AgentServiceRegistration();//创建一个服务代理的注册者

       asr.Address = ip;

       asr.Port = port;

       asr.ID = serviceId;

       asr.Name = serviceName;

       asr.Check = new AgentServiceCheck(){ //设置健康检查间隔时间以及检查地址

              DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//

                   HTTP = $"http://{ip}:{port}/api/Health",

                   Interval = TimeSpan.FromSeconds(10),

                   TimeOut = TimeSpan.FromSeconds(5)

       };

       //这是一个异步方法 

       consulClient.Agent.ServiceRegister(asr).wait();

  }

  //注销服务 

  applicationTime.ApplicationStopped.Register(()=>{

     using(var consulClient  = new ConsulClient(a=>a.Address = new Uri("http://127.0.0.1:8500")))

     {

            //通过服务的Id完成服务的销毁

             consulClient.Agent.ServiceDeregister(serviceId).wait();

     }

  })
}

猜你喜欢

转载自www.cnblogs.com/deraemon/p/dareomon.html