SpringCloud(14)之SpringCloud Consul

        我们知道 Eureka 2.X 遇到困难停止开发了,所以我们需要寻找其他的替代技术替代Eureka,这一小 节我们就讲解一个新的组件Consul

一、Consul介绍

        Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更一站式,内置了服务注册与发现框 架、分布一致性协议实 现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等)。 使用起来也较 为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linuxwindows和 Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。

        我们来对比下当前服务注册与发现的主流技术:

对比项

euerka

Consul

zookeeper

etcd

服务健康检查

可配支持

服务状态,内

存,硬盘等

()长连接,

keepalive

连接心跳

多数据中心

支持

kv 存储服务

支持

支持

支持

一致性

raft

paxos

raft

cap

ap

cp

cp

cp

使用接口(多语 言能力)

http

支持 http  dns

客户端

http/grpc

watch 支持

支持 long polling/ 大部分增量

全量/支持long

polling

支持

支持 long

polling

自身监控

metrics

metrics

metrics

安全

acl /https

acl

https 支持

(弱)

spring cloud

集成

已支持

已支持

已支持

已支持

1.1 consul特性

  • 服务发现
  • 健康检查
  • key-value存储
  • 多数据中心
  • 社区活跃

1.2consul的优势

  • 使用 Raft算法来保证一致性,比复杂的 Paxos算法更直接.相比较而言,zookeeper采用的是 Paxos, 而 etcd 使用的则是 Raft。

  • 支持多数据中心,内外网的服务采用不同的端口进行监听。多数据中心集群可以避免单数据中心 的单点故障,而其部署则需要考虑网络延迟,分片等情况等。 zookeeper etcd 均不提供多数据中 心功能的支持。

  • 支持健康检查。 etcd 不提供此功能

  • 支持http和 dns协议接口。 zookeeper的集成较为复杂,etcd 只支持 http协议。

  • 官方提供 web 管理界面,etcd 无此功能。

  • 综合比较,Consul作为服务注册和配置管理的新星,比较值得关注和研究。

1.3 consul的角色

  • client 客户端,无状态,将 HTTP和 DNS 接口请求转发给局域网内的服务端集群。
  • server: 服务端,保存配置信息,高可用集群,在局域网内与本地客户端通讯,通过广域网与其它数据中心通讯。每个数据中心的 server量推荐为3个或是5个。

二、Consul工作原理

             

        Consul在项目中发挥服务注册与发现的功能,我们讲解下它的工作原理:

1.当Producer启动的时候,会向Consu1发送一个post请求,并向Consu1传输自己的IP和Port。
2.Consul接收到Producer的注册后,每隔10s(默认)会向Producer发送一个健康检查的请求,检验 Producer是否健康。
3.当Consumer以Http的方式向Producer发起请求,会先从Consu1中拿到一个存储服务IP和Port的临时表,从表中拿到Producer的IP和Port后再发送请求。
4.该临时表每隔10s会更新,只包含有通过了健康检查的Producer。
  1. 2.1 consul的安装

    1.         Consul 不同于Eureka需要单独安装,访问Consul 官网下载 Consul 的最新版本,当前最新版本是 1.9.0,我们使用consu]  1.9.0 windows amd64  版本。
      1.         下载地址:Install | Consul | HashiCorp Developer
        1.         历史下载版本: Consul Versions | HashiCorp Releases

        下载后的文件是consul1_1.9.0_windows_amd64.zip,   我们解压这个文件,里面有个文件 consul.exe,  我们将该文件所在目录添加到环境变量path 中。

        启动consul :dos  命令行执行如下命令:

consul   agent   -dev

        控制台访问 http://localhost:8500/

 

  • Services:    服务信息。
  • Nodes: 节点信息, Consul 支持集群。

  • Key/Value: 存储的动态配置信息。

  • ACL:权限信息。

  • Intentions ; 通过命令的方式对consul进行管理。


三、在项目中使用consul

        项目中要想使用Consul作为服务注册中心,只需要引入如下依赖包,在启动类上添加

@EnableDiscoveryclient 注解,并在application.yml 中添加Consul 服务地址即可:

3.1添加依赖

        在项目中添加依赖包:

<!--consul-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>2.2.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.2.10.RELEASE</version>
</dependency>

        3.2在启动类中添加  @EnableDiscoveryclient    注解

        3.3在applacation.yaml中添加consul的配置信息

       

          配置如下:

spring:
    cloud:
    #Consul配置
        consul:
            host: 127.0.0.1
            port: 8500
            discovery:
            #注册到Consul中的服务名字
            service-name: ${spring.application.name}
            prefer-ip-address: true

        项目启动后,consul服务数据如下:

        

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值