当前位置: 首页 > news >正文

Springboot 集成 Consul 实现服务注册中心-05

因为后续很多模块都要用到注册中心,所以此处先实现此模块。

Consul简介

Consul是一个开源的服务发现和配置管理工具,具有跨平台、运行高效等特点。它由HashiCorp公司开发,并使用Go语言编写。Consul主要用于实现分布式系统中的服务发现、健康检查、键值存储等功能。

Consul的核心功能

  1. 服务发现:Consul通过DNS或HTTP接口实现服务发现,允许开发人员轻松地注册、发现和注销服务,从而实现高可用和负载均衡。
  2. 健康检查:Consul具备强大的健康检查功能,可以监控服务的状态并根据设定的规则自动剔除故障节点。它支持多种健康检查方式,如TCP、HTTP、Docker容器等,确保服务的稳定性和可用性。
  3. 分布式一致性:Consul使用Raft算法作为其分布式一致性协议,确保在分布式环境下数据的一致性和可靠性。它实现了强一致性模型,能够处理网络分区、故障恢复等场景,保证系统的可靠性。
  4. 键值存储:Consul提供了一个简单但功能强大的键值存储接口,开发人员可以使用这个接口来存储和检索配置数据、共享状态信息等。它支持事务操作和ACL权限控制,为分布式系统的配置管理提供了便利。

Consul的主要应用场景

  • 服务发现:作为注册中心,服务地址被注册到Consul中以后,可以使用Consul提供的DNS、HTTP接口查询。
  • 服务隔离:Consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持TLS证书分发,service-to-service加密。
  • 服务配置:Consul提供key-value数据存储功能,并且能将变动迅速地通知出去,通过工具consul-template可以更方便地实时渲染配置文件。

Consul还提供了丰富的配置选项和API接口,以满足不同的使用需求。它易于安装和部署,并且支持多种操作系统和平台。由于其强大的功能和灵活的配置选项,Consul已经成为许多分布式系统中不可或缺的一部分。

使用HomeBrew安装Consl

根据系统不同会有不同的安装方法,笔者是在macos下进行的的安装,所以安装方法如下,Consl软件可从地址: Consl软件包下载 下载。

安装

brew tap hashicorp/tap
brew install hashicorp/tap/consul

运行

consul --version
consul agent -dev

访问

打开网址 : http://localhost:8500
在这里插入图片描述

springcloud-consul-server模块

此模块实现向服务中心注册。
在这里插入图片描述

pom.xml

依赖版本可参考 springbootSeries 模块中pom.xml文件中的版本定义

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

application.properties配置

spring.profiles.active = dev
spring.application.name=springbootConsulServer
server.port=18093spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.service-name=${spring.application.name}
  • spring.cloud.consul.discovery.service-name:表示在Consl中显示的服务标识名称,全局唯一。

SpringbootApplication启动类

添加 @EnableDiscoveryClient 服务发现注解

@Slf4j
@SpringBootApplication(scanBasePackages = {"com.korgs",  "cn.hutool.extra.spring"})
@Configuration
@EnableConfigurationProperties
@ServletComponentScan
@RestController
@EnableDiscoveryClient
public class SpringbootConsulServerApplication {@Value("${server.port}")private String serverPort;public static void main(String[] args) {SpringApplication.run(SpringbootConsulServerApplication.class, args);}@GetMapping("/helloworld")public BaseResponse helloWorld(){log.info(LogGenerator.trackLog()+ "msg="+ "I am busy to handle this request.");return BaseResponse.success("hello world");}
}

Consul测试

启动Springboot服务,会在 http://localhost:8500中看到如下界面:
在这里插入图片描述

源码下载

涉及模块:

  • springcloud-consul-server:18093, 待注册的服务模块

源码下载:

  • 基础框架源码下载
  • Springboot 集成 Consul 实现服务注册中心

源码运行方法:

  • 模块详细功能说明和运行测试方法

相关文章:

Springboot 集成 Consul 实现服务注册中心-05

因为后续很多模块都要用到注册中心&#xff0c;所以此处先实现此模块。 Consul简介 Consul是一个开源的服务发现和配置管理工具&#xff0c;具有跨平台、运行高效等特点。它由HashiCorp公司开发&#xff0c;并使用Go语言编写。Consul主要用于实现分布式系统中的服务发现、健康…...

【软考高项】四十六、项目管理科学计算之运筹学

1、线性规划问题 解题思路&#xff1a; 先把文字转化成图表 最快方式应该是把第一题的4个答案直接代入计算&#xff0c;很快得知X2时利润最大。 A0时&#xff0c;利润5*630 A2时&#xff0c;利润2*25*634 A4时&#xff0c;利润4*23*523 A6时&#xff0c;利润4*2(因为甲的…...

使用 Python 和 OpenCV 进行实时目标检测的详解

使用到的模型文件我已经上传了&#xff0c;但是不知道能否通过审核&#xff0c;无法通过审核的话&#xff0c;就只能 靠大家自己发挥实力了&#xff0c;^_^ 目录 简介 代码介绍 代码拆解讲解 1.首先&#xff0c;让我们导入需要用到的库&#xff1a; 2.然后&#xff0c;设…...

