1.安装启动consul: 得到注册中心的IP和端口
2.程序把自己注册到consul上去。
3.其他程序访问,直接按照servicename从consul中得到api的IP地址和端口。
 
 
 
2.注册
 
ConsulClient client = new ConsulClient(
(ConsulClientConfiguration c) =>
{
c.Address = new Uri(Configuration["Consul:Address"]); //Consul服务中心地址
c.Datacenter = Configuration["Consul:DataCenter"]; //指定数据中心,如果未提供,则默认为代理的数据中心。
}
);
string checkUrl = Configuration["Consul:CheckUrl"];
client.Agent.ServiceRegister(new AgentServiceRegistration()
{
ID = Guid.NewGuid().ToString(), //服务编号,不可重复
Name = Configuration["Consul:ServiceName"], //服务名称
Port = ConsulServicePort, //本程序的端口号
Address = ConsulServiceIP, //本程序的IP地址
Check = new AgentServiceCheck()
{
DeregisterCriticalServiceAfter = TimeSpan.FromMilliseconds(1), //服务停止后多久注销
Interval = TimeSpan.FromSeconds(5), //服务健康检查间隔
Timeout = TimeSpan.FromSeconds(5), //检查超时的时间
HTTP = $"http://{ConsulServiceIP}:{ConsulServicePort}{checkUrl}" //检查的地址
}
});
 
 
 
3.动态获取服务的地址IP和端口。
 
 
 
using (var consul = new Consul.ConsulClient(c =>
{
c.Address = new Uri("http://127.0.0.1:8500"); //Consul地址
}))
{
var services = consul.Catalog.Service("00000000").Result.Response;
foreach (var s1 in services)
{
Console.WriteLine($"ID={s1.ServiceID},Service={s1.ServiceName},Addr={s1.Address},Port={s1.ServicePort}");
}
 
}