Consul 是一个用来实现分布式系统服务发现与配置的开源工具。它内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,也可以作为配置中心。
Consul的下载就不说了,解压包后吧安装路劲放到系统环境变量Path里面去,consul的启动命令。
consul agent -dev
验证启动成功网址:localhost:8500
启动后就要给consul注册了
全局仅一次的注册放在StartUp里,怎么封装先不说,具体实现是这样的
//找到Consul
ConsulClient client = new ConsulClient(c =>
{
c.Address = new Uri("http://localhost:8500/");
c.Datacenter = "dcl";
});
string ip = Configuration["ip"];
int port = Convert.ToInt32(Configuration["port"]);
string tag = Configuration["tag"];
client.Agent.ServiceRegister(new AgentServiceRegistration
{
ID = $"Steven:{Guid.NewGuid()}",
Name = "StevenGroup",
Address = ip,
Port = port,
Tags = new string[] { tag },
Check = new AgentServiceCheck
{
Interval = TimeSpan.FromSeconds(10),//间隔固定的时间访问一次,https://localhost:44308/api/Health
HTTP = $"http://{ip}:{port}/Heart",//健康检查地址
Timeout = TimeSpan.FromSeconds(5)
}
});
Console.WriteLine("注册成功");
我这里是通过控制台传参数进去给IP和Port的
多个实例注册后
值得一提的是在注册中的Name并不是标识,而是分组名称。。。。。
这样就注册完事儿了,接下来说怎么去获取地址
ConsulClient client = new ConsulClient(c =>
{
c.Address = new Uri("http://localhost:8500/");
c.Datacenter = "dcl";
});
var response = client.Agent.Services().Result.Response;
Uri uri = new Uri("http://StevenGroup/weatherforecasta");
string groupName = uri.Host;
AgentService agentService = null;
var dic = response.Where(s => s.Value.Service.Equals(groupName, StringComparison.OrdinalIgnoreCase)).Reverse().ToArray();
agentService = dic[0].Value;
应该很好懂,主要是取出来,至于去取哪一个作为你的转发项,那就看你怎么分配了。
失败重试的逻辑我没写。就这样吧,这篇的目的就是让你的Consul先能跑起来。
到此这篇关于Consul的搭建和.Net5的注册和获取方法(Win10简单版)的文章就介绍到这了,更多相关Consul搭建.Net5的注册获取内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!