SpringCloud02_consul概述、功能及下载、服务注册与发现、配置与刷新

文章目录

  • ①. Euraka为什么被废弃
  • ②. consul简介、如何下载
  • ③. consul功能及下载
  • ④. 服务注册与发现 - 8001改造
  • ⑤. 服务注册与发现 - 80改造
  • ⑥. 服务配置与刷新Refresh

①. Euraka为什么被废弃

  • ①. Eureka停更进维
    在这里插入图片描述
  • ②. Eureka对初学者不友好,下图为自我保护机制
    在这里插入图片描述
  • ③. 阿里巴巴Nacos的崛起
    在这里插入图片描述

②. consul简介、如何下载

  • ①. consul官网地址

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

在这里插入图片描述

  • ③. HashiCorp是一家非常知名的基础软件提供商,很多人可能没听过它的名字,但是其旗下的6款主流软件,Terraform、Consul、Vagrant、Nomad、Vault,Packer 相信不少程序员都听说或使用过,尤其是Consul使用者不尽其数。截止目前为止,从HashiCorp 官网上的声明来看,开源项目其实还是“安全”的,被禁用的只是Vault企业版(并且原因是Vault产品目前使用的加密算法在中国不符合法规,另一方面是美国出口管制法在涉及加密相关软件上也有相应规定。因此这两项原因使得HashiCorp不得不在声明中说明风险)而非其他所有开源产品(Terraform、Consul等)。因此,大家可以暂时放下心来,放心使用!
    在这里插入图片描述

③. consul功能及下载

  • ①. consul功能
  1. 服务发现:提供HTTP和DNS两种发现方式。
  2. 健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化监控
  3. KV存储:Key、Value的存储方式
  4. 多数据中心:Consul支持多数据中心
  5. 可视化Web界面
  • ②. consul下载地址

  • ③. consul如何玩?

  • ④. 两大作用:服务发现和配置中心
    在这里插入图片描述

  • ⑤. 官网下载
    在这里插入图片描述

  • ⑥. 下载完成后只有一个consul.exe文件,对应全路径下查看版本号信息
    在这里插入图片描述

  • ⑦. 使用开发模式启动 - consul agent -dev
    在这里插入图片描述

  • ⑧. 通过以下地址可以访问Consul的首页:http://localhost:8500
    在这里插入图片描述

④. 服务注册与发现 - 8001改造

  • ①. 支付服务provider8001注册进consul

  • ②. POM文件配置来源

	<!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>
  • ③. yaml文件配置
spring:####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}
  • ④. 使用@EnableDiscoveryClient注解开启
@SpringBootApplication
@MapperScan("com.atguigu.cloud.mapper") 
@EnableDiscoveryClient
public class Main8001{public static void main(String[] args){SpringApplication.run(Main8001.class,args);}
}
  • ⑤. 启动8001并查看consul控制台
    在这里插入图片描述

⑤. 服务注册与发现 - 80改造

  • ①. pom文件
 <!--SpringCloud consul discovery --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId></dependency>
  • ②. yaml文件
server:port: 80
spring:application:name: cloud-consumer-order####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:prefer-ip-address: true #优先使用服务ip进行注册service-name: ${spring.application.name}
  • ③. 主启动类 - @EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient //该注解用于向使用consul为注册中心时注册服务
public class Main80{public static void main(String[] args){SpringApplication.run(Main80.class,args);}
}
  • ④. Controller层改造地址为服务地址,进行远程调用8001服务
@RestController
public class OrderController{//public static final String PaymentSrv_URL = "http://localhost:8001";//先写死,硬编码public static final String PaymentSrv_URL = "http://cloud-payment-service";//服务注册中心上的微服务名称@Autowiredprivate RestTemplate restTemplate;/*** 一般情况下,通过浏览器的地址栏输入url,发送的只能是get请求* 我们模拟消费者发送get请求,but底层调用post方法,客户端消费者参数PayDTO可以不添加@RequestBody* @param payDTO* @return*/@GetMapping("/consumer/pay/add")public ResultData addOrder(PayDTO payDTO){return restTemplate.postForObject(PaymentSrv_URL + "/pay/add",payDTO,ResultData.class);}// 删除+修改操作作为家庭作业,O(∩_∩)O。。。。。。。@GetMapping("/consumer/pay/get/{id}")public ResultData getPayInfo(@PathVariable Integer id){return restTemplate.getForObject(PaymentSrv_URL + "/pay/get/"+id, ResultData.class, id);}
}
  • ⑤. 启动80并查看consul控制台
    在这里插入图片描述
  • ⑥. 访问测试地址:http://localhost/consumer/pay/get/10
    在这里插入图片描述
  • ⑦. 配置修改RestTemplateConfig
