consul服务注册与发现、服务配置与刷新

在这里插入图片描述

为什么要用服务注册?为什么要用consul不用eureka?

举个栗子:
微服务当中存在多个服务模块,每个服务模块的ip端口在每套环境是不一致的,开发切换环境部署时,如果漏了一个配置忘记改动,将是一个很麻烦的事情,且如果集群当中,固定死的ip端口无法实现微服务的负载均衡,所以为了更好的减轻工作负担提高工作效率,针对不同情况适当引入服务治理功能,可以帮我们实现微服务之间的动态注册与发现。

不用eureka原因:
1、已暂停维护
2、对初学者不友好
3、本身也是个服务,需要开发去维护,无法与自己项目解耦,且后续有了更好的产品代替

目录

  • consul简介
    • 是什么
    • 作用
  • 安装使用
  • 服务注册与发现
  • 服务配置与刷新
    • 服务配置
    • 动态刷新

consul简介

官网地址:https://www.consul.io/

是什么

Consu 是一套开源的分布式服务发想和配置管理系,由HashiCorp公司用Go言开发。提供了微服务系统中的服务治理、配程中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用。也可以一起使用以构建全方位的服务网格。总之Consu提供了一种完整的服务网格解决方案。它具有很多优点。包括:基于r化协议。比较简洁: 文持健康检査,同时文持 HTTP和 DNS 协议文持跨数拟中心的WVAN 集群提供图形界面跨平台。支持Linux、Mac、Windows

作用

  • 服务发现:提供http和dns两种发现方式
  • 监控检测:支持多种方式,http、tcp、docker、shell脚本定制
  • kv存储:key、value的存储方式(服务配置中使用到)
  • 多数据中心
  • 可视化的web界面

安装使用

下载路径:https://developer.hashicorp.com/consul/install

在这里插入图片描述
根据自己操作系统下载,具体下载如何安装,可自行网上搜索教程,下载后 输入命令 consul -verison,如果安装成功后出现以下配置信息则是安装成功,输入命令启动consul,consul agent -dev,启动成功后可访问http://localhost:8500页面
在这里插入图片描述

服务注册与发现

  1. 发现服务

项目引入consul的maven依赖,具体参考springcloud consul官方文档https://docs.spring.io/spring-cloud-consul/reference/quickstart.html

在这里插入图片描述
2、配置yml
在这里插入图片描述
3、springboot主启动类加上注解@EnableDiscoveryClient,用来开启服务发现

4、启动项目,访问consul界面,能发现服务已经注册上去了,如果有红叉不用担心,有延迟
在这里插入图片描述
如果项目出现以下日志,想要去掉
在这里插入图片描述
在maven中排除log包即可
在这里插入图片描述
服务注册完成后,后续restful接口调用的话可直接配置成域名+服务名,不用ip+端口写死
在这里插入图片描述
如果调用服务报错提示,找不到该服务,请在restTemplate配置中加上图下注解@LoadBalanced
在这里插入图片描述
在这里插入图片描述
原因是之前指定ip+端口,restTemplate知道明确要调用的是哪台机器的服务,用服务名调用的话,如果存在服务集群,不加该注解,不知道给指派给哪个服务,所以会报错找不到该服务。

服务配置与刷新

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的较度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。比如某些配置文件中的内容大部分都是相同的,只有个别的配置项不同。就拿数据库配置来说吧,如果每个微服务使用的技术栈都是相同的,则每个微服务中关于数据库的配置几乎都是相同的,有时候主机迁移了,就希望一次修政,处处生效。
consul的其中一个特性是支持这种页面上修改配置,能动态更新项目中的配置。

如何配置,参考官网:https://docs.spring.io/spring-cloud-consul/reference/config.html

服务配置

1、加入maven依赖
在这里插入图片描述
在这里插入图片描述

2、新增bootstrap.yml文件,将application.yml中希望能随时更改的放到bootstrap.yml中
在这里插入图片描述
profile-separator配置默认英文逗号分割,我们改为常用的-,用来区分不同环境的配置文件,具体原因后面步骤会说明
在这里插入图片描述

3、新增kv配置文件
consul如何知道每个服务的相对应的配置文件呢,是有一套约定规则的,参考图上,profile-separator国外是用英文逗号隔开的,所以文档也是config/后面服务名,环境/data,中间是可以随我们自己改动,config和data的目录是固定的,我们也可以改为用-来进行区分,例如

