dotnet core 3.1+consul 学习(1)

最近在学习微服务方面的知识,使用微服务当然少不了要有一个注册中心,注册中心的作用就是

1.解耦:服务消费者和服务提供者解耦,各自变化,不互相影响

2.扩展:服务消费者和服务提供者增加和删除新服务,对于双方都没任何影响

3.中介者模式:解决 多对多关系

 

 

 

 

 

 

 

注册中心有很多种:

1.zookeeper:一个被广泛使用的分布式的高性能服务(java开发的)

2.consul:一个发现和配置服务的工具,提供API注册和发现服务,为了确保操作性,consul会执行健康检查(go开发,不需要安装任何环境)

3.etcd:一个高可用,分布式的,一致性key-value结构,用于共享配置信息和服务发现K8s使用了etcd

 

 Consul主要由三个概念:1.Server(提供存储服务)  2.client (操作Server)  3.agent(守护进程,所有server和client都要经过agent代理才能启动)

 

介绍完成,开始进入代码运用 怎么去注册和发现

 1.cmd命令先启动一个服务端(要先去下载https://www.consul.io/)

  

consul agent -dev

 这里用-dev是因为只是demo学习,一般线上都是不需要加-dev, 只是存储方式不同,其他功能没区别

 

 

 2.创建一个webapi项目,NuGet引用Consul包

 

 

 

  在Startup中添加以下代码

//1.0创建consul客户端连接
            var consulClient=new ConsulClient(config =>
            {
                config.Address=new Uri("http://127.0.0.1:8500");//服务端地址
            });
            //2.0创建consul服务注册对象
            var registration=new AgentServiceRegistration()
            {
                ID=Guid.NewGuid().ToString(),//服务编号(必要,一般是guid,也可以用其他的)
                Name = "TestServer",//服务名称(必要,集群时候是核心)
                Address = "http://localhost",//服务地址(必要)
                Port = 5001,//端口(必要)
                Tags = null,//服务版本
                Check = null,//健康检查,检查服务是否正常运行(需要)
        
            };
            //3.0注册服务
            consulClient.Agent.ServiceRegister(registration).Wait();
View Code

 

 设置项目启动端口为5001,然后命令行启动项目

 

 

 然后访问consul服务端地址,发现已经成功注册

 

 

   发现服务code

  

 //1.0创建连接
            var consulClient = new ConsulClient(config =>
            {
                //1.1 建立客户端和服务端连接
                config.Address = new Uri("http://127.0.0.1:8500");
            });
            //2.0查询服务
            var result = await consulClient.Catalog.Service("TestServer");
            //3.0将服务进行拼接
            var list = new List<string>();
            foreach (var catalogService in result.Response)
            {
                //1、拼接连接地址
              list.Add(catalogService.ServiceAddress+":"+catalogService.ServicePort);
            }
View Code

 

 

 

 这个demo仅供入门学习,实际工作项目中,还包括健康检查,注册集群,动态注册等等

 

posted @ 2020-05-21 22:45  hkf  阅读(596)  评论(0编辑  收藏  举报