一、概念:什么是consul:
Consul是由几个组件组成的整体,其功能与Eureka、Zookeeper相同,用于服务发现和治理。
领事的特点:
1.服务发现:consul可以为用户提供注册服务,或者主动发现服务。用户可以获得服务信息,如IP端口,并可以在客户端界面轻松找到注册的服务。
2.健康检查:在这里,健康检查是检查服务是否运行良好。要判断服务是否运行良好,可以使用Web服务的状态或者服务器的使用状态。你可以根据这些状态来判断哪些服务运行良好,哪些服务不健康()这里的不健康可以是服务器的利用率),然后根据这些判断来路由远离不健康的服务。
3.KVStore:是键/值的存储。在使用中,可以根据KV的存储功能做很多事情,比如动态配置、一些特性的标注、协调、管理选举等。KV存储的API是基于HTTP的。
4.多数据中心:consult支持多个数据中心,也就是说我们在consult的过程中不用担心做更多的工作来进行扩展。
Consul是一个分布式的高可用性系统。向consul注册的每个服务都将在服务本身中运行一个(代理)代理。运行代理的最终目的是检查当前服务的健康状况,从而通知Consul系统当前节点是否健康。我们已经举了一个领事特征的例子(健康检查)。
每个数据中心运行一个领事服务器集群。当提出跨数据中心服务发现或配置请求时,本地(代理)服务器将请求转发到远程数据中心并返回结果。
(俗语)健康检查是决定这个节点是否可以用于服务,这个节点的服务是否是所有已知节点中最好的,或者不是,只要换成另一个就可以了。在使用过程中,建议每台服务器模拟多个可能导致服务失败和数据丢失的场景,然后推荐一台服务器作为每项服务的安全服务器。在这个过程中,最大的贡献者之一是代理,它实现了与服务器的通信。
了解更多:https://www.consul.io/intro/index.html
二、领事的设置:
1.领事下载:
地址:https://www.consul.io/
点击下载进入下载页面,如下所示:
我下载了win版本并解压缩。尺寸很小
2.安装和操作:
安装命令是:Consul.exe代理-开发人员模式。安装Ctrl C停止运行,如下图所示:
开发人员模式安装仅适用于单个服务器环境,不适用于生产,并且开发人员模式不保存任何状态。
安装成功后,我们可以看到输出日志信息包含。客户端地址:客户端地址为127.0.0.1:8500,DNS为8600,我们可以在浏览器中访问。
面试结果如下:
在页面上,我们可以看到我们的服务和顾问会默认将自己注册为服务节点,界面会向我们显示他们的运行状态、IP服务器等信息
我们还可以通过命令查看服务的信息
命令:执政官成员下图是输出:
该图显示了我们自己更详细的信息,例如地址、状态、角色和版本信息
后期我们会增加很多服务。此时,输出可能更多,因为服务信息是通过通信协议获得和注册的。为了避免consult视图中的服务状态与服务器上的状态一致,需要通过HttpApi将服务状态发送给consult中的代理,结合上面consult的3KVStore特性可以更好的理解。
官方翻译
中断代理后,您应该会看到它离开集群并关闭。通过优雅地离开,领事通知其他集群成员该节点已经离开。如果强制终止代理进程,集群的其他成员将检测到节点故障。当成员离开时,其服务和检查将从目录中删除。当一个成员失败时,它的健康状态被简单地标记为严重,但是它不会从目录中删除。咨询将自动尝试重新连接到故障节点,允许它从某些网络状况中恢复,而无需联系左侧节点。此外,如果代理作为服务器运行,优雅的休假对于避免可能影响共识协议的可用性中断非常重要。
Iii .领事的简单使用:
1.创建新的AspNetCoreAPI项目:
下图:
2.在项目启动中的配置方法中注册:
代码如下:
public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env) { if (env。IsDevelopment()) { app。usedeveloper exception page();} app。UseMvc();字符串ip=配置[' IP '];//部署到不同服务器时,不能写成127.0.0.1或0.0.0.0,因为这是服务消费者调用的地址:int port=int . parse(configuration[' port ']);//获取服务端口varclient=new consulclient(配置概述);//回调获取var结果=client . agent . service register(new agentserviceregistration(){ id=' servername first ' guid . new guid(),//服务号不能重复。Name='ServerFirst ',//服务名称Address=ip,//服务ip地址Port=port,//服务端口Check=new AgentServiceCheck //运行状况检查{ unregisterecriticalserviceafter=time span。从秒(5),//服务开始注销后多长时间间隔=时间跨度。从秒(10)、//运行状况检查间隔,或心跳间隔(定期检查服务是否正常)http=$ ' http://{ IP } : { port }/API/health ',//运行状况检查地址超时=timespan。从秒(。}///summary////获取consult///summary///param name=' obj '/param private static void配置概述(consument configuration obj){//consult obj的地址。address=new uri(' http://127 . 0 . 0 . 1:8500 ');//名为obj的数据中心。Datacenter=' dc1}3.启动:首先,确保Consul启动,我们运行项目注册
步骤如下:
成功编译Api后,我们通过命令行运行它:
执行命令:dotnet项目DLL - ip设置ip -端口设置端口(dotnet Framework。webapi . dll-IP 127 . 0 . 0 . 1-端口5001),点击回车运行项目
当命令运行时,我们可以通过设置不同的端口来运行多个相同的项目。
刷新咨询客户端,我们可以看到我们的服务注册是成功的
结果如下:
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。