config/my-procet/data
config/my-procet-dev/data
config/my-procet-prod/data
默认找第一个,如果配置具体环境,则会指定配置文件去更新项目的配置文件
在这里插入图片描述
consul的创建kv配置也是有规则的

创建config文件夹-》创建服务名-环境文件夹-》创建data配置文件

创建文件夹名称后面多加个/,就会生成文件夹,不加/则生成文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件目录必须写对,否则data文件更新配置时,java项目是不会被consul动态更新的!!!

动态刷新

主启动类加上刷新注解@RefreshScope
在这里插入图片描述

如果改了consul上面的配置,项目中没有实时刷新不要担心(前提是consul文件路径配置正确),有延迟间隔55秒,如果想要立马生效可以加以下配置,spring.cloud.consul.confg.watch.wait-time,单位秒
在这里插入图片描述

问题:consul所在的服务器/consul重启后,之前配置的服务注册、config kv键值对数据还在吗?
答案:如果不做consul的配置和数据持久化配置,重启后是会清空。

至于怎么去做持久化,不难,大家自己发发力去找答案吧~

就先说到这 \color{#008B8B}{ 就先说到这} 就先说到这
在下 A p o l l o \color{#008B8B}{在下Apollo} 在下Apollo
一个爱分享 J a v a 、生活的小人物, \color{#008B8B}{一个爱分享Java、生活的小人物,} 一个爱分享Java、生活的小人物,
咱们来日方长,有缘江湖再见,告辞! \color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!} 咱们来日方长,有缘江湖再见,告辞!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

黑龙江—等保测评三级安全设计思路

需求分析 6.1、 系统现状 6.2、 现有措施 目前,信息系统已经采取了下述的安全措施: 1、在物理层面上, 2、在网络层面上, 3、在系统层面上, 4、在应用层面上, 5、在管理层面上, 6.…

数码摄影色彩构成,数码相机色彩管理

一、资料描述 本套摄影色彩资料,大小58.54M,共有6个文件。 二、资料目录 《抽象彩色摄影集》.阿瑟.pdf 《色彩构成》.pdf 《色彩学》.星云.扫描版.pdf 《摄影色彩构成》.pdf 《数码相机色彩管理》.pdf 数码摄影进阶之4《色彩篇》.pdf 三、资料下…

【PCL】教程narf_feature_extraction 如何从深度图像中提取 NARF 特征

如何从范围图像中提取 NARF 特征  本教程演示如何从深度图像中在 NARF 关键点位置提取 NARF 描述符。该可执行文件使我们能够从磁盘加载点云(或创建它,如果没有提供),在其上提取兴趣点,然后在这些位置计算描述符。然…

spring @value @configurationProperties比较

今天项目中需要使用数组的方式 来加载一批 配置 yml: xxxx: - xxxxx - xsssss javaBean Value("${xxxxx.xxxxx}") private List<String> xxxs; 启动时候报错&#xff0c;无法加载&#xff0c;TM试验了1个小时&#xff0c;我一开始想到是格式的问题&#x…

Android 10.0 Launcher3替换桌面app图标后大小和其他app图标不一样的问题解决方案

1.前言 在10.0的系统ROM产品定制化开发中,在关于launcher3的产品定制化开发中,在有些时候需要对一些第三方的app图标做 替换或者是做一些动态图标的替换,发现在替换以后图标大小和其他app的图标大小不一样,所以就需要看是具体哪里 对app的图标做了缩放功能,接下来就需要去…

【注解和反射】类加载器

继上一篇博客【注解和反射】什么时候类会和不会被初始化&#xff1f;-CSDN博客 目录 六、类加载器 测试&#xff1a;获得类加载器 &#xff08;1&#xff09;如何获取Java中的类加载器及其父类加载器 &#xff08;2&#xff09;测试当前类是哪个类加载器 &#xff08;3&am…

【C++】STL-vector模拟实现

目录 1、vactor的模拟实现 1.1 成员变量 1.2 size、capacity 1.3 迭代器 1.4 构造、析构、拷贝构造、operator 1.5 push_back、pop_back、reserve 1.6 operator[] 1.7 insert、erase 1.8 resize 2、使用memcpy拷贝问题 1、vactor的模拟实现 1.1 成员变量 vector是顺…

时尚新选择,小塔RFID技术重塑样衣管理

在时尚领域&#xff0c;样衣是创意与工艺的完美结合&#xff0c;每一件都承载着设计师的心血与期待。然而&#xff0c;当这些珍贵的样版在传统的管理体系下流转时&#xff0c;样版管理成为一个令人头疼的问题。手动记录、盘点和样板追溯成为常态&#xff0c;但这种方式容易出错…

机器学习(二)之监督学习

前言&#xff1a; 上一节大概讲解了几种学习方式&#xff0c;下面几张就具体来讲讲监督学习的几种算法。 以下示例中和都是权重的意思&#xff01;&#xff01;&#xff01; 注&#xff1a;本文如有错误之处&#xff0c;还请读者指出&#xff0c;欢迎评论区探讨&#xff01; 1…

17. map和set的模拟实现(也就是用红黑树封装map和set)

1.map和set底层调用的红黑树的实现 有不清楚的地方&#xff0c;参考AVL树的模拟实现和红黑树的模拟实现 红黑树迭代器的实现 // 红黑树迭代器的类模板 template<class T, class Ref, class Ptr> struct __RBTreeIterator {// 将红黑树节点的类类型定义为Nodetypedef R…

绽放新笑容:儿童换牙期的关怀与注意

引言&#xff1a; 儿童的换牙期是成长过程中的重要阶段&#xff0c;标志着他们逐渐迈向成人世界。然而&#xff0c;伴随着牙齿的脱落和新牙的生长&#xff0c;孩子们可能会经历一些不适和困扰。本文将探讨儿童换牙期的注意事项&#xff0c;以帮助家长和孩子们度过这一特殊时期&…

扎根理论分析原理、方法与Nvivo技术应用

扎根理论越来越流行&#xff0c;成为经常被采用的研究方法之一。扎根理论的研究者来自广泛的研究领域&#xff0c;例如社会工作、护理、医药、综合医疗保健、教育、管理和商业。这些从业者和学者试图从他们所在学科范围内解释行为模式。对于扎根理论本质和实践的研究引发了知名…

这个表格为什么在VS Code里面预览可以显示,在浏览器预览就没有显示

在VS Code里面预览可以显示如图&#xff1a; 在浏览器预览就不能显示了&#xff0c;刚开始还好的后来不知道弄错了哪里了&#xff0c;哭死 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"vi…

Swagger:在线接口文档

Swagger介绍及使用 官网:https://swagger.io/ 介绍 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;就可以做到生成接口文档&#xff0c;以及在线接口调试页面。 Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。 使用方式 1.导入 kni…

qt5-入门-QListWidget-通过右键快捷菜单复制item内容

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 效果 在某个item上右键&#xff0c;点击copy后&#xff0c;item的内容已复制到剪贴板。 实现 #include <QMenu> #include <…

如何用微信发布考试成绩(如月考、期中、期末等)

自教育部《未成年人学校保护规定》颁布后,教育部明确表示:学校不得公开学生的考试成绩、排名等信息!同时学校应采取措施,便利家长知道学生的成绩等学业信息,对于教师来说,如何用微信发布考试成绩(如:月考、期中、期末等)就成了一道难题... 公开吧,会伤害到学生自尊心,甚至被投诉…

创建钉钉审批流实例

1、依赖 <!--钉钉 api --> <dependency><groupId>com.aliyun</groupId><artifactId>dingtalk</artifactId><version>2.0.14</version> </dependency> <!--钉钉 事件订阅--> <dependency><groupId>co…

CUDA编程技术概述

CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;是由英伟达&#xff08;NVIDIA&#xff09;公司推出的一种软硬件集成技术&#xff0c;是该公司对于GPGPU&#xff08;通用图形处理器计算&#xff09;的正式名称。透过这个技术&a…

Levenberg-Marquardt (LM) 算法进行非线性拟合

目录 1. LM算法2. 调包实现3. LM算法实现4. 源码地址 1. LM算法 LM算法是一种非线性最小二乘优化算法&#xff0c;用于求解非线性最小化问题。LM主要用于解决具有误差函数的非线性最小二乘问题&#xff0c;其中误差函数是参数的非线性函数&#xff0c;需要通过调整参数使误差函…

eNSP学习——静态路由及默认路由基本配置

目录 知识背景 实验目的 实验步骤 实验内容 实验拓扑 实验编址 实验前期准备 实验步骤 1、基本配置&#xff08;按照实验编址设置好对应的IP地址&#xff09; 2、是实现主机之间的通信 3、实现全网全通来增强网络的可靠性 4、使用默认路由实现简单的网络优化 需要各…