微服务demo(二)nacos服务注册与集中配置

news/2024/4/29 5:31:34/文章来源:https://blog.csdn.net/w_t_y_y/article/details/137011963

环境:nacos1.3.0

一、服务注册

1、pom:

移步spring官网https://spring.io,查看集成Nacos所需依赖

找到对应版本点击进入查看集成说明

然后再里面找到集成配置样例,这里只截一张,其他集成内容继续向下找

我的:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo.nacos</groupId><artifactId>nacos-service</artifactId><version>1.0-SNAPSHOT</version><!-- springBoot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version></parent><properties><java.version>1.8</java.version><maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version><maven.source.plugin>3.0.1</maven.source.plugin><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--nocas必须在web环境下--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.RELEASE</version></dependency><!-- SpringCloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version></dependency><!--服务注册--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.2.RELEASE</version></dependency><!-- nacos 注册中心客户端 -->
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--            <version>2.1.0.RELEASE</version>-->
<!--        </dependency>--></dependencies><build><finalName>my-service</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

我这里注册到nacos使用 com.alibaba.cloud会报错读取不到bootstrap,使用org.springframework.cloud就可以,暂未解决。

2、配置文件
(1)bootstrap:

bootstrap是springcloud衍生来的,推荐使用bootstrap。一般来说,是把application内容放到nacos配置中心配置,本地只用bootstrap连接到nacos而不用application配置。bootstrap优先于application执行。如果把nacos的配置放到application中去连接,那么远程nacos上的配置可能就读取不到了。

spring:application:name: my-servicecloud:compatibility-verifier:enabled: falsenacos:#服务注册discovery:server-addr: xx.xx.xxx:8848server:port: 8899servlet:context-path: /myProvider
(2)application:

有认为,nacos配置中心配置内容必须写在bootstrap.yml文件中,如果写入application-*.yml或者application.yml中均不生效。其实使用application.properties也可以完成配置。我的:

spring.cloud.nacos.discovery.server-addr=xx.xx.xxx:8848
server.port=8877
server.servlet.context-path=/myProvider
spring.application.name=my-service
3、启动类
import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class NacosServierStart {public static void main(String args[]){SpringApplication.run(NacosServierStart.class,args);}
}
5、测试

启动

查看nacos也成功的注册了:

二、集中配置

获取集中配置第一步需要注册到nacos,所以建立在上面的基础上:

1、参数说明
1.1、dataId:

相当于nacos集中配置的文件名。在 Nacos Spring Cloud 中,DataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension} 

(1)prefix: 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
(2)spring.profiles.active: 即为当前环境对应的 profile, 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在, dataId 的拼接格式变成 p r e f i x . {prefix}.prefix.{file-extension}。如:

my-service-dev.properties
my-service-prod.properties

(3)file-exetension: 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。如my-service.properties。

1.2、Group:

组相当于一个特定场景,组默认是DEFAULT_GROUP,如果使用默认的则不需要在项目中指定。

1.3、namespace(tenat):

相当于 第一层 互相隔离 每个命名空间下面有自己的组。命名空间默认是 public 可以添加 dev prod test 。

1.4、配置格式:

没用,只是增加一点颜色,方便编辑

2、集成方法与demo
(1)pom:

加上macos-config依赖

  <!--集中配置--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.0.RELEASE</version></dependency>

如我完整的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo.nacos</groupId><artifactId>nacos-service</artifactId><version>1.0-SNAPSHOT</version><!-- springBoot --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version></parent><properties><java.version>1.8</java.version><maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version><maven.source.plugin>3.0.1</maven.source.plugin><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--nocas必须在web环境下--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.RELEASE</version></dependency><!-- SpringCloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version></dependency><!--服务注册--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>0.2.2.RELEASE</version></dependency><!-- nacos 注册中心客户端 -->
<!--        <dependency>-->
<!--            <groupId>com.alibaba.cloud</groupId>-->
<!--            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--            <version>2.1.0.RELEASE</version>-->
<!--        </dependency>--><!--集中配置--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.1.0.RELEASE</version></dependency></dependencies><build><finalName>my-service</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
(2)配置文件

bootstrap加上config配置连接,

spring:application:name: my-servicecloud:compatibility-verifier:enabled: falsenacos:#服务注册discovery:server-addr: xx.xx.xxx:8848#配置中心config:server-addr: xx.xx.xxx:8848

如我完整的: 

spring:application:name: my-servicecloud:compatibility-verifier:enabled: falsenacos:#服务注册discovery:server-addr: xx.xx.xxx:8848#配置中心config:server-addr: xx.xx.xxx:8848
server:port: 8877servlet:context-path: /myProvider
(3)启动类 

    无需改动

