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.1port: 8500discovery:#注册到Consul中的服务名字service-name: ${spring.application.name}prefer-ip-address: true

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

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kali xrdp

Kali Linux 使用远程桌面连接——xrdp&xfce_kali xfce桌面-CSDN博客 Ubuntu/Debian/Kali xrdp远程桌面黑屏/空屏/无画面解决办法 - 知乎 (zhihu.com) sudo apt-get install xrdp -y sudo apt-get install xfce4 -ysudo systemctl enable xrdp --now systemctl status xrd…

中级.NET开发工程师面试经历

文章目录 前言面试题目&#xff08;只记录了还记得的部分&#xff09;一.简单说下.NETCORE的生命周期&#xff1f;二.C#如何保证在并发情况下接口不会被重复触发&#xff1f;三.引用类型和值类型有什么区别&#xff1f;四.那怎样能让引用类型和值类型一样&#xff0c;在赋值的时…

【Latex】TeXstudio编译器选项修改

1、动机 编译国科大博士毕业答辩论文latex时报错 Package ctable Error: You must load ctable after tikz. 2、方法 经过搜索发现是因为这是中文模板&#xff0c;编译的选项不对&#xff0c;需要从 PDFLaTeX 调整到 XeLaTeX。于是操作如下 1&#xff09;点击选项 2&#xf…

linux 文件目录操作命令【重点】

目录 ls cd cat more tail【工作中使用多】 mkdir rmdir rm ls 作用: 显示指定目录下的内容 语法: ls [-al] [dir] 说明: -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) -l 除文件名称外&#xff0c;同时将文件型态(d表示目录&#xff0c;-表示文件)、权限…

SpringMVC POST请求传参 属性名字母大写注入失败解决方案

问题描述&#xff1a; 我现在有一个接口通过一个实体(RequestBody)去接收一系列的参数&#xff0c;前端传参为一个JSON字符串&#xff0c;但是当我的属性名以大写字母开头(有的中间还有下划线)&#xff0c;或者第二个字母是大写字母的时候&#xff0c;我发现后端接收不到参数值…

Flask——基于python完整实现客户端和服务器后端流式请求及响应

文章目录 本地客户端Flask服务器后端客户端/服务器端流式接收[打字机]效果 看了很多相关博客&#xff0c;但是都没有本地客户端和服务器后端的完整代码示例&#xff0c;有的也只说了如何流式获取后端结果&#xff0c;基本没有讲两端如何同时实现流式输入输出&#xff0c;特此整…

C++字符串类

C中有两种主要的字符串类&#xff1a;std::string 和 std::wstring。 std::string std::string 是 C 标准库中用于处理 ASCII 字符串的类。它提供了丰富的方法来操作字符串&#xff0c;包括插入、删除、查找子串、比较等功能。使用 std::string 需要包含头文件 <string>…

8.CSS层叠继承规则总结

CSS 层叠继承规则总结 经典真题 请简述一下 CSS 中的层叠规则 CSS 中的层叠继承规则 在前面《CSS属性的计算过程》中&#xff0c;我们介绍了每一个元素都有都有所有的属性&#xff0c;每一个属性都会通过一系列的计算过程得到最终的值。 这里来回顾一下计算过程&#xff0…

Node.js中如何处理异步编程

在Node.js中&#xff0c;处理异步编程是至关重要的技能。由于Node.js的单线程执行模型&#xff0c;异步编程可以极大地提高程序的性能和响应速度。本文将介绍几种常见的异步编程处理方式&#xff0c;并附上示例代码&#xff0c;帮助您更好地理解和应用异步编程技术。 回调函数…

家政小程序开发,引领家庭服务新时代的科技革命

随着科技的飞速发展&#xff0c;人们的生活方式正在发生深刻的变化。其中&#xff0c;家政服务作为日常生活的重要组成部分&#xff0c;也在经历着一场由小程序技术引领的科技革命。本文将探讨家政小程序的发展趋势、功能特点以及对家庭服务的深远影响。 一、家政小程序的发展…

Linux命令-chattr命令(用来改变文件属性)

说明 chattr命令 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性&#xff0c;这些属 性共有以下8种模式。 语法 chattr(选项)选项 a&#xff1a;让文件或目录仅供附加用途&#xff1b; b&#xff1a;不更新文件或目录的最后存取时间&#xff1b; c…

NFTScan Labs,一个聚焦在 NFT 领域的开发者组织

NFTScan Labs 是一个聚焦在 NFT 领域的开发者组织&#xff0c;成立于 2021 年 3 月份。NFTScan Labs 核心成员从 2016 年开始涉足区块链领域&#xff0c;有多年开发经验和前沿行业认知&#xff0c;对加密钱包、区块链安全、链上数据追踪、DeFi、预言机、NFT 等领域有深入的研究…

2/22作业

1.按位置插入 void insert_pos(seq_p L,datetype value,int pos) { if(LNULL) { printf("入参为空\n"); return; } if(seq_full(L)) { printf("表已满\n"); return; } if(pos>L->len|…

Jenkins的使用GIT(4)

Jenkins的使用GIT 20211002 我们使用 Jenkins 集成外部 Git 仓库&#xff0c;实现对真实代码的拉取和构建。在这里&#xff0c;我们选用 Coding/Github/Gitee 等都可以作为我们的代码源 1 生成公钥私钥 首先&#xff0c;我们先来配置公钥和私钥。这是 Jenkins 访问 Git 私有库…

【nvm】下载安装及使用(包含windows和Linux)

目录 1、Windows版本下载及安装 2、Linux下载及安装 下载 安装 3、使用 在不借助第三方工具的情况下切换node版本&#xff0c;只能卸载现有版本&#xff0c;安装需要的版本&#xff0c;这样显然很麻烦。而nvm就很好的帮我们解决了这个问题。 nvm&#xff08;node.js vers…

QT中调用python

一.概述 1.Python功能强大&#xff0c;很多Qt或者c/c开发不方便的功能可以由Python编码开发&#xff0c;尤其是一些算法库的应用上&#xff0c;然后Qt调用Python。 2.在Qt调用Python的过程中&#xff0c;必须要安装python环境&#xff0c;并且Qt Creator中编译器与Python的版…

OpenCV:计算机视觉领域的瑞士军刀

摘要 本文将深入探索OpenCV&#xff08;开源计算机视觉库&#xff09;的基本概念、应用领域、主要功能和未来发展。通过本文&#xff0c;读者将能够理解OpenCV在计算机视觉中的重要性&#xff0c;并掌握其基本使用方法。 一、引言 随着人工智能和机器学习技术的飞速发展&…

IDEA启动Springboot报错:无效的目标发行版:17 的解决办法

无效的目标发行版&#xff1a;17 的解决办法 一般有两个原因&#xff0c;一可能是本地没有安装JDK17&#xff0c;需要安装后然后在IDEA中选择对应版本&#xff1b;二可能是因为IDEA版本太低&#xff0c;不支持17&#xff0c;需要升级IDEA版本。然后在File->Project Struct…

未雨绸缪,才是真正的高手

由于电脑用了五年半&#xff0c;刚换了新型电脑主机&#xff0c;人老了摸索掌握新操作方法较困难&#xff0c;所以今天的网文作业只好从简&#xff0c;即本“人民体验官”推广人民日报官方微博文化产品《夜读&#xff1a;真正的高手&#xff0c;都懂得凡事提前一步》。 图&…

Flutter常用命令,持续更新

目录 前言 Flutter 常用命令 Dart 常用命令 adb 常用命令&#xff08;用于 Android 开发&#xff09; 前言 当在开发Flutter项目时&#xff0c;熟悉一些常用的命令是非常重要的。这些命令可以帮助你执行各种任务&#xff0c;从构建应用程序到调试和测试。以下是一些Flutte…