学习笔记----微服务中的服务注册与发现

前言:简单介绍微服务中服务注册与发现的配置使用

一,微服务中的服务注册与发现

分布式微服务架构中一个应用可能由一组职责单一化的服务组成, 所以服务需要一个统一的管理中间件,往上可以为方便服务之间的调用,往下可以便于服务的水平扩展以及服务状态的管理。

服务的注册:为每一个服务实例提供注册的服务组件(比如zookeeper\consul),为服务发现提供可用服务的目录

服务的发现:服务模块能够被其他调用及时发现

二,微服务中的Consul

1,什么是Consul

Consul 是HashiCorp公司推出的开源工具,由Go语言开发的服务网格解决方案,提供具有服务发现、配置和分段功能的全功能控制平面

2,Consul的特点

服务发现:Consul 的客户端可以注册一个服务,例如 api或mysql,其他客户端可以使用 Consul 来发现给定服务的提供者。使用 DNS 或 HTTP,应用程序可以轻松找到它们所依赖的服务。

健康检查:Consul 客户端可以提供任意数量的健康检查,要么与给定的服务相关联(“网络服务器是否返回 200 OK”),要么与本地节点(“存 利 用 率 低 于 90%”)相关联。操作员可以使用此信息来监视集群健

康状况,并且服务发现组件可以使用它来将流量从不健的主 机 路由 出 去。

KV 存储:应用程序可以将 Consul 的分层键/值存储用于多种目的,包括动态配置、功能标记、协调、领导选举等。简单的 HTTP API 使其易于使 用。

安全服务通信:Consul 可以为服务生成和分发 TLS 证书,以建立相互的 TLS 连接。 意图 可用于定义允许哪些服务进行通信。可以通过实时更 意 图 轻 松 管 理 服 务 分段,而不是使用复杂的网络拓扑和静态防火墙规则。

多数据中心:Consul 支持开箱即用的多个数据中心。这意味着 Consul 的用户不必担心构建额外的抽象层以扩展到多个区域。

三,Consul的简单使用

 1,安装:直接在官网下载解压即可 (Consul官网:https://www.consul.io/)

 2,运行 在consul.exe目录下打开命令行执行 consul.exe agent -dev,然后浏览器访问:http://localhost:8500/     

  3,项目中使用:

     (1)首先Nuget安装一下Consul:

       

   

     (2)添加注册配置:
   

、     ConsulSetHelper:

public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app, IHostApplicationLifetime lifetime)
        {

            var list = ConsulSetting.List();
            if (list != null && list.Count > 0)
            {
                foreach (var item in list)
                {
                    var consulClient = new ConsulClient(c =>
                    {
                        //consul地址
                        c.Address = new Uri(item.ConsulAddress);
                    });
                    var registration = new AgentServiceRegistration()
                    {
                        ID = item.ID,//服务实例唯一标识
                        Name = item.ServiceName,//服务名
                        Address = item.ServiceIP, //服务IP
                        Port = item.ServicePort,//服务端口
                        Check = new AgentServiceCheck()
                        {
                            DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后注册
                            Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔
                            HTTP = $"http://{item.ServiceIP}:{item.ServicePort}{item.ServiceHealthCheck}",//健康检查地址
                            Timeout = TimeSpan.FromSeconds(5)//超时时间
                        }
                    };
                    //服务注册
                    consulClient.Agent.ServiceRegister(registration).Wait();
                    //应用程序终止时,取消注册
                    lifetime.ApplicationStopping.Register(() =>
                    {
                        consulClient.Agent.ServiceDeregister(registration.ID).Wait();
                    });

                }

            }
            return app;
        }

服务注册就是把服务的基础信息插入到consul中,同一集群的服务建议使用相同的Name

  Startup:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseRouting();   
            //服务注册与发现
            app.RegisterConsul(lifetime);
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
            });
        }

 运行效果:

 

 

 到这个界面就说明服务已经注册成功,其中consul 是系统默认的实例,OrderService(单机)和ProductService(集群) 为测试实例


      
 4,consul服务监听--Watches
 

   低故障率高可用的系统都不离不开一个及时的健康监控,consul 不仅提供了服务注册与发现、安全服务通信、多数据中心等功能,还有Watches机制,

   添加一个server.json配置文件

{

  "watches": [
    {
      "type": "checks",//监听类型
      "state": "critical",//监控服务的状态值:Passing,Warning,Critical
      "handler_type": "http",
      "http_handler_config": {
        "path": "http://localhost:6001/home/get",//通知路径
        "method": "get",//通知请求类型
        "header": {
          "x-foo": [ "XX", "XX" ]
        },
        "timeout": "10s",
        "tls_skip_verify": true
      }
    }
  ]
}

   Watches支持如下类型:

  1. Key – 监视指定K/V键值对
  2. Keyprefix – Watch a prefix in the KV store
  3. Services – 监视服务列表
  4. nodes – 监控节点列表
  5. service – 监视服务实例
  6. checks- 监视健康检查的值
  7. event – 监视用户事件

加上监听之后需要修改启动命令:consul.exe agent -config-dir=server.json -dev,server.json和consul.exe放在同一目录

 下一篇 Ocelot中的服务发现、注册、健康检查以及简单的服务治理
 

--------to be continue --------

   

     


         

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Python学习笔记》是由皮大庆编写的一本关于Python语言学习的教材。在这本书,作者详细介绍了Python语言的基础知识、语法规则以及常用的编程技巧。 首先,作者简要介绍了Python语言的特点和优势。他提到,Python是一种易于学习和使用的编程语言,受到了广大程序员的喜爱。Python具有简洁、清晰的语法结构,使得代码可读性极高,同时也提供了丰富的库和模块,能够快速实现各种功能。 接着,作者详细讲解了Python的基本语法。他从变量、数据类型、运算符等基础知识开始,逐步介绍了条件语句、循环控制、函数、模块等高级概念。同时,作者通过大量的示例代码和实践案例,帮助读者加深对Python编程的理解和应用。 在书,作者还特别强调了编写规范和良好的编程习惯。他从命名规范、注释风格、代码缩进等方面指导读者如何写出清晰、可读性强的Python代码。作者认为,良好的编程习惯对于提高代码质量和提高工作效率非常重要。 此外,作者还介绍了Python的常用库和模块。他提到了一些常用的库,如Numpy、Pandas、Matplotlib等。这些库在数据处理、科学计算、可视化等领域有广泛的应用,帮助读者更好地解决实际问题。 总的来说,《Python学习笔记》是一本非常实用和全面的Python学习教材。通过学习这本书,读者可以系统地学习和掌握Python编程的基础知识和高级应用技巧,为以后的编程学习和工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值