.net Core微服务架构之集群,服务注册和发现,客户端--多服务实例--Consul完成服务的注册与发现

.net Core微服务架构之集群,服务注册和发现,客户端--多服务实例--Consul完成服务的注册与发现,框架结构图如下

Nuget下载Consul,服务注册核心代码(写了一个扩展方法)
public static class ConsuHelper
{
    public static void ConsuRegist(this IConfiguration configuration)
    {
        try
        {
            //与Consul建立连接
            ConsulClient client = new ConsulClient(c =>
            {
                c.Address = new Uri("http://localhost:8500");
                c.Datacenter = "dc1";
            });

            string ip = configuration["ip"];//这个一定要命令行启动,不然获取不到会报错
            int port = int.Parse(configuration["port"]);
            //注册服务到Consul
            client.Agent.ServiceRegister(new AgentServiceRegistration()
            {
                ID = "Service" + Guid.NewGuid(),//维一ID
                Name = "lqwvje",//组名
                Address = ip,//"127.0.0.1",
                Port = port
            });
        }
        catch
        {
        }
    }
}

//下面是Startup类 Configure应用此扩展方法  这里我用的是.net core 3.0
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    //TODO...
    this.Configuration.ConsuRegist();
}
下面是客户端发现服务端核心代码如下
public IActionResult Test()
{
    //与Consul建立连接
    ConsulClient client = new ConsulClient(c =>
    {
        c.Address = new Uri("http://localhost:8500");
        c.Datacenter = "dc1";
    });
    var dic = client.Agent.Services().Result.Response;//获取集群所有服务端信息
    StringBuilder builder = new StringBuilder();
    foreach (var agent in dic)
    {
        AgentService service = agent.Value;
        builder.AppendLine($"ID:【{service.ID}】 组名:【{service.Service}】 IP:【{service.Address}】  端口:【{service.Port}】<br/>");
    }
    string result = builder.ToString();
    return Content(result);
}
转载请保留原创地址http://www.luofenming.com/show.aspx?id=ART2019121800001

评论