Nacos配置文件更新+热更新+多环境配置共享+集群搭建
对服务配置文件
场景:
如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件
配置步骤
1.首先在Nacos中的配置列表中增加一个配置文件:文件名字:服务名称+环境+yaml
2.然后配置一个bootstrap.yaml
,里面是服务的配置信息:(服务名称,Nacos连接地址,环境,extendion拓展的yaml配置)——>注意之前的yaml配置要删除,放在bootstrap.yaml中
spring:application:name: userservice # 服务名称profiles:active: dev # 环境cloud:nacos:server-addr: localhost:8848 #连接nacos地址,根据服务名称进行配置拓展config:file-extension: yaml # 文件后缀
3.然后在控制层可以进行测试
总结:
实现热更新
前言:为什么要使用热更新?
答:热更新可以在不用重启服务的情况下,对服务的配置进行更改,方便客户
。
步骤
方法1.使用注解@RefreshScope注解实现热更新
方法2.自动实现刷新利用@ConfigurationProperties:通过配置一个Properties类注入容器中,里面配置dateformat,然后注入controller中;
对比
:@RefreshScope会让代码太冗余了,如果我多个控制器都要用到扩展的配置文件中的属性,岂不是每个属性都得@Value赋值+@RefreshScope;
而@ConfigurationProperties+@Component将扩展属性全部放到容器中,我们的控制器直接注入这个组件就行了,然后get值,这样代码冗余减少了很多;
package cn.itcast.user.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @author diao 2022/5/7*/
@Component
@Data
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;
}
package cn.itcast.user.web;import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;@Slf4j
@RestController
//@RefreshScope //完成热更新
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/*** 将userservice服务拓展的配置属性(pattern.dateformat)注入*/
// @Value("${pattern.dateformat}")
// private String dateformat;@Autowiredprivate PatternProperties patternProperties;@GetMapping("now")public String now(){System.out.println(patternProperties.getDateformat());return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));}/*** 路径: /user/110** @param id 用户id* @return 用户*/@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id) {return userService.queryById(id);}
}
多环境(测试+开发+生产)配置共享
步骤
1.先配置全局环境配置(支持多环境)
2.分别在具体环境的配置文件和全局环境配置文件中增加属性配置
当前环境配置:
全局环境配置:
3.在配置类中将这些新属性注入,并在控制器中获取json数据,看谁优先级更高
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;private String envSharedValue;private String name;
}
@Slf4j
@RestController
@RequestMapping("/user")
//@RefreshScope
public class UserController {@Autowiredprivate UserService userService;// @Value("${pattern.dateformat}")
// private String dateformat;@Autowiredprivate PatternProperties properties;@GetMapping("now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));}/*** 路径: /user/110** @param id 用户id* @return 用户*/@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id) {return userService.queryById(id);}@GetMapping("prop")public PatternProperties properties(){return properties;}
}
可以在服务配置里面修改服务实例的测试环境,就不用每次去修改代码了
结果:
dev环境:
test环境:
本地配置和远程全局配置和远程环境配置三者都有同一属性时: 优先级 本地< 全局 < 环境
Nacos集群搭建
nginx完成Nacos的负载均衡,mysql实现主从复制 (Nacos集群读取共享数据)
步骤
直接本地复制三个nacos ,开三个端口nacos
1.先创建数据库,根据Nacos配置文件中的内容(包括:连接的数据库+username+password+所连接的数据库个数)
2.不同nacos中的配置端口需要修改,修改成与其他Nacos不一致的
3.在nacos中的cluster.conf配置中修改端口:也就是说当前nacos被启动,端口会是其中一个
特别注意,第一个地址是0.1:8845 后面的是两个0.1后面加的是点 不是冒号
4.当我们启动多个nacos时,对其在地址栏进行访问,会采用负载均衡的方法,访问Nacos集群中的一个服务器;
在nginx中进行配置
此时nginx反向代理已经将端口修改成了80 所以要将idea中的8848端口改成80端口
5.然后访问即可;
在nacos中编写配置 则直接储存到本地数据库中
相关文章:
Nacos配置文件更新+热更新+多环境配置共享+集群搭建
对服务配置文件 场景: 如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…...
李宏毅-机器学习hw4-self-attention结构-辨别600个speaker的身份
一、慢慢分析学习pytorch中的各个模块的参数含义、使用方法、功能: 1.encoder编码器中的nhead参数: self.encoder_layer nn.TransformerEncoderLayer( d_modeld_model, dim_feedforward256, nhead2) 所以说,这个nhead的意思,就…...
记一次使用NetworkManager管理Ubuntu网络无效问题分析
我们都知道CentOS、Redhat系列网络配置比较连贯,要么在/etc/sysconfig/network-scripts/ifcfg-网络设备名,文件中编辑后,重启网络服务;要么使用nmtui或者nmcli进行配置。但是,Ubuntu变动就比较大: 早期版本…...
Nginx重写功能
Nginx重写功能 一、Nginx常见模块二、访问路由location2.1location常用正则表达式2.2、location的分类2.3、location常用的匹配规则2.4、location优先级排列说明2.5、location示例2.6、location优先级总结2.7、实例2.7.1、location/{}与location/{}2.7.2、location/index.html{…...
王道考研计算机网络
文章目录 计算机网络体系结构计算机网络概述计算机网络的性能指标 计算机网络体系结构与参考模型错题 物理层通信基础基础概念奈奎斯特定理和香农定理编码与调制电路交换、报文交换和分组交换数据报与虚电路 传输介质物理层设备错题 数据链路层数据链路层的功能组帧差错控制检错…...
数据链路层重点协议-以太网
以太网简介 "以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了 一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等; 以太网数据帧…...
学习计划
白驹过隙,转眼已是大二。新学期,新气象,新计划。 一、专业学习方面 学习vue、spring boot、redis、MybatisPlus、Elasticsearch、ssm框架,完成项目的编写,思考复盘。 二、读书方面 因为我大概率会走前端方向࿰…...
RabbitMQ的RPM包安装和Python读写操作
下载地址 ## erlang 下载地址 https://packagecloud.io/rabbitmq/erlang?page6## rabbitmq 下载地址 https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.29-1.el7.noarch.rpm?distro_version_id140 Rabbitmq的RPM包安装 ## 下载 wget -…...
文件上传漏洞案例
目录 1.案例一 1)案例源码 2)创建web.php文件 3)使用抓包软件 2.案例二 1)案例代码 2) 案例分析 3)copy命令生成图片马 4)上传图片马到服务器 5)解析 文件图片 3.案例三 …...
Office365 Excel中使用宏将汉字转拼音
Office365 Excel中开启宏 文件 - 选项 - 信任中心 - 信任中心设值 - 宏设值 启用VBA宏启用VBA宏时启用Excel 4.0宏信任对VBA工程对象模型的访问 创建宏 视图 - 查看宏 填写名字创建宏:getpy填入下面代码保存,点击否,另存类型为“excel启…...
baichuan2(百川2)本地部署的实战方案
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...
PostgreSQL配置主从备份(docker)
一、服务器规划 序号 IP 备注 1192.168.1.110主数据库2192.168.1.120从数据库 二、服务器部署 2.1、主服务器部署(192.168.1.110) 1)、于/opt/postgresql目录下,编辑docker-compose.yml version: "3" services:po…...
qt作业day4
//clock_exercise.cpp#include "clock_timer.h" #include "ui_clock_timer.h"//时间事件处理函数 void Clock_Timer::timerEvent(QTimerEvent *event) {if(event->timerId() time_id){sys_tm QDateTime :: currentDateTime(); // int year sy…...
js如何实现字符串反转?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 split() 和 reverse() 方法⭐ 使用循环⭐ 使用递归⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专…...
Nmap 7.94 发布:新功能!
Nmap 的最新版本 7.94 在其 26 岁生日之际发布。 最重要的升级是在所有平台上将 Zenmap 和 Ndiff 从 Python 2 迁移到 Python 3。 这个新版本的 Nmap 7.94 进行了升级,进行了多项改进,修复了一些关键错误,并添加了新的 Npcap、操作系统指纹…...
【深入解析spring cloud gateway】08 Reactor 知识扫盲
一、响应式编程概述 1.1 背景知识 为了应对高并发服务器端开发场景,在2009 年,微软提出了一个更优雅地实现异步编程的方式——Reactive Programming,我们称之为响应式编程。随后,Netflix 和LightBend 公司提供了RxJava 和Akka S…...
常用ADB指令
ADB指令 1.查看版本 adb shell getprop|findstr fingerprint 2.查看应用包名 adb shell pm list packages 3.查看系统关键字 adb shell getprop|findstr oem/sn/user… 4.查看进程id adb shell ps -ef |grep appstore 5.启动服务 adb shell am startservice -n com.a…...
【HTML5高级第二篇】WebWorker多线程、EventSource事件推送、History历史操作
文章目录 一、多线程1.1 概述1.2 体会多线程1.3 多线程中数据传递和接收 二、事件推送2.1 概述2.2 onmessage 事件 三、history 一、多线程 1.1 概述 前端JS默认按照单线程去执行,一段时间内只能执行一件事情。举个栗子:比方说古代攻城游戏,…...
CentOS云服务器部署配置
1. 安装Mysql 1.1.确保服务器系统处于最新状态 [rootlocalhost ~]# yum -y update如果显示内容中含有 [rootlocalhost ~]# Complete! 说明更新完成 1.2.下载MySql安装包 rootlocalhost ~]# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm…...
深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange
当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括System.arraycopy()、Arrays.copyOf()和Arrays.copyOfRange()。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探…...
libc和glibc有什么区别
libc(C Library)是一个常见的术语,指的是C语言的标准函数库,提供了许多函数和常量供C语言程序使用。在不同的操作系统中,libc可能是不同的,但是它们都实现了C语言的标准库函数。 glibc(GNU C L…...
基于SSM的在线云音乐系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
构建高效的BFF(Backend for Frontend):优化前端与后端协作
面试题分享 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 史上最全文档AI绘画stab…...
喜报 | 实力亮相2023服贸会,擎创科技斩获领军人物奖创新案例奖
近日,由中华人民共和国商务部、北京市人民政府共同主办的中国(北京)国际服务贸易交易会(简称服贸会)已圆满落幕。 本次会议中,发布了2023年度“数智影响力”征集活动获奖名单,擎创科技创始人兼CEO杨辰获企…...
科技革新自动驾驶:拓世AI智能助理携手跟您一起点亮未来之旅
科技改变生活,智能改变世界,近年来,随着科技的不断进步,政策和市场的赋能推动,自动驾驶已经成为当今社会最炙手可热的话题之一。从其中的技术发展趋势来看,我国自动驾驶模式正由单车智能向车路协同时代演进…...
【HCIE】01.IGP高级特性
高级特性:一条命令解决一个问题 OSPF快速收敛机制 发生故障重新计算拓扑的过程叫做收敛,设备现在本身就是PRC算法和I-SPF算法 PRC(针对叶子节点,叶子代表路由) 不需要命令配置,就是ospf的特性ÿ…...
知识大杂烩(uniapp)
首先声明:不敢保证都管用,这是我自己实践得来的。 box-shadow: 这段 CSS 样式代码用于创建一个阴影效果,它是通过 box-shadow 属性来实现的。让我解释一下这段代码的含义: - box-shadow: 这是 CSS 的属性,用于添加阴影…...
Jmeter压测监控体系搭建Docker+Influxdb+Grafana
章节目录: 一、背景介绍1.1 概述1.2 拓扑图 二、云服务器设置三、Docker3.1 概述3.2 搭建流程3.3 安装验证3.4 配置docker镜像加速3.5 取消sudo运行(可选操作) 四、InfluxDB4.1 镜像拉取4.2 运行数据库4.3 创建存储 jmeter 数据的库 五、Grafana5.1 镜像拉取5.2 关联…...
TDesign 点击高亮显示=》点击切换class类名
1. wx:for遍历数组 2. 在一行显示 2. 点击高亮...
容器编排学习(二)镜像制作和私有仓库介绍
一 Dockerfile 1 概述 commit的局限 很容易制作简单的镜像,但碰到复杂的情况就十分不方便例如碰到下面的情况需要设置默认的启动命令需要设置环境变量需要指定镜像开放某些特定的端口 Dockerfile就是解决这些问题的方法 Dockerfile是一种更强大的镜像制作方式…...
邢台做网站推广的公司是哪家?/关键词查询工具包括哪些
1 前话 没难度,但有坑,以此记录。 2 工具 宝塔(神器不解释)centos7.8 3 步骤 3.1 安装redis 堡塔直接搜redis,安装最新版就可以了。我这里用的是6.2的版本。其实按理说不需要再独立装那些c之类的环境,堡…...
商城网站如何建设/小说百度风云榜
本故事纯属改编 如有共鸣 实属意外-说到“家”,一下想起了小时候学的儿歌:“小毛虫的摇篮是树叶,住在花瓣上的是蝴蝶……我最幸福了,一生下来爸爸妈妈就准备好了家,让我安安稳稳地在家里长大。”从那时起,我…...
wordpress代码增强插件/苏州seo关键词优化推广
1 首先开通企业微信: https://work.weixin.qq.com/wework_admin/loginpage_wx#contacts 登录管理后台,使用二维码或微信邀请自己加入企业,然后就可以再联系人列表中看到企业。 应用管理中创建接收aws报警的应用 点击应用进入查看agentid和s…...
北京网站开发公司排名/如何查看网站收录情况
需求 通过一个聚合二维码,支付宝扫码进入到生活号的首页,微信扫码进入微信公众号关注界面 思路 判断用户使用的支付宝扫码还是微信扫码。这个比较容易,根据浏览器请求头里面的信息就可以识别获取生活号和公众号首页关注链接,根…...
做外贸网站哪家效果好/怎么建网站免费的
原因:opencv3.0或者3.1的using namespace cv和windows.h中ACCESS_MASK定义冲突。 解决方案:注释掉所有的using namespace cv,然后在需要的地方写上cv::。 以后写C&opencv程序时,尽量不用using namespace 命名空间,以免产生命名…...
做百度网站要注意什么/seo网站推广助理
原文地址:http://www.codeproject.com/aspnet/ajax_scribble.asp源代码:http://www.codeproject.com/aspnet/ajax_scribble/ajax_scribble_src.zipAtlas指南: 建立一个AJAX 涂鸦程序(二) Global.asax我们从Global.asax开始我们的编码过程。 1…...