Android build.prop生成过程源码分析

Android的build.prop文件是在Android编译时刻收集的各种property【LCD density/语言/编译时间, etc.】&#xff1b;编译完成之后&#xff0c;文件生成在out/target/product/<board【OK1000】>/system/目录下&#xff1b;在Android运行时刻可以通过property_get()[c/c域] …...

计算机网络教材——谢希仁教材与配套PPT课件和《计算机网络——自顶向下方法》

教材链接: https://pan.baidu.com/s/1MUkgTVNMvhFdkGxAd0U7Ew?pwdn3g4 提取码: n3g4 ppt资源&#xff1a;课程包列表 (51zhy.cn) 计算机网络——自顶向下方法&#xff08;资源在下面的评论区里&#xff09;&#xff1a;计算机网络自顶向下方法第7版中文PDF习题参考 - 哔哩哔…...

mysql 离线安装

package download mysql https://dev.mysql.com/downloads/mysql/ libaio http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm 根据自己服务器选择下载对应的安装包及依赖 删除本机自带mysql相关 # 首先排查服务器自身是否有安装对应m…...

【C++】 string类:应用与实践

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…...

巩固学习7

正则表达式 就是用来找到符合模式的字符串&#xff0c;这些模式包括&#xff1a;是什么字符&#xff0c;重复多少次&#xff0c;在什么位置&#xff0c;有哪些额外的约束 找某个字符串 import re text身高:178 体重:168 学号:123456 密码:9527 #在Python中&#xff0c;r前缀用…...

Android 右键 new AIDL 无法选择

提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file&#xff09; 解决方式&#xff1a; 在app的build.gradl中 adnroid{} 添加&#xff1a; buildFeatures{aidl true}...

使用Springboot整合Elasticsearch

全文搜索引擎 全文搜索引擎是目前广泛应用的主流搜索引擎&#xff0c;也称为全文检索。它的工作原理是计算机索引程序通过扫描文章中的每一个词&#xff0c;对每一个词建立一个索引&#xff0c;指明该词在文章中出现的次数和位置&#xff0c;当用户查询时&#xff0c;检索程序…...

Vue3+Element+TS动态菜单+按钮权限控制实现探索

1.动态获取权限并根据获取权限转换成相对应的router 根据请求获取菜单数据&#xff0c;对菜单数据进行转换&#xff0c;分别进行下面几步&#xff1a; /*** 组件地址前加斜杠处理*/ export function addSlashToRouteComponent(routeList: AppRouteRecordRaw[]) {routeList.fo…...

五款公司源代码加密软件推荐|代码防泄密解决方案

在当今数字化的世界中&#xff0c;源代码的泄露无疑是一场灾难。对于依赖加密软件保护关键信息的企业和个人来说&#xff0c;这种泄露不仅可能导致数据失窃&#xff0c;还可能损害企业的声誉和客户的信任。面对这种严峻的形势&#xff0c;我们迫切需要一种全面而有效的加密软件…...

【spring】Security 密码加密算法

Spring Security 提供了多种密码加密算法&#xff0c;用于在存储用户密码时进行加密&#xff0c;以增强安全性。 查看org.springframework.security.crypto.factory.PasswordEncoderFactories 以下是一些常用的密码加密算法&#xff1a; BCryptPasswordEncoder&#xff1a; 这…...

IO系列(一) -一文带你读懂 java 中的IO流!

一、摘要 说到 IO&#xff0c;相信大家都不陌生&#xff0c;英文全称&#xff1a;Input/Output&#xff0c;即输入/输出&#xff0c;通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。 比如我们常用的SD卡、U盘、移动硬盘等等存储文件的硬件设备&#xff…...

代码随想录算法训练营第六天| 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

哈希表理论基础 [LeetCode] 242. 有效的字母异位词 [LeetCode] 242. 有效的字母异位词 文章解释 [LeetCode] 242. 有效的字母异位词 视频解释 题目: 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出…...

【python】中的可迭代对象、迭代器、生成器

结论 凡是实现了__iter__() 方法的类都称之为可迭代对象&#xff0c;但 __iter__() 方法的返回值只能是迭代器和生成器for 循环的本质是先调用 __iter__() 方法&#xff0c;然后不断调用返回值的 __next__() 方法&#xff0c;直至报出异常 StopIteration&#xff0c;可迭代对象…...

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发

短视频矩阵系统源码/saas--总后台端、商户端、代理端、源头开发 搭建短视频矩阵系统源码的交付步骤可以概括为以下几个关键环节&#xff1a; 1. **系统需求分析**&#xff1a;明确系统需要支持的功能&#xff0c;如短视频的上传、存储、播放、分享、评论、点赞等。 2. **技术选…...

K8s:二进制安装k8s(单台master)

目录 一、安装k8s 1、拓扑图 2、系统初始化配置 2.1关闭防火墙selinx以及swap 2.2设置主机名 2.3在每台主机中添加hosts&#xff0c;做映射 2.4调整内核参数&#xff0c;将桥接的ipv4流量传递到iptables&#xff0c;关闭ipv6 2.4时间同步 3、部署docker引擎&#xff0…...

