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

一、概念:什么是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客户端我们可以看到我们的服务注册成功了

结果如下:

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

(0)

相关推荐

  • AspNet Core上实现web定时任务实例

    作为一枚后端程序狗,项目实践常遇到定时任务的工作,最容易想到的的思路就是利用Windows计划任务/wndows service程序/Crontab程序等主机方法在主机上部署定时任务程序/脚本. 但是很多时候,若使用的是共享主机或者受控主机,这些主机不允许你私自安装exe程序.Windows服务程序. 码甲会想到在web程序中做定时任务, 目前有两个方向: ①.AspNetCore自带的HostService, 这是一个轻量级的后台服务, 需要搭配timer完成定时任务 ②.老牌Quartz.N

  • 利用docker-compose搭建AspNetCore开发环境

    使用docker-compose搭建AspNetCore开发环境 1 使用docker-compose搭建开发环境 我们的目标很简单:使用docker-compose把若干个docker容器组合起来就成了. 首先使用Nginx代理所有的Web程序,这样只需要在主机上监听一个端口就可以了,不污染主机.再组合各Web程序.Redis/Memcached.SqlServerOnLinux. 新建一个目录sites,所有和集群相关的都放在这里,目录结构如下所示 sites     nginx      

  • 在AspNetCore中使用极验做行为认证的验证流程

    极验验证 极验验证是一种在计算机领域用于区分自然人和机器人的,通过简单集成的方式,为开发者提供安全.便捷的云端验证服务. 与以往传统验证码不同的是,极验通过分析用户完成拼图过程中的行为特征,通过数据分析来判断是人还是机器.用户不必面对眼花缭乱的英文字符或汉字,整个验证过程变的像游戏一样有趣. 先上效果图 极验的流程 极验官方文档地址 https://docs.geetest.com/install/deploy/server/csharp 简单说明一下极验的验证流程 引用官方的图片 •向服务器发

  • 微信小程序与AspNetCore SignalR聊天实例代码

    微信小程序与aspnetcore signalr实例 本文不对小程序与signalr做任何介绍,默认读者已经掌握 aspnetcore Signalr文档 小程序文档 写在之前 SignalR没有提供小程序使用的客户端js,所以本人参考signlar.js写了小程序版signalr-client.js 代码开源,地址 https://github.com/liangshiw/SignalRMiniProgram-Client 先上效果图 开始编码 首先需要创建一个aspnetcore的mvc项目

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

    一.概念:什么是consul: Consul 是有多个组件组成的一个整体,作用和Eureka,Zookeeper相当,都是用来做服务的发现与治理. Consul的特性: 1.服务的发现:consul可以把注册到其中的服务提供给使用者,也可以主动发现服务,在consul的客户端界面中用户可以得到,服务的信息,比如IP端口等信息,在客户端界面中可以很容易的找到注册的服务, 2.健康检查:这里健康检查就是检查服务是否在良好的运行,这里判断服务是否运行良好,可以用Web服务的状态进行判断,也可以用服务器

  • Hadoop-3.1.2完全分布式环境搭建过程图文详解(Windows 10)

    一.前言 Hadoop原理架构本人就不在此赘述了,可以自行百度,本文仅介绍Hadoop-3.1.2完全分布式环境搭建(本人使用三个虚拟机搭建). 首先,步骤: ① 准备安装包和工具: hadoop-3.1.2.tar.gz ◦ jdk-8u221-linux-x64.tar.gz(Linux环境下的JDK) ◦ CertOS-7-x86_64-DVD-1810.iso(CentOS镜像) ◦工具:WinSCP(用于上传文件到虚拟机),SecureCRTP ortable(用于操作虚拟机,可复制粘

  • Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++的教程详解(Windows)【真正的小白版】

    写在前面的前面:这篇文章vscode和cpp插件版本有点老了,仅供大家参考,最新的和最详细的更新见我的另一篇文章: https://www.jb51.net/article/183154.htm 写在前面: 由于这学期(或者说这一年)一直在忙别的,也没什么闲心看博客了,近期发现自己的这篇文章:整理:Visual Studio Code (vscode) 配置C.C++环境/编写运行C.C++(Windows)竟然有了好多访问,也有不少童鞋问各种问题,非常感谢大家的支持,本来是自己整理的没想到有这

  • visual studio code 配置C++开发环境的教程详解 (windows 开发环境)

    0 引言 最近帮GF(不幸变成ex了)配置C++开发环境,一开始想给她装个visual studio13完事,但是一想到自己安装以及使用时的诸多麻烦,就有点退却,觉得没有这个必要.正好了解到vscode大行其道,决定按照官网指示配置一版.由于本人非计算机科班出身,对编译原理了解不多,在配置环境的时候遇到了一些麻烦,参照网上的诸多教程,最后发现还是官网比较靠谱,所以结合自己配置的教训,写个帖子,希望能够帮到大家. 1 下载安装vscode 下载网址链接如下. https://code.visual

  • PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)

    本文内容皆为作者原创,码字不易,如需转载,请注明出处:https://www.cnblogs.com/temari/p/13048977.html 前提:本篇为PyCharm2020.1.2社区版安装,配置及使用教程,建议阅读本篇教程前先安装python,未安装的小伙伴可参看上一篇博客,链接:https://www.cnblogs.com/temari/p/13044416.html 下面开始本次安装教程: PyCharm分为专业版,教育版和社区版,专业版是收费的,教育版和社区版免费.专业版适用

  • 详解SSM框架下结合log4j、slf4j打印日志

    本文主要介绍了详解SSM框架下结合log4j.slf4j打印日志,分享给大家,具体如下: 首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dep

  • 详解Python多线程下的list

    list 是 Python 常用的几个基本数据类型之一.正常情况下我们会对 list 有增删改查的操作,显然易见不会有任何问题.那么如果我们试着在多线程下操作list 会有问题吗? 多线程下的 list 安全 or 不安全? 不安全! 通常我们说的线程安全是指针对某个数据结构的所有操作都是线程安全,在这种定义下,Python 常用的数据结构 list,dict,str 等都是线程不安全的 尽管多线程下的 list 是线程不安全的,但是在 append 的操作下是它又是线程安全的. 如何判断线程安

  • 详解ubuntu20.04下CLion2020.1.3安装配置ROS过程说明

    一 下载安装激活CLion 按照网上给的教程就可以 二 配置ROS 1.配置CLion的启动方式 在主目录打开隐藏文件.bashrc,命令是:sudo gedit ~/.bashrc 将CLion的启动文件clion.sh的路径设置为环境变量 PATH 这样在终端里,无论在哪个工作目录下都可以输入clion.sh即可启动CLion. 设置的代码是: export PATH=/home/zyw/CLionPack/clion-2020.1.3/bin:$PATH 这个路径是安装CLion的路径,不

  • 详解多云架构下的JAVA微服务技术解析

    微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. 目前比较成熟的 JAVA 微服务生态包括 servicecomb(华为), spring-cloud (Pivotal), dubbo(阿里), tsf(腾讯)等.gRPC.Thrift 等也用于内部服务之间的通信,但是微服务基础设施比较欠缺. 核心的微服务基础设施包括:注册中心.配置中心.应用网关.此外,分布式事物管理.计划任务.调用链跟踪系统等也是微服务基础设施的组成部分.完整的微服务基础实施

  • Java Fluent Mybatis 项目工程化与常规操作详解流程篇 下

    目录 前言 查询 查询写法1 查询写法2 代码说明 新问题 删 总结 前言 接着上一篇:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 上 仓库地址:GitHub仓库 查询 定义查询请求体 package com.hy.fmp.dto.req; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; /** @

随机推荐