zoukankan      html  css  js  c++  java
  • 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仅供入门学习,实际工作项目中,还包括健康检查,注册集群,动态注册等等

  • 相关阅读:
    Python记录_day21 模块
    python记录day_20 多继承
    python记录_day019 类的约束 异常处理 日志
    python记录_day018 md5加密
    python记录_day18 反射 判断函数与方法
    python记录_day17 类与类之间的关系
    python记录_day16 类的成员
    实验0 了解和熟悉操作系统
    IT就业·软件工程之我见
    递归下降分析程序
  • 原文地址:https://www.cnblogs.com/mc-hui/p/12934143.html
Copyright © 2011-2022 走看看