C#-使用Consul

简介: Consul是一个服务网格解决方案,提供了一个功能齐全的控制平面,具有服务发现、配置和分段功能。

Consul是一个服务网格解决方案,提供了一个功能齐全的控制平面,具有服务发现、配置和分段功能。

下载安装Consul,直接去官网(Consul by HashiCorp)下载即可。

启动Consul,访问consul主页,默认为http://localhost:8500。

#开发模式启动consul agent -dev


将服务注册到Consul,首先需要下载consul的nuget包,在包管理器中,搜索consul进行安装,使用扩展方法封装一个通用的注册方法:

//ConsulRegistryExtensions.csusingConsul;
usingMicrosoft.AspNetCore.Builder;
usingMicrosoft.Extensions.Configuration;
usingMicrosoft.Extensions.Hosting;
namespaceConsulHelper{
publicstaticclassConsulRegistryExtensions    {
publicstaticIApplicationBuilderUseConul(thisIApplicationBuilderapplicationBuilder, IConfigurationconfiguration, IHostApplicationLifetimelifetime) 
        {
try            {
stringip=configuration["Consul:Ip"];
intport=Convert.ToInt32(configuration["Consul:Port"]);
stringserviceName=configuration["Consul:ServiceName"];
varserviceId=Guid.NewGuid().ToString();
varconsulHost=configuration["Consul:ConsulHost"];
varconsulDataCenter=configuration["Consul:ConsulDataCenter"];
//创建consul的连接对象varconsulClient=newConsulClient(c=>                {
c.Address=newUri(consulHost);
c.Datacenter=consulDataCenter;
                });
AgentServiceRegistrationagentServiceRegistration=newAgentServiceRegistration()
                {
ID=serviceId,
Name=serviceName,
Address=ip,
Port=port,
Check=newAgentServiceCheck()
                    {
Interval=TimeSpan.FromSeconds(10),
HTTP=$"http://{ip}:{port}/Api/ApiHealth",
Timeout=TimeSpan.FromSeconds(10),
DeregisterCriticalServiceAfter=TimeSpan.FromSeconds(20)
                    }
                };
//将服务注册到consul上consulClient.Agent.ServiceRegister(agentServiceRegistration).Wait();
//注销实例lifetime.ApplicationStopped.Register(async () =>                {
awaitconsulClient.Agent.ServiceDeregister(serviceId);
                });
            }
catch(Exceptionex)
            {
            }
returnapplicationBuilder;
        }
    }
}

配置文件中的参数配置:

"Consul": {
"Ip": "127.0.0.1",
"Port": "5272",
"ServiceName": "ContentService",
"ConsulHost": "http://127.0.0.1:8500",
"ConsulDataCenter": "dc1"  }

在WebApi项目的Controller文件夹中,创建心跳检测接口:

//ApiHealthController.csusingMicrosoft.AspNetCore.Mvc;
namespaceContentService.WebApi.Controllers{
    [Route("Api/[controller]")]
publicclassApiHealthController:Controller    {
        [HttpGet]
publicIActionResultGet()
        {
returnOk("ok");
        }
    }
}

在Program.cs中调用刚才我们写的扩展方法:

//服务注册到consul中IConfigurationconfiguration=app.Configuration;
IHostApplicationLifetimelifetime=app.Lifetime;
app.UseConul(configuration, lifetime);

启动服务,可以看到服务已经成功添加到Consul中了。

目录
相关文章
|
存储 数据安全/隐私保护 Docker
consul集群部署
consul集群部署
204 0
|
存储 网络协议 Java
Consul服务注册与发现
Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。
1920 0
Consul服务注册与发现
|
网络协议 算法 Java
04SpringCloud 之 Consul 简介
04SpringCloud 之 Consul 简介
79 0
|
算法 网络协议 数据中心
05SpringCloud - Consul常用命令
05SpringCloud - Consul常用命令
51 0
|
6月前
|
Kubernetes 容器
Warning FailedScheduling 14m (x12 over 16m) default-scheduler 0/1 nodes are available: 1 node(s
Warning FailedScheduling 14m (x12 over 16m) default-scheduler 0/1 nodes are available: 1 node(s
121 0
|
JSON 算法 数据中心
consul介绍与安装
Consul是一个微服务管理软件。支持多数据中心下,分布式高可用的,服务发现和配置共享。采用 `Raft 算法`,用来保证服务的高可用。
190 0
consul介绍与安装
springcloud整合consul
新建Module支付服务provider8006 cloud-providerconsul-payment8006
springcloud整合consul
|
存储 监控 网络协议
Consul简介和安装
Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。
Consul简介和安装
|
存储 负载均衡 网络协议
C#使用Consul集群进行服务注册与发现
我个人觉得,中间件的部署与使用是非常难记忆的;也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用。 所以,我觉得学习中间件的文章,越详细越好;因为,这对作者而言也是一份珍贵的备忘资料。
C#使用Consul集群进行服务注册与发现