(4)业务代码:
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;@RestController
@RequestMapping("/test")
//刷新配置
@RefreshScope
public class TestController {@Value("${user.text}")private String userText;@GetMapping("/getUserName")public String getTemp(HttpServletRequest request) throws InterruptedException {return userText;}
}
3、测试

启动:

3.1、简单获取集中配置

(1)访问 http://localhost:8877/myProvider/test/getUserName

(2)修改nacos上的配置

再次刷新浏览器可以看到获取到最新的配置了

3.2、指定组

同步修改bootstrap配置文件并重启代码:

再次刷新浏览器

 

3.3、指定环境

集中配置划分为dev、test、prod。新增几个配置

如dev的内容为

同步修改bootstrap配置文件并重启代码:

再次刷新浏览器:

3.4、本地配置覆盖远程

如我本地新增

此时获取的仍然是远程的

如果希望本地配置覆盖远程,需要在bootstrap配置文件中开启配置:

4、远程配置管理

一般只将固定的配置放在本地boostrap,其他配置都放到远程nacos集中配置上。如现在只将nacos的连接和获取集中配置放在本地,其他如端口号、数据库连接等信息放在集中配置上。

(1)pom添加依赖:

 <!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.13</version></dependency>

(2)启动类

@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("com.demo.nacos.provider.mapper")
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}

(3)业务代码:

 @Autowiredprivate UserDao userDao;@RequestMapping("/getAllUsers")public List<UserDTO> getAllUsers(){return userDao.getAllUsers();}
 <select id="getAllUsers" resultType="com.demo.nacos.common.dto.UserDTO">SELECT`NAME` userName,ACCOUNT userAccount
FROMt_user_new</select>

(4)nacos集中配置:

server.port=1111
#server.servlet.context-path=/myProvider
user.text = wtyy分组下 prod生产环境 的值
#mybatis
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
#spring.datasource.password=wtyyspring.datasource.url=jdbc:mysql://xxx.xx.xxx:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
spring.datasource.password=xxxxxx
#mybatis
mybatis.mapper-locations=classpath*:mapper/*Mapper.xml

(5)本地配置

spring:application:name: my-servicecloud:compatibility-verifier:enabled: falsenacos:#服务注册discovery:server-addr: xxx.xx.xxx:8848#配置中心config:server-addr: xxx.xx.xxx:8848group: wtyyprofiles:active: prod
server:servlet:context-path: /myProvider

(6)测试:

启动后访问接口

这时把bootstrap改为dev环境,因为集中配置dev文件没有配置数据库信息,所以启动报错:

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

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

相关文章

蓝桥杯刷题计划-洛谷-持续更新

P8598 [蓝桥杯 2013 省 AB] 错误票据 题目 #include <bits/stdc.h> #define endl \n #define int long long #define INF 0x3f3f3f3f3f const int N 1000010; using namespace std; int arr[N]; signed main() {int N;cin>>N;int idx;while(cin>>arr[idx…

数据库审计和安全

互联网、云计算、物联网等新技术的应用&#xff0c;数据安全面临前所未有的挑战!我国信息安全已从终端安全、网络安全&#xff0c;发展到数据安全建设阶段。数据安全的核心是对“数据”全方位的安全防护&#xff0c;其产品及解决方案直接涉及国家和企业的核心机密 核心数据库存…

win10微软拼音输入法 - bug - 在PATH变量为空的情况下,无法输入中文

文章目录 win10微软拼音输入法 - bug - 在PATH变量为空的情况下&#xff0c;无法输入中文概述笔记实验前提条件100%可以重现 - 无法使用win10拼音输入法输入中文替代的输入法软件备注END win10微软拼音输入法 - bug - 在PATH变量为空的情况下&#xff0c;无法输入中文 概述 在…

ES6学习之路:迭代器Iterator和生成器Generator

迭代器 一、知识背景 什么是迭代器 迭代器就是在一个数据集合中不断取出数据的过程迭代和遍历的区别 遍历是把所有数据都取出迭代器注重的是依次取出数据&#xff0c;它不会在意有多少数据&#xff0c;也不会保证能够取出多少或者能够把数据都取完。比如斐波那契额数列&#…

linux nginx配置ssl, 实现https+ip访问

mkdir sslZhengShu openssl req -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr 和之前输入一样即可 …

Python基本运算

1.逻辑运算符 第四行会有黄色的下划线是因为这个不是系统推荐的写法&#xff0c;系统推荐的是第五行的链式比较&#xff1b; 2.短路求值 对于and而言&#xff0c;左边的语句是false&#xff0c;那么整体一定是false,右边的表达式就不会进行计算&#xff1b; 对于or而言&…

FTP 文件传输服务

FTP连接 控制连接&#xff1a;TCP 21&#xff0c;用于发送FTP命令信息 数据连接&#xff1a;TCP 20&#xff0c;用于上传、下载数据 数据连接的建立类型&#xff1a; 主动模式&#xff1a;服务端从 20 端口主动向客户端发起连接 被动模式&#xff1a;服务端在指定范围…

平台介绍-搭建赛事运营平台(3)

上文介绍了品牌隔离的基本原理&#xff0c;就是通过不同的前端和微服务来实现。但是确实很多功能是类似的&#xff0c;所以从编程角度还是有些管理手段的。 前端部分&#xff1a;前端部分没有什么特别手段&#xff0c;就是两个独立的项目工程&#xff0c;分别维护。相同的部分复…

神策数据参与制定首份 SDK 网络安全国家标准

国家市场监督管理总局、国家标准化管理委员会发布中华人民共和国国家标准公告&#xff08;2023 年第 13 号&#xff09;&#xff0c;全国信息安全标准化技术委员会归口的 3 项国家标准正式发布。其中&#xff0c;首份 SDK 国家标准《信息安全技术 移动互联网应用程序&#xff0…

2核4G服务器租用价格表,阿里云/腾讯云/华为云/京东云

当前最新2核4G云服务器多少钱&#xff1f;165元一年&#xff0c;30元3个月。阿里云2核4G服务器165元一年&#xff0c;30元3个月、腾讯云2核4G5M服务器165元一年、京东云2核4G云主机126元1年&#xff0c;华为云也提供2核4G配置云服务器。阿腾云atengyun.com整理2024年最新云服务…

【NLP笔记】预训练+Prompt Tuning新范式之LLM时代(GPT3...)

文章目录 概述GPT3 【参考链接】 一张图总结大语言模型的技术分类、现状和开源情况 大语言模型LLM微调技术&#xff1a;Prompt Tuning A Survey of Large Language ModelsThe Practical Guides for Large Language ModelsGPT3&#xff1a;Language Models are Few-Shot Learner…

行存储与列存储:大数据存储方案的选择与优缺点分析

随着大数据时代的来临&#xff0c;数据的规模和复杂性呈指数级增长&#xff0c;传统的关系数据库已经不再适应这一巨大的存储量和计算要求。在大数据存储领域&#xff0c;行存储和列存储成为两种备受关注的存储方案。本文将探讨行存储和列存储的定义、优缺点&#xff0c;并结合…

python pytz是什么

pytz模块常用于时区的转换&#xff0c;常常配合datetime一起使用。我们知道datetime除了data方法生成的时间是没有时区概念&#xff0c;其他如time、datetime等都是有时区概念&#xff0c;即指定了tzinfo信息。 >>> import datetime >>> datetime.datetime.n…

骗子查询系统源码

源码简介 小权云黑管理系统 V1.0 功能如下&#xff1a; 1.添加骗子&#xff0c;查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子&#xff0c;后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表&#xff0c;可给网站添加导航友链 7.可添加云黑类…

C语言运算符和表达式——增1和减1运算符

目录 增1和减1运算符 一元运算符 前缀增1/减1运算符 后缀增1/减1运算符 前缀与后缀对变量和表达式的影响 稍微复杂一点的例子 增1和减1运算符的优缺点 增1和减1运算符 增1运算符&#xff08;Increment&#xff09; *使变量的值增加1个单位 减1运算符&#xff08;Decre…

量化交易软件开发定制的步骤

量化交易软件的定制开发是一个复杂而精细的过程&#xff0c;需要经过一系列步骤来确保最终交付的软件符合客户的需求并具有高度的可靠性和效率。以下是量化交易软件开发定制的主要步骤&#xff1a; 1. 需求分析与规划 在开始开发之前&#xff0c;首先需要与客户深入沟通&…

【使用matlab绘制音频数据的时域图和频域图】

使用matlab绘制音频数据的时域图和频域图 虚拟的数据集见附件 一、读取数据并设置参数 close all;clear all;colordef black 设置参数 filedir D:\Projects\MATLAB\data name 2024-03-28.txt % disp(filedir);Fs 8192; %采样率&#xff0c;即单位时间的样本个数&#xff…

电脑如何更新AMD独立显卡驱动?安装官方驱动的方法来了!

前言 有小伙伴在电脑上安装了独立显卡之后&#xff0c;总会用驱动人生或者驱动精灵等软件给独立显卡安装驱动。这种安装方法并不能说是错的&#xff0c;反正能用就行。 安装官方驱动的办法其实很简单&#xff0c;现在独立显卡一共就那么几家&#xff0c;最常见的显卡就是Nvidi…

Java基于微信小程序的校园订餐小程序的实现,附源码和数据库

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月29日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年3月29日 星期五 农历二月二十 1、 网络表演&#xff08;直播与短视频&#xff09;运营团体标准发布&#xff1a;应建立举报处置机制。 2、 商务部&#xff1a;中国决定终止对澳大利亚进口葡萄酒征收反倾销税和反补贴税。…