C++类和对象下——实现日期类

前言 在学习了类和对象的六大成员函数后&#xff0c;为了巩固我们学习的知识可以手写一个日期类来帮助我们理解类和对象&#xff0c;加深对于其的了解。 默认函数 构造函数 既然是写类和对象&#xff0c;我们首先就要定义一个类&#xff0c;然后根据实际需要来加入类的数据与函…...

252 基于MATLAB的自适应差分阈值法检测心电信号的QRS波

基于MATLAB的自适应差分阈值法检测心电信号的QRS波&#xff0c;QRS波群反映左、右心室除极电位和时间的变化&#xff0c;第一个向下的波为Q波&#xff0c;向上的波为R波&#xff0c;接着向下的波是S波。通过GUI进行数据处理&#xff0c;展示心率和QRS。程序已调通&#xff0c;可…...

Phi-3-mini-128k-instruct实战案例:中小企业技术文档自动解析与结构化提取

Phi-3-mini-128k-instruct实战案例&#xff1a;中小企业技术文档自动解析与结构化提取 1. 项目背景与价值 对于中小企业而言&#xff0c;技术文档管理一直是个令人头疼的问题。工程师们经常需要从大量PDF、Word文档中提取关键信息&#xff0c;手动整理成结构化数据。这个过程…...

ShapeOfView贡献指南:如何为开源项目添加新的自定义形状

ShapeOfView贡献指南&#xff1a;如何为开源项目添加新的自定义形状 【免费下载链接】ShapeOfView Give a custom shape to any android view, Material Design 2 ready 项目地址: https://gitcode.com/gh_mirrors/sh/ShapeOfView ShapeOfView是一款强大的Android开源库…...

Apache Arrow Rust社区与生态:参与开源项目的最佳路径

Apache Arrow Rust社区与生态&#xff1a;参与开源项目的最佳路径 【免费下载链接】arrow-rs Apache Arrow Rust: 一个Rust语言实现的Apache Arrow数据交换格式&#xff0c;可用于高效地在不同计算引擎之间传输和操作大规模数据。它支持多种数据类型和编码方式&#xff0c;并提…...

智能邮件秘书:OpenClaw+Qwen3.5-9B自动分类与回复

智能邮件秘书&#xff1a;OpenClawQwen3.5-9B自动分类与回复 1. 为什么需要自动化邮件处理&#xff1f; 每天早晨打开邮箱时&#xff0c;看到堆积如山的未读邮件总会让人头皮发麻。作为一位经常需要处理客户咨询的技术顾问&#xff0c;我最高纪录是一天收到187封邮件。即使每…...

家庭实验室:树莓派控制OpenClaw调用远程Qwen3-32B

家庭实验室&#xff1a;树莓派控制OpenClaw调用远程Qwen3-32B 1. 为什么选择树莓派OpenClaw组合 去年冬天&#xff0c;我在整理家庭实验室设备时发现一个闲置的树莓派4B。这台信用卡大小的电脑曾经用来跑Home Assistant控制智能家居&#xff0c;但后来换了NUC主机就被束之高阁…...

SystemVerilog进阶:深入探索随机化约束的高级应用

1. 从基础到进阶&#xff1a;SystemVerilog随机化约束的核心价值 在芯片验证领域&#xff0c;随机化验证已经成为提高验证效率的黄金标准。SystemVerilog的随机化约束机制&#xff0c;就像给验证工程师配备了一个智能数据生成器&#xff0c;可以自动产生符合设计规范的测试场景…...

本地图片检索新方案:ImageSearch完全使用指南

本地图片检索新方案&#xff1a;ImageSearch完全使用指南 【免费下载链接】ImageSearch 基于.NET8的本地硬盘千万级图库以图搜图案例Demo和图片exif信息移除小工具分享 项目地址: https://gitcode.com/gh_mirrors/im/ImageSearch 当你的电脑中存储了成千上万张图片&…...

Dexter深度解析:如何用多Agent架构打造自主金融研究AI

一、为什么需要金融AI Agent&#xff1f; 1.1 传统金融研究的痛点 作为开发者&#xff0c;你是否遇到过这样的场景&#xff1a;需要分析一家上市公司的财务状况&#xff0c;却要花费数小时甚至数天时间&#xff1f; 传统金融研究面临三大挑战&#xff1a; 数据分散&#xff1a;…...

陀螺匠企业助手-产品

1. 功能说明维护出售产品的基本信息数据&#xff0c;支持在添加商机/合同中进行选择。2. 进入产品页面路径&#xff1a;客户>产品管理>产品3. 新增产品功能说明&#xff1a;维护产品信息&#xff0c;添加完成的产品信息&#xff0c;可以在添加商机/合同中进行选择。新增产…...

OpenSpec 生成文件说明

proposal.md —— 为什么做、做什么&#xff08;产品/范围&#xff09; Why&#xff1a;要解决什么问题、机会是什么。What Changes&#xff1a;会新增/改掉/删掉哪些能力&#xff0c;有没有 BREAKING。Capabilities&#xff1a;会动到哪些能力名&#xff08;对应后面 specs/&l…...