SpringCloud搭建微服务之Consul服务注册与发现

1. Consul介绍

Consul是由HashiCorp公司使用Go语言开发的一款开源工具,主要用于实现分布式系统的服务发现和服务配置,其内置了服务注册与发现框架、分布式一致性协议实现、健康检查、Key-Value存储、多数据中心方案。Consul具有高可移植性,支持Linux、Windows和Max OS X等多个操作系统,其安装包只是一个可执行文件,方便部署,也可与Docker等轻量级容器无缝配合。Consul使用Raft算法来保证一致性,相比使用Paxos算法更简单。更多详情,可以参阅Consul官网

2. 多种注册中心比较

项目EurekaConsulETCDZookeeperNacos
编写语言JavaGoGoJavaJava
客户端支持HTTPHTTP、DNSHTTP、Etcd3、gRPC跨语言弱,Curator组件HTTP、动态DNS、UDP
服务健康检查需要显示配置健康检查提供详细的服务状态、内存、硬盘检查连接心跳长连接、KeepaliveTCP/HTTP/MySQL
多数据中心通过WAN的Gossip协议支持支持单机模式、多集群模式
Key-Value存储支持支持支持支持
一致性只能保证最终一致性,不能保证强一致性RaftRaftPaxosRaft
CAPAPAPCPCPCP/AP
Watch支持支持支持支持支持支持
自身监控MetricsMetricsMetrics使用第三方组件Metrics
安全ACLACL/HTTPSHTTPSACLACL/HTTPS
Spring Cloud集成支持支持支持支持支持

3. Consul下载与安装

3.1. Consul下载

进入Consul官网,如下图:
Consul官网
点击Download进入下载页面
Consul下载页
选择适合的系统和版本,这里使用Windows系统,386对应的是32位操作系统,AMD64对应的是64位操作系统。

3.2. Consul安装

下载后解压到指定文件夹,可以看到consul.exe的文件,在安装文件路径下使用cmd命令符,使用consul --version查看版本号
查看版本
如果可看到版本号信息,表明下载的Consul安装软件适用于本安装系统,使用consul agent -dev启动Consul
启动Consul
-dev 表示以开发模式运行,-server 表示以服务器模式运行
在浏览器地址栏输入http://localhost:8500/,进入Consul管理页面
Consul管理页面

4. Spring Cloud集成Consul

4.1. 版本说明

本文使用最新的SpringBoot和SpringCloud版本
JDK:17
Maven:3.9.6
SpringBoot:3.2.3
SpringCloud:2023.0.0

4.2. 引入核心依赖

在pom.xml文件中引入consul依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

4.3. 配置consul访问地址

在application.yml文件中配置consul访问地址

spring:cloud:consul:host: localhostport: 8500discovery:prefer-ip-address: trueservice-name: ${spring.application.name}

4.4. 主启动类

在主启动类上添加注解@EnableDiscoveryClient即可

4.5. 验证

启动服务,查看consul控制台页面
consul管理端

5. 问题处理

问题1:控制台启动成功了,Consul管理端依然提示错误
Consul错误
解决:在pom.xml中引入actuator依赖,这是因为consul需要actuator提供服务的健康检查

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

问题2:提示移除commons-logging.jar
commons-logging
解决:在consul依赖中移除这个依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions>
</dependency>

问题3:启动服务后,控制台出现大量WARN警告
WARN警告
解决:这是spring-cloud-commons存在的问题,将spring cloud的组件排除掉,直接引用新的commons依赖,该问题会在spring cloud下个版本中解决,到时就不需要额外引入spring-cloud-commons依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-commons</artifactId><version>4.1.1</version><scope>compile</scope>
</dependency>

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

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

相关文章

Java多线程系列——Executor

目录 Executor框架概览 核心组件 1. 任务&#xff08;Task&#xff09; 2. 线程池&#xff08;ThreadPool&#xff09; 3. 任务调度 4. 任务执行与结果检索 使用案例 实际应用场景 总结 Java的多线程编程是Java语言提供的核心特性之一&#xff0c;允许开发者有效地管理…

【数仓】Hadoop软件安装及使用(集群配置)

一、环境准备 1、准备3台虚拟机 Hadoop131&#xff1a;192.168.56.131Hadoop132&#xff1a;192.168.56.132Hadoop133&#xff1a;192.168.56.133 本例系统版本 CentOS-7.8&#xff0c;已安装jdk1.8 2、hosts配置&#xff0c;关闭防火墙 vi /etc/hosts添加如下内容&#x…

ip获取+归属地实现

1.背景 现在的社交平台一般都需要展示用户的归属地,这个功能有下面二个主要功能点,接下来我们来介绍下具体实现。 IP 获取 IP 转归属地 2.ip获取 2.1 Http请求 对于controller的请求,我们只需要写个拦截器,将用户的ip设置进上下文即可,非常方便。 @Override public bo…

生成式AI设计模式:综合指南

原文地址&#xff1a;Generative AI Design Patterns: A Comprehensive Guide 使用大型语言模型 (LLM) 的参考架构模式和心理模型 2024 年 2 月 14 日 对人工智能模式的需求 我们在构建新事物时&#xff0c;都会依赖一些经过验证的方法、途径和模式。对于软件工程师来说&am…

物联网与智慧城市的融合:构建智能化、便捷化、绿色化的城市未来

