Spring Cloud 之 Consul 服务注册中心

   Netflix Eureka 2.X http://github.com/Netflix/eureka/wiki 官方宣告停止开发, 但其实对国内的用户影响甚小,一方面国内大多使用的是Eureka 1.X系列,并且官方也在积极的维护 1.X;

各大主流注册中心的对比:

 

一、Consul介绍:

 consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置, 与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不在需要依赖其他工具(比如Zookeeper等), 使用起来也比较简单。

  Consul使用Go语言编写,因此具有天然可移植性(支持Linux、Window和Mac OS);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝连接;

二、Consul的特性

  。Raft算法

  。服务发现

  。健康检查

  。Key/Value存储

  。多数据中心

  。支持http 和 dns 协议接口

  。官方提供web管理界面

三、Consul 的角色

  。client : 客户端, 无状态,将HTTP 和 DNS 接口请求转发给局域网内的服务端集群;

  。server : 服务端, 保存配置信息, 高可用集群, 每个数据中心的server 数量推荐为3个 或者 5个;

  

 

 

 

四、Consul的工作原理

  

 

 

 4.1 服务的发现与注册

  当服务Producer启动时, 会将自己的IP/Host 等信息通过发送请求告知Consul, Consul 接收到Producer的注册信息后,每隔10s(默认) 会向Producer发送一个健康检查的请求,检验Producer是否健康。

4.2 服务调用

  当Consumer请求Producer时, 会先从Consul中拿到存储Producer服务的IP 和 Port 的临时表(temp table),从temp table 表中任选一个Producer 的 IP 和 port , 然后根据这个IP 和 Port ,发送访问请求; temp table 表只包含通过了健康检查的Producer 信息, 并且每隔10s(默认)更新;

  

五、Consul 简单入门

单节点可以在windows安装, 集群环境可以在Linux安装

5.1 单节点 

  压缩包中只有一个 consul.exe 的执行文件。

  

   cd 到对应的目录下,使用cmd 启动 Consul

    # -dev 表示开发模式运行,另外还有 -server 表示服务模式运行

    consul agent -dev -client=0.0.0.0  //生产上正常支持的IP

  为了方便启动,也可以在consul.exe 同级目录下创建一个脚本来启动,脚本内容如下:

    consul agent -dev -client=0.0.0.0  //生产上正常支持的IP

    pause

  访问管理后台:http://localhost: 8500/ 看到下图意味着我们的Consul 服务启动成功了。

  

  

5.2新建一个maven 项目, 创建一个父项目: Consul-demo

  

  新建服务端子项目: service-provider

  pom.xml 

    

 

 

   在该子项目中,新建配置文件:application.yml

  

 

 

   子项目的实现类,此处不做编写。。。。

 创建消费者子项目: service-consumer

  创建pom文件:pom.xml

  

 

 

   创建配置文件:application.yml

  

 

 

 5.3 Consul 集群搭建

  

  上图是一个简单的Consul Cluster架构,Consul Cluster有Server 和 Client 两种角色,不管是Server 还是 Client, 统称为Agent, Consul Client 是相对无状态的, 只负责转发RPC 到 Server, 资源开销少。Server 是一个有一组扩展功能的代理,这些功能包括参与Raft选举,维护集群状态,响应RPC查询,与其他数据中心交互和转发查询给leader或者远程数据中心;

  每个数据中心,client 和 server是混合的,一般建议有3·-5台server。这是基于故障情况下的可用性和性能之间的权衡结果,因为越多的机器加入达成共识越慢,server之间会选举出一个leader,然而并不限制Client的数量,一般建议一个服务对应一个Client,它们可以很容易的扩展到数千或者数万台。在开发时我们绑定一组服务注册中心中的客户即可;

 

5.3.1环境准备

  

 

 安装:

  将安装包上传至服务器

  安装unzip命令,创建consul目录,将consul解压至指定目录;

#安装unzip
yum -y install unzip
#创建consul目录
mkdir -p /usr/local/consul
#解压至consul目录
unzip consul_1.7.0_linux_amd64.zip -d /usr/local/sonsul
#创建consul数据目录
mkdir -p /usr/local/consul/data

  

 

 

 

 

  

 

posted @ 2021-12-30 15:55  IT6889  阅读(388)  评论(0编辑  收藏  举报