@Configuration
public class RestTemplateConfig{@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}
}
  • ⑧. 三个注册中心异同点
    在这里插入图片描述

⑥. 服务配置与刷新Refresh

  • ①. 服务注册与发现官网
    在这里插入图片描述
  • ②. 修改cloud-provider-payment8001
<!--SpringCloud consul config-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
  • ③. yaml配置规则说明
    在这里插入图片描述
  • ④. 新增配置文件bootstrap.yml
    在这里插入图片描述
spring:application:name: cloud-payment-service####Spring Cloud Consul for Service Discoverycloud:consul:host: localhostport: 8500discovery:service-name: ${spring.application.name}config:profile-separator: '-' # default value is ",",we update '-'format: YAML# config/cloud-payment-service/data
#       /cloud-payment-service-dev/data
#       /cloud-payment-service-prod/data
  • ⑤. application.yml
server:port: 8001# ==========applicationName + druid-mysql8 driver===================
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=trueusername: rootpassword: 123456profiles:active: dev # 多环境配置加载内容dev/prod,不写就是默认default配置# ========================mybatis===================
mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.xiaozhi.cloud.entitiesconfiguration:map-underscore-to-camel-case: true
  • ⑥. consul服务器key/value配置填写
  1. 参考规则
    在这里插入图片描述
  2. 创建config文件夹,以/结尾
    在这里插入图片描述
  3. config文件夹下分别创建其它3个文件夹,以/结尾
    在这里插入图片描述
  4. 上述3个文件夹下分别创建data内容,data不再是文件夹
    在这里插入图片描述
  • ⑦. 进行代码测试:http://localhost:8001/pay/get/info
@Value("${server.port}")
private String port;@GetMapping(value = "/pay/get/info")
private String getInfoByConsul(@Value("${other.info}") String otherInfo){return "otherInfo: "+otherInfo+"\t"+"port: "+port;
}

在这里插入图片描述

  • ⑧. 接上一步,我们在consul的dev配置分支修改了内容马上访问,结果无效
    在这里插入图片描述
  • ⑨. 动态刷新案例步骤,修改数据后,可以正常的获取到值
  1. @RefreshScope主启动类添加
  2. bootstrap.yml修改下(只为教学实际别改) - spring.cloud.consul.config.watch.wait-time
    在这里插入图片描述
    在这里插入图片描述
  • ⑩. 截止到这,服务配置和动态刷新全部通过,假设我重启Consul,之前的配置还在吗?
    在这里插入图片描述

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

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

相关文章

linux下JDK的安装

前言&#xff1a; 安装部署java开发的代码都需要java环境&#xff0c;这里记录下linux下JDK的安装过程&#xff0c;仅供学习参考。 JDK的下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads 选择和操作系统匹配的版本进行下载 查看操作系统&…

HarmonyOS NEXT学习——@BuilderParam装饰器

初步理解&#xff0c;相当于VUE的插槽slot Builder function overBuilder() {}Component struct Child {label: string ChildBuilder customBuilder() {}Builder customChangeThisBuilder() {}BuilderParam customBuilderParam: () > void this.customBuilder; // 使用自定…

人工智能未来发展前景将会怎样?

当我们探讨人工智能未来的发展前景时&#xff0c;可以从多个角度来详细说明其可能的影响和趋势&#xff1a; 技术进步与应用扩展 1.深度学习与机器学习&#xff1a; 进一步优化和算法进展&#xff1a;深度学习已经取得了巨大成就&#xff0c;但仍面临挑战&#xff0c;如对小数…

浅说区间dp(下)

文章目录 环形区间dp例题[NOI1995] 石子合并题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 [NOIP2006 提高组] 能量项链题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 [NOIP2001 提高组] 数的划分题目描述输入格式输出格式样例 #1样例输…

你也许不知道,自己可能是一个「热人」

稍微标题党了一下。: ) 今天想跟大家分享的&#xff0c;是一种很少有人了解的人格特质。它非常普遍&#xff0c;许多人都或多或少有一些倾向&#xff0c;但却很少有人意识到它。 不妨看一看&#xff0c;你有没有下面这些特征&#xff1a; 有着极其旺盛的求知欲&#xff0c;对许…

paddleocr icdar2015数据集训练dbnet检测模型

参考&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/detection.md 原理 DBNET论文 Real-time Scene Text Detection with Differentiable Binarization 参考&#xff1a;https://blog.csdn.net/qq_35756383/article/details/118679258 Real-T…

【STC89C51单片机】定时器/计数器的理解

