侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

详解在Windows下如何使用AspNetCore Api 和consul

Windows  /  管理员 发布于 5年前   193

一、概念:什么是consul:

Consul 是有多个组件组成的一个整体,作用和Eureka,Zookeeper相当,都是用来做服务的发现与治理。

Consul的特性:

1、服务的发现:consul可以把注册到其中的服务提供给使用者,也可以主动发现服务,在consul的客户端界面中用户可以得到,服务的信息,比如IP端口等信息,在客户端界面中可以很容易的找到注册的服务,

2、健康检查:这里健康检查就是检查服务是否在良好的运行,这里判断服务是否运行良好,可以用Web服务的状态进行判断,也可以用服务器的利用状态进行判断,可以根据这些状态来判断那些服务是良好运行的那些是不健康的()这里不健康可以是服务器的利用率)从而根据这些判断路由远离不健康的服务。

3、KVStore:就是KEY/Value的存储,在使用中可以根据KV的存储功能做很多事情比如,动态的进行配置,进行一些特征的标记,协调,管理的选举,KV存储的API是基于HTTP的。

4、多数据中心:consul支持多哦数据中心,意味着我们这是用consul的过程中不必担心多做更多的工作来进行扩展。

Consul是一个分布式的高可用的系统。每一个向consul注册的的服务,在服务无本身都会运行一个(agents)代理,运行代理的最终目的是为了对当前服务进行健康检查,以便通知Consul系统,当前节点的健康与否,在consul的特性(健康检查)我们已经举过例子。

每个数据中心运行一个领事服务器集群。当提出跨数据中心服务发现或配置请求时,本地(agents)服务器将请求转发到远程数据中心并返回结果。

(白话)进行健康检查就是为了决定能不能用这个节点服务,这个节点的服务是否是所有已知节点中性能最好的,不是最好的换一个就是了。在使用的过程中每一个服务器运行时建议模拟出多个可以导致服务失败、数据丢失的场景,然后为每一个服务推荐用作安全的服务器。在这个过程中有一个最大的功臣就是代理(agents),代理实现了和服务器之间的交流。

了解更多:https://www.consul.io/intro/index.html

二、Consul的安装:

1、Consul的下载:

地址: https://www.consul.io/

 

点击DOWNLOAO 进入下载页面如下:

我下载的是win版本并且已解压,大小非常的小

2、安装运行:

安装命令为:Consul.exe agent -dev开发者模式安装Ctrl+ C可以停止运行如下图: 

开发者模式安装只适用于单个服务器的环境,不用于生产,开发者模式不保存任何的状态。

安装成功后,我们可以看到,输出的日志信息中包含了。Client addr: 客户端地址为,127.0.0.1:8500,DNS为8600 我们可以在浏览器中进行访问,

访问结果如下:

在页面中我们可以看到我们的服务、consul 在会默认把自己注册成为一个服务节点,界面中向我们展示了自己的运行状态,IP服务器等信息

我们还可以通过命令来进行查看 服务的信息

命令: consul members 下图是输出:

图中向我们输出了我们自己更加详细的信息,地址、状态、角色、版本信息

在后期我们使用的过程中我们会添加很多的服务,这个时候的输出可能更多,因为服务的信息是通过通讯协议获取以及注册的,为了避免consul视图中的服务状态,和服务器上的状态保持一致,就需要通过HttpApi将服务的状态发送给consul中的管理(agent) 结合上文中consul的特性3KVStore我们可以更好的理解。

官方翻译

中断代理之后,您应该看到它离开集群并关闭。通过优雅地离开,领事通知其他集群成员节点已离开。如果您强制终止代理进程,集群的其他成员将检测到节点失败。当成员离开时,其服务和检查将从目录中删除。当一个成员失败时,它的健康状态被简单地标记为关键,但它不会从目录中删除。领事将自动尝试重新连接到失败的节点,允许它从某些网络条件中恢复,而不再与左侧节点联系。此外,如果代理作为服务器运行,那么优雅的休假对于避免可能导致影响协商一致协议的可用性中断非常重要。

三、Consul的简单使用:

1、新建一个AspNetCoreAPI项目:

如下图:

 

2、在项目中的Startup中Configure方法中实现注册:

 

代码如下: 

public void Configure(IApplicationBuilder app, IHostingEnvironment env)  {   if (env.IsDevelopment())   {    app.UseDeveloperExceptionPage();   }   app.UseMvc();   String ip = Configuration["ip"];//部署到不同服务器的时候不能写成127.0.0.1或者0.0.0.0,因为这是让服务消费者调用的地址   int port = int.Parse(Configuration["port"]);//获取服务端口   var client = new ConsulClient(ConfigurationOverview); //回调获取   var result = client.Agent.ServiceRegister(new AgentServiceRegistration()   {    ID = "ServerNameFirst" + Guid.NewGuid(),//服务编号保证不重复    Name = "ServerFirst",//服务的名称    Address = ip,//服务ip地址    Port = port,//服务端口    Check = new AgentServiceCheck //健康检查    {     DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后反注册     Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔,或者称为心跳间隔(定时检查服务是否健康)     HTTP = $"http://{ip}:{port}/api/Health",//健康检查地址     Timeout = TimeSpan.FromSeconds(5)//服务的注册时间    }   });  }

/// <summary>  /// 获取Consul的实例  /// </summary>  /// <param name="obj"></param>  private static void ConfigurationOverview(ConsulClientConfiguration obj)  {   //consul的地址   obj.Address = new Uri("http://127.0.0.1:8500");   //数据中心命名   obj.Datacenter = "dc1";  }

3、启动:首先确保Consul已启动,我们运行项目注册

步骤如下:

编译Api 成功后我们通过命令行的方式运行:

执行命令:dotnet 项目DLL --ip 设置ip -- port 设置端口(dotnet Framework.WebApi.dll --ip 127.0.0.1 --port 5001) 敲击回车运行项目

同一个项目我们可以运行多个在命令运行时设置不同端口就可以运行了

刷新consul客户端我们可以看到我们的服务注册成功了

结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    .NET Core 迁移躺坑记续集之Win下莫名其妙的超时
    下一条:
    Asp.net core利用IIS在windows上进行托管步骤详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Windows 10的告别:2025年10月14日,一段时代的终结(0个评论)
    • windows 11激活_Win11 KMS激活流程步骤(1个评论)
    • 安装Windows 11系统的注意了,看看你的cpu是否在微软兼容列表排除中(1个评论)
    • 微软将于2022年9月20日推送Windows11 22H2新版本,推测2024发布windows 12(0个评论)
    • windows11系统中可以关闭禁止的服务及介绍(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-01
    • 2018-06
    • 2020-06
    • 2021-06
    • 2021-07
    • 2022-01
    • 2022-04
    • 2022-08
    • 2023-08
    • 2023-10
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客