一、引言 随着科技的飞速发展和城市化的不断推进&#xff0c;物联网技术正逐步渗透到城市的各个领域&#xff0c;成为推动智慧城市建设的核心力量。物联网与智慧城市的融合&#xff0c;不仅为城市治理提供了高效、智能的解决方案&#xff0c;也为市民的生活带来了前所未有的便…

如何在Node.js中使用定时器

在Node.js中使用定时器是一项常见且重要的任务&#xff0c;特别是在需要执行定时任务或者轮询操作的情况下。Node.js提供了多种方式来实现定时器功能&#xff0c;包括setTimeout、setInterval和setImmediate等方法。本篇博客将介绍如何在Node.js中使用这些定时器&#xff0c;并…

(数据结构)二叉树

8.二叉树 8.1概述 二叉树是一种基本的非线性数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个节点构成的有限集合。在二叉树中&#xff0c;每个节点最多有两个子节点&#xff0c;通常被称作左孩子&#xff08;left child&#xff09;和右孩子&#xff08;right c…

把python完全卸载干净

1.winR&#xff0c;输入control回车&#xff0c;点击程序和功能&#xff0c;在搜索框输入python&#xff0c;右键点击卸载 2、找到Python安装路径&#xff0c;把所有文件全部删除。 安装路径可以打开CMD输入&#xff1a;where python 3、强制删除Python.exe 打开cmd&#xff…

科技企业如何做到FTP数据安全保护

在数字化浪潮的推动下&#xff0c;科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻&#xff0c;它不仅包含了客户信息、市场分析、产品设计等关键信息&#xff0c;更是企业宝贵的资产。然而&#xff0c;随着数据量的激增&#xff0c;数据…

视觉AIGC识别——人脸伪造检测、误差特征 + 不可见水印

视觉AIGC识别——人脸伪造检测、误差特征 不可见水印 前言视觉AIGC识别【误差特征】DIRE for Diffusion-Generated Image Detection方法扩散模型的角色DIRE作为检测指标 实验结果泛化能力和抗扰动 人脸伪造监测&#xff08;Face Forgery Detection&#xff09;人脸伪造图生成 …

LabVIEW最佳传输系统设计

LabVIEW最佳传输系统设计 介绍了基于LabVIEW软件开发的最佳基带传输系统和最佳带通传输系统的设计。通过软件仿真实现了脉冲成形滤波器和匹配滤波器的设计&#xff0c;证明了系统在消除码间干扰和抗噪声方面的优异性能。此设计不仅激发了学生的学习兴趣&#xff0c;还有助于提…

智能家居控制系统(51单片机)

smart_home_control_system 51单片机课设&#xff0c;智能家居控制系统 使用及转载请标明出处&#xff08;最好点个赞及star哈哈&#xff09; Github地址&#xff0c;带有PPT及流程图 Gitee码云地址&#xff0c;带有PPT及流程图 ​ 以STC89C52为主控芯片&#xff0c;以矩阵键…

Java必须掌握的继承的概述

Java的继承是面向对象编程中的一个核心概念&#xff0c;它允许一个类继承另一个类的属性和方法。这不仅有助于代码的重用&#xff0c;还使得代码的管理和维护变得更加容易。在准备大厂面试时&#xff0c;理解继承的各个方面是非常重要的。以下是一些关于Java继承的概述和可能出…

Linux基本指令(上)

在Linux中&#xff0c;将文件夹称为目录&#xff0c;后面的内容都与目录相关。 1. ls指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项 …

MySQL的索引和B+tree结构

目录 0.关于索引的常见面试题 1.什么是索引&#xff1f; 索引的优缺点 2.索引的数据结构&#xff0c;为什么InnoDb引擎使用Btree作为索引的数据结构&#xff1f; 分析怎样的索引才是好的 二插搜索树 红黑树 B-Tree BTree 哈希 为什么 InnoDB 存储引擎选择使用 Btree 索…

iTOP-3588开发板快速测试手册Android12系统功能测试

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

mac 配置faas 全局二进制命令

FaaS&#xff08;即功能即服务-Function as a Services&#xff09;是一种云计算服务&#xff0c;允许客户执行代码来响应事件&#xff0c;而无需管理通常与构建和启动微服务应用程序相关的复杂基础架构 在互联网上托管软件应用程序通常需要配置和管理虚拟服务器或物理服务器&…

洛谷题单_递推与递归

P1255 数楼梯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //不满分做法&#xff1a;没有高精度 #include <bits/stdc.h> using namespace std; const int N5006; int dp[N];//dp[i]表示到第i节楼梯有dp[i]中方案 int main(){int n;cin>>n;dp[1]1;dp[0]1;for(i…

MySQL(基础篇)——多表查询

一.多表关系 一对多(多对一) 多对多一对一 1.一对多(多对一) a.案例&#xff1a;部门与员工的关系 b.关系&#xff1a;一个部门对应多个员工&#xff0c;一个员工对应一个部门 c.实现&#xff1a;在多的一方建立外键&#xff0c;指向一的一方的主键 2.多对多 a.案…

Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client

Elasticsearch入门-环境安装ES和Kibana 安装 ES Windows安装ESHead安装浏览器插件 es-clientKibana 安装 安装es,安装header 安装kibana&#xff0c;安装多种分词器ik… 安装 ES Windows安装 ① 下载压缩包并解压官网链接&#xff1a;https://www.elastic.co/cn/downloads/ela…