目录 定时器/计数器1. 定时器怎么定时简单理解&#xff08;加1经过了多少时间&#xff09;什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器 STC89C51单片机的定时器和计数器&#xff08;Timers and Counter…

【BUG】已解决:NameError: name ‘XXX‘ is not defined

已解决&#xff1a;NameError: name ‘XXX‘ is not defined 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社…

Harmony 状态管理 @Local 和 @Param

Harmony 状态管理 Local 和 Param Local 背景 Local 是harmony应用开发中的v2版本中 对标**State**的状态管理修饰器&#xff0c;它解决了 State 对状态变量更改的检测混乱的问题&#xff1a; State 修饰的状态变量 可以是组件内部自己定义的State 修饰的状态 也可以由外部父…

路径规划 | 基于DQN深度强化学习算法的路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 DQN路径规划算法 基于深度强化学习算法的路径规划 matlab2023b 栅格环境&#xff0c;走迷宫&#xff0c;可以通过窗口界面方便观察交互过程&#xff0c;代码注释详尽。 程序设计 完整源码和数据私信博主回复基于DQN深…

Vue学习---vue cli 项目创建

使用的编辑工具webStorm 创建例子: hello vue create hello 选择 vue3 进行创建 运行 npm run serve 测试访问&#xff1a;http://localhost:8080 改动内容重新编译&#xff1a; npm run build dist 目录就是编译后的可运行内容

1分钟带你了解苹果手机删除照片恢复全过程

在日常使用苹果手机时&#xff0c;我们可能会不小心删除掉一些重要的照片&#xff0c;这让人非常烦恼。那么苹果手机怎么恢复删除的照片&#xff1f;下面小编将会向大家介绍苹果手机恢复删除的照片的方法&#xff0c;帮助大家轻松找回你丢失的照片。 一、利用“最近删除”文件夹…

甲骨文面试题【动态规划】力扣377.组合总和IV

给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#xff1a;7 解释&#x…

【Linux】详解加锁实现线程互斥

一、多线程不加线程互斥可能会引发的问题 下面是一个抢标逻辑。抢票为什么会抢到负数&#xff1a;假设当票数为1时&#xff0c;此时四个进程的判断条件tickets都大于0&#xff0c;都会进入抢票操作&#xff0c;第一个进程抢完票以后tickets0并写回内存&#xff0c;第二个进程再…

Xcode进行真机测试时总是断连,如何解决?

嗨。大家好&#xff0c;我是兰若姐姐。最近我在用真机进行app自动化测试的时候&#xff0c;经常会遇到xcode和手机断连&#xff0c;每次断连之后需要重新连接&#xff0c;每次断开都会出现以下截图的报错 当这种情况出现时&#xff0c;之前执行的用例就相当于白执行了&#xff…

Adobe XD中文设置指南:专业设计师的现场解答

Adobe XD是世界领先的在线合作UI设计工具。它摆脱了Sketch、Figma等传统设计软件对设备的依赖&#xff0c;使设计师可以随时随地使用任何设备打开网页浏览器&#xff0c;轻松实现跨平台、跨时空的设计合作。然后&#xff0c;为了提高国内设计师的使用体验&#xff0c;Adobe XD如…

爬虫(二)——爬虫的伪装

前言 本文是爬虫系列的第二篇文章&#xff0c;主要讲解关于爬虫的简单伪装&#xff0c;以及如何爬取B站的视频。建议先看完上一篇文章&#xff0c;再来看这一篇文章。要注意的是&#xff0c;本文介绍的方法只能爬取免费视频&#xff0c;会员视频是无法爬取的哦。 爬虫的伪装 …

C++类与对象(补)

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 个人主页&#xff1a;LaNzikinh-CSDN博客 文章目录 前言一.默认成员函数二.static三.友元四.匿名对象总结 前言 类的默认成员函数&#xff0c;默认成员…

linux centos limits.conf 修改错误,无法登陆问题修复 centos7.9

一、问题描述 由于修改/etc/security/limits.conf这个文件中的值不当&#xff0c;重启后会导致其账户无法远程登录&#xff0c;本机登录。 如改成这样《错误示范》&#xff1a; 会出现&#xff1a; 二、解决 现在知道是由于修改limits.conf文件不当造成的&#xff0c;那么就…

Android-- 集成谷歌地图

引言 项目需求需要在谷歌地图&#xff1a; 地图展示&#xff0c;设备点聚合&#xff0c;设备站点&#xff0c;绘制点和区域等功能。 我只针对我涉及到的技术做一下总结&#xff0c;希望能帮到开始接触谷歌地图的伙伴们。 集成步骤 1、在项目的modle的build.gradle中添加依赖如…