一、Consul概述

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

二、Consul功能

三、Consul角色

   Service:

服务端,保存配置信息,高可用集群,在局域网与本地客户端通讯,通过广域网与其他数据中心通讯,每个数据中心的Server数量推荐3个或者5个。

   Client:

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

四、使用Consul的优势

  • 使用 Raft 算法来保证一致性, Consul 保持了 CAP 中的 CP,保持了强一致性和分区容错性。
  • 支持多数据中心。
  • 支持健康检查。
  • 使用go语言开发,启动速度和运行速度快。

五、Consul的安装和使用

打开Consul官网 https://www.consul.io/ 根据不同的操作系统选择最新的 Consul 版本,我们这里以 Windows 64 操作系统为例,可以看出 Consul 目前的最新版本为  1.13.1

下载下来是一个压缩包,解压之后是一个consul.exe文件

然后在exe文件所在的目录cmd进入命令行,输入如下执行启动consul

 consul agent -dev 

成功之后如图

启动成功之后访问:localhost:8500,就可以看到Consul的管理界面

Consul 的 Web 管理界面有一些菜单,我们这里做一下简单的介绍:

        Services,管理界面的默认页面,用来展示注册到 Consul 的服务,启动后默认会有一个 consul 服务,也就是它本身。

        Nodes,在 Services 界面双击服务名就会来到 Services 对于的 Nodes 界面,Services 是按照服务的抽象来展示的,Nodes 展示的是此服务的具体节点信息。比如启动了两个订单服务实例,Services 界面会出现一个订单服务,Nodes 界面会展示两个订单服务的节点。

        Key/Value ,如果有用到 Key/Value 存储,可以在界面进行配置、查询。

        ACL,全称 Access Control List,为访问控制列表的展示信息。

        Intentions,可以在页面配置请求权限。

        此时,我们的consul就安装成功了

六、Consul的调用流程

  1、当 Producer 启动的时候,会向 Consul 发送一个 post 请求,告诉 Consul 自己的 IP 和 Port;

  2、Consul 接收到 Producer 的注册后,每隔 10s(默认)会向 Producer 发送一个健康检查的请求,检验 Producer 是否健康;

  3、当 Consumer 发送 GET 方式请求 /api/address 到 Producer 时,会先从 Consul 中拿到一个存储服务 IP 和 Port 的临时表,从表中拿到 Producer 的 IP 和 Port 后再发送 GET 方式请求 /api/address;

  4、该临时表每隔 10s 会更新,只包含有通过了健康检查的 Producer。


Spring Cloud Consul 项目是针对 Consul 的服务治理实现。Consul 是一个分布式高可用的系统,它包含多个组件,但是作为一个整体,在微服务架构中,为我们的基础设施提供服务发现和服务配置的工具。

补充:Consul多环境配置

Consul服务端

1.在consul主页面进行添加对应的多环境配置Key/Value,对于不同的环境在后面用","分隔拼接

配置对应的信息,如下图

开发环境dev

生产环境prod

测试环境test

Java实现代码

启动类

@EnableDiscoveryClient
@SpringBootApplication
public class ConsulApplication {public static void main(String[] args) {SpringApplication.run( ConsulApplication.class,args );}}

配置类

@Data
@Configuration
@ConfigurationProperties(prefix = "student")
public class ConsulConfig {private String name;private int age;}

测试控制器

@RestController
public class TestController {@Autowiredprivate ConsulConfig consulConfig;@GetMapping("/test")public void test(){System.out.println( consulConfig.getName()+"  "+consulConfig.getAge() );}}

bootstrap.yml配置文件

spring:application:name: consulDemocloud:consul:host: 127.0.0.1port: 8500discovery:service-name: ${spring.application.name}heartbeat:enabled: trueconfig:format: yamlprefix: config  #默认读取configdata-key: dataenabled: true# profile-separator: - # 环境的分隔符,默认是逗号,若设置为'-'则改为 mailer-dev,mailer-prodprofiles:active: dev

其中的spring.profiles.active后的dev可以改成 test 和 prod ,对应不同的环境,从而实现多环境配置。

测试结果:

1.dev环境

2.prod环境

3.test环境

【超详细】Consul的安装的使用附多环境配置(傻瓜式教程)相关推荐

  1. 【NLP傻瓜式教程】手把手带你fastText文本分类(附代码)

    写在前面 已经发布: [NLP傻瓜式教程]手把手带你CNN文本分类(附代码) [NLP傻瓜式教程]手把手带你RNN文本分类(附代码) 继续NLP傻瓜式教程系列,今天的教程是基于FAIR的Bag of ...

  2. 【NLP傻瓜式教程】手把手带你RCNN文本分类(附代码)

    继续之前的文本分类系列 [NLP傻瓜式教程]手把手带你CNN文本分类(附代码) [NLP傻瓜式教程]手把手带你RNN文本分类(附代码) [NLP傻瓜式教程]手把手带你fastText文本分类(附代码) ...

  3. 【NLP傻瓜式教程】手把手带你HAN文本分类(附代码)

    继续之前的文本分类系列 [NLP傻瓜式教程]手把手带你CNN文本分类(附代码) [NLP傻瓜式教程]手把手带你RNN文本分类(附代码) [NLP傻瓜式教程]手把手带你fastText文本分类(附代码) ...

  4. 【多图超详细】从零开始安装配置Cuckoo sandbox并提交样本进行分析

    [多图超详细]从零开始安装配置Cuckoo sandbox并提交样本进行分析 文章目录 [多图超详细]从零开始安装配置Cuckoo sandbox并提交样本进行分析 1. 功能介绍 1.1主要功能 1 ...

  5. ubuntu18.04 安装qt5.12.8及环境配置的详细教程

    这篇文章主要介绍了ubuntu18.04 安装qt5.12.8及环境配置的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 环境 系统: ...

  6. 深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) By 李泽南2017年6月26日 15:57 本周一(6 月 19 日)机器之心发表文章《我的深度学习开发环境详解:Te

    深度学习开发环境调查结果公布,你的配置是这样吗?(附新环境配置) 机器之心 2017-06-25 12:27 阅读:108 摘要:参与:李泽南.李亚洲本周一(6月19日)机器之心发表文章<我的深 ...

  7. Ubuntu18.04安装OpenCV4.3.0和环境配置(支持编译CUDA并安装配置python-opencv)

    Ubuntu18.04安装OpenCV4.3.0和环境配置 下载源文件 安装依赖 编译安装 环境配置 动态库配置 配置OpenCV的`PKG-CONFIG`环境 Python-OpenCV环境[如果安 ...

  8. openstack官方安装文档的解析--环境配置篇(1)

                      openstack官方安装文档的解析--环境配置篇(1) 1. - # openstack的环境搭建安装版本的一些信息---安装的版本为queens版本,选择该版本 ...

  9. Mac安装eDEX-UI以及后续Python环境配置

    Mac安装eDEX-UI以及后续Python环境配置 效果 配置 不想看我瞎扯可以直接跳到这 环境配置思路同样适用于Linux发行版. 效果 虽说macOS的界面已经十分美观了,但是对于习惯用TUI跑 ...

最新文章

  1. 9.LeetCode第350题---两个数组的交集2
  2. from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver,
  3. 【放置奇兵】新版公会战问题
  4. 计算机应用基础 专2018秋,广东开放大学远程教育专科2018年秋计算机应用基础Word模块测试.pdf...
  5. Java性能压测-性能监控-jvisualvm使用
  6. Android Studio 导入 AOSP 源码
  7. 多媒体计算机的信息类型,多媒体信息主要有几种类型
  8. linux思考与实验答案,linux课后习题答案教材课后习题参考答案
  9. golang中的切片及内存拷贝
  10. 我们眼中的资管管理行业三要素
  11. 虚幻引擎5安装踩坑记录
  12. 怎么用电脑把优酷的kux格式转换成mp4格式
  13. 自然科学期刊能发表计算机论文吗,福建交通科技杂志发表论文能评职称吗
  14. Davinci BI报表工具~
  15. python清屏幕_如何在python中清除屏幕?
  16. ubuntu下deactivate matlab的操作
  17. 化妆品行业如何开启新零售模式?你懂了吗
  18. useCallback 的问题和隐患的解决方案 - 胡耀(字节跳动)
  19. window下使用nexus搭建maven私服,更新maven索引
  20. USACO-Runaround Numbers

热门文章

  1. 小程序密钥登陆服务器,小程序登录及AppSecret(小程序密钥)
  2. 华为设备各版本的初始密码汇总及重置
  3. 23种设计模式(通俗易懂,白话翻译)
  4. linux 临时文件类型,Linux命令:文件管理--tmpwatch--删除临时文件
  5. P2P中DHT网络爬虫
  6. APIO2020 蒟蒻游记
  7. php计算当前时间到下个月的剩余天数
  8. 客户体验的重要性和企业发展的紧密联系
  9. 附近的人mysql实现_附近的人功能实现及原理
  10. 常用接口介绍06——视频篇03——S端子