【微服务】Nacos(配置中心)

文章目录

    • 1.AP和CP
        • 1.基本介绍
        • 2.说明
    • 2.Nacos配置中心实例
        • 1.架构图
        • 2.在Nacos Server加入配置
          • 1.配置列表,加号
          • 2.加入配置
          • 3.点击发布,然后返回
          • 4.还可以编辑
        • 3. 创建 Nacos 配置客户端模块获取配置中心信息
          • 1.创建子模块 e-commerce-nacos-config-client5000
          • 2.pom.xml引入配置中心依赖
          • 3.application.yml 指定当前为开发环境(对应于配置中心文件的-dev)
          • 4.bootstrap.yml(这个文件会在application.yml之前读取,也可作为配置文件) 配置服务注册和配置中心
          • 5.编写启动类
          • 6.src/main/java/com/sun/springcloud/controller/NacosConfigController.java 编写业务类获取配置中心信息
          • 7.测试
            • 1.首先确保Nacos启动
            • 2.启动这个模块,浏览器访问http://localhost:8848/nacos/查看注册信息
            • 3.浏览器访问http://localhost:5000/nacos/config/mes查看结果
        • 4.Nacos配置中心细节
          • 1.关于@Value注解引用的包
          • 2.配置中心的文件不可以是yml,只能是yaml
          • 3.在项目初始化时,如果无法从配置中心获取数据,项目是启动不了的
          • 4.bootstrap.yml 的优先级高于 application.yml
          • 5.application name必须与配置中心的配置文件的名字对应(-dev之前)
          • 6.@RefreshScope是springcloud的原生注解,可以实现配置信息自动刷新
            • 演示
    • 3.Nacos配置隔离
        • 1.命名空间 + 分组 + Data ID管理配置
          • 命名空间:按照环境隔离配置
          • 分组:按照业务类型来划分
          • Data ID:按照服务名,环境,文件后缀来配置
        • 2.应用实例
          • 1.需求分析
          • 2.设置命名空间(namespace)
            • 1.新建命名空间
            • 2.填写空间名和描述
            • 3.自动生成命名空间id
          • 3.分组设置(group)和 文件命名(data id)
            • 1.新建配置
            • 2.进行配置
            • 3.bootstrap.yml 配置服务注册以及配置中心
            • 4.application.yml 指定dev环境(对应于data id的 -dev)也可以在启动的时候通过命令指定开发环境
            • 5.pom.xml 引入配置中心和服务发现的依赖
            • 6.编写启动类 开启服务发现
            • 7.编写业务类,读取配置文件@RefreshScope实现配置信息自动刷新
            • 8.启动测试
        • 3.流程说明
          • 1.首先创建一个模块
          • 2.为这个模块在配置中心指定一个配置文件,按照命名空间 + 分组 + Data ID管理配置
          • 3.编写模块的bootstrap.yml 配置端口、服务注册以及配置中心
          • 4.编写application.yml 指定环境
          • 5.编写启动类,开启服务发现并执行测试
        • 4.关于使用Nacos配置中心,配置文件的读取顺序(后面的会覆盖前面的)

1.AP和CP

1.基本介绍

image-20240327202049559

2.说明

image-20240327202206270

2.Nacos配置中心实例

1.架构图

image-20240327203108046

2.在Nacos Server加入配置
1.配置列表,加号

image-20240327203343601

2.加入配置
  • 这里的配置文件名需要跟application name一致(-dev前面的部分)

image-20240327203754183

3.点击发布,然后返回

image-20240327203906059

4.还可以编辑

image-20240327203924073

image-20240327203931321

3. 创建 Nacos 配置客户端模块获取配置中心信息
1.创建子模块 e-commerce-nacos-config-client5000

image-20240327204123547

2.pom.xml引入配置中心依赖
    <dependencies><!-- 引入nacos的配置中心依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--引入nacos的服务发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency><!-- springboot web starter 用来监听端口--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 如果在子工程/模块指定了 version,则以指定为准 --></dependency><!--1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息等2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. --><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 公共模块的jar包 --><dependency><groupId>org.example</groupId><artifactId>e_commerce_center-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
3.application.yml 指定当前为开发环境(对应于配置中心文件的-dev)
spring:profiles:active: dev # 指定当前环境为开发环境,对应于配置中心文件的-dev
4.bootstrap.yml(这个文件会在application.yml之前读取,也可作为配置文件) 配置服务注册和配置中心
  • 关于找到配置中心的文件的解释
    • localhost:8848可以找到配置中心
    • e-commerce-nacos-config-client + -dev可以找到配置文件的名字
    • yaml可以找到配置文件的后缀
server:port: 5000 # 配置服务端口spring:application:name: e-commerce-nacos-config-client # 配置服务的名称,这里的name需要参考nacos配置中心里配置文件的名字cloud:nacos:# encos服务注册discovery:server-addr: localhost:8848# 配置中心config:server-addr: localhost:8848 # 查找到配置中心file-extension: yaml # 文件后缀
5.编写启动类
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** Description:** @Author sun* @Create 2024/3/27 21:21* @Version 1.0*/
@SpringBootApplication
@EnableDiscoveryClient // 开启nacos服务发现 
public class NacosConfigClientApplication5000 {public static void main(String[] args) {SpringApplication.run(NacosConfigClientApplication5000.class, args);}
}
6.src/main/java/com/sun/springcloud/controller/NacosConfigController.java 编写业务类获取配置中心信息
package com.sun.springcloud.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** Description: 获取配置中心的数据** @Author sun* @Create 2024/3/27 21:27* @Version 1.0*/
@RestController
@Slf4j
public class NacosConfigController {/* 使用Value注解可以获取配置中心中对应于这个微服务集群的配置文件的信息,注意:如果获取不到信息,则微服务直接启动不了 */@Value("${config.ip}")private String ip;@Value("${config.name}")private String name;@GetMapping("/nacos/config/mes")public String getConfigIpAndName() {return "ip:" + ip + " name:" + name;}
}
7.测试
1.首先确保Nacos启动
2.启动这个模块,浏览器访问http://localhost:8848/nacos/查看注册信息

image-20240327214404987

3.浏览器访问http://localhost:5000/nacos/config/mes查看结果

image-20240327214516431

4.Nacos配置中心细节
1.关于@Value注解引用的包

image-20240327214653811

2.配置中心的文件不可以是yml,只能是yaml
3.在项目初始化时,如果无法从配置中心获取数据,项目是启动不了的
4.bootstrap.yml 的优先级高于 application.yml
5.application name必须与配置中心的配置文件的名字对应(-dev之前)
6.@RefreshScope是springcloud的原生注解,可以实现配置信息自动刷新

image-20240327215903215

演示

image-20240327220026347

image-20240327220058148

image-20240327220123558

3.Nacos配置隔离

1.命名空间 + 分组 + Data ID管理配置
命名空间:按照环境隔离配置
  • development
  • testing
  • production
分组:按照业务类型来划分
  • 用户模块
  • 订单模块
Data ID:按照服务名,环境,文件后缀来配置
  • 格式:[application-name]-[environment].[file-extension]
  • 示例:
    • user-service-dev.yml
    • order-service-prod.yml
2.应用实例
1.需求分析

要为开发环境用户模块的一个服务指定配置文件

2.设置命名空间(namespace)
1.新建命名空间

image-20240328113752771

2.填写空间名和描述

image-20240328114046118

3.自动生成命名空间id

image-20240328114106230

3.分组设置(group)和 文件命名(data id)
1.新建配置

image-20240328125946056

2.进行配置

image-20240328125858970

3.bootstrap.yml 配置服务注册以及配置中心

image-20240328130224577

server:port: 5000 # 配置服务端口spring:application:name: e-commerce-nacos-config-client # 配置服务的名称,这里的name需要参考nacos配置中心里配置文件的名字cloud:nacos:# nacos服务注册discovery:server-addr: localhost:8848 # nacos服务注册中心地址# 配置中心config:server-addr: localhost:8848 # 配置中心地址file-extension: yaml # 指定配置文件的格式group: user # 指定配置文件的分组namespace: 122114f8-b2eb-480a-9ef3-1f8d30446736 # 指定命名空间id
4.application.yml 指定dev环境(对应于data id的 -dev)也可以在启动的时候通过命令指定开发环境
spring:profiles:active: dev # 指定当前环境为开发环境
5.pom.xml 引入配置中心和服务发现的依赖
    <dependencies><!-- 引入nacos的配置中心依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--引入nacos的服务发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-nacos-discovery</artifactId></dependency><!-- springboot web starter 用来监听端口--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!-- 如果在子工程/模块指定了 version,则以指定为准 --></dependency><!--1. starter-actuator 是 springboot 程序的监控系统,可以实现健康检查,info 信息等2. 访问 http://localhost:10000/actuator 可以看到相关链接, 还可以做相关设置. --><!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 公共模块的jar包 --><dependency><groupId>org.example</groupId><artifactId>e_commerce_center-common-api</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
6.编写启动类 开启服务发现
package com.sun.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** Description:** @Author sun* @Create 2024/3/27 21:21* @Version 1.0*/
@SpringBootApplication
@EnableDiscoveryClient // 开启nacos服务发现
public class NacosConfigClientApplication5000 {public static void main(String[] args) {SpringApplication.run(NacosConfigClientApplication5000.class, args);}
}
7.编写业务类,读取配置文件@RefreshScope实现配置信息自动刷新
package com.sun.springcloud.controller;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.RestController;/*** Description: 获取配置中心的数据** @Author sun* @Create 2024/3/27 21:27* @Version 1.0*/
@RestController
@RefreshScope // 实现配置信息自动刷新
public class NacosConfigController {/* 使用Value注解可以获取配置中心中对应于这个微服务集群的配置文件的信息,注意:如果获取不到信息,则微服务直接启动不了 */@Value("${config.ip}")private String ip;@Value("${config.name}")private String name;@GetMapping("/nacos/config/mes")public String getConfigIpAndName() {return "ip:" + ip + " name:" + name;}
}
8.启动测试

image-20240328131812655

image-20240328131818457

3.流程说明
1.首先创建一个模块
2.为这个模块在配置中心指定一个配置文件,按照命名空间 + 分组 + Data ID管理配置
3.编写模块的bootstrap.yml 配置端口、服务注册以及配置中心
4.编写application.yml 指定环境
5.编写启动类,开启服务发现并执行测试
4.关于使用Nacos配置中心,配置文件的读取顺序(后面的会覆盖前面的)
  • bootstrap.yml
  • application.yml
  • application-prod.yml(还可以是-test,-dev)
  • 配置中心文件
  • 启动时命令行指定配置

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

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

相关文章

flutter生成二维码并截图保存到图库

引入库&#xff1a;flutter_screenutil、image_gallery_saver、qr_flutter弹窗布局 import dart:async; import dart:typed_data; import package/generated/l10n.dart; import package:jade/configs/PathConfig.dart; import package:jade/utils/ImageWaterMarkUtil.dart; im…

Linux中常用命令(文件、目录和文件压缩)及功能示例

一、Linux关于文件与目录的常用命令及其功能示例 命令: ls 全名: List (列表) 常用选项: -l: 详细列表格式&#xff0c;显示详细信息。-a: 显示所有文件&#xff0c;包括隐藏文件。 功能: 列出目录内容。 示例: ls -la /home 此命令以详细格式列出/home目录中的所有文件&#x…

杂货铺 | 使用 Github Pages 和 Hexo 搭建自己的独立博客

文章目录 &#x1f4da;Step1&#xff1a;安装Node.js和Git&#x1f4da;Step2&#xff1a;安装并初始化配置Hexo&#x1f4da;Step3&#xff1a;本地查看效果&#x1f4da;Step4&#xff1a;将博客部署到Github Pages上&#x1f407;创建项目代码库&#x1f407;配置SSH密钥&a…

【Postman如何进行接口测试简单详细操作实例】

1、下载Postman postman下载地址&#xff1a;Download Postman | Get Started for Free 2、安装Postman (1)双击下载好的postman-setup.exe文件&#xff0c;进行安装postman工具 (2)安装完成后&#xff0c;在桌面找到并打开postman软件&#xff0c;输入邮箱和密码进行登录&a…

基于SSM大学生健康管理系统的设计与实现

基于SSM大学生健康管理系统的设计与实现 获取源码——》哔站搜&#xff1a;计算机专业毕设大全 获取源码——》哔站搜&#xff1a;计算机专业毕设大全 源码获取——》可以私信

IntelliJ IDEA 2023 for Mac 好用的Java开发工具

IntelliJ IDEA 2023是一款由JetBrains开发的强大的集成开发环境&#xff08;IDE&#xff09;软件&#xff0c;适用于多个编程语言。它旨在提高开发人员的生产力和代码质量&#xff0c;具有以下多种特色功能&#xff1a; 软件下载&#xff1a;IntelliJ IDEA 2023 v2023.3.6中文激…

SQLite版本3中的文件锁定和并发(七)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;自己编译SQLite或将SQLite移植到新的操作系统&#xff08;六&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 正文&#xff1a; 1.0 SQLite 版本 3 中的文件锁定和并发 SQLite 版本 3.0.0 引入了新的锁…

RIP环境下的MGRE 综合实验

实验题目及要求&#xff1a; 1.R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有IP地址 2.R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方; R2于R5之间使用PPP的chap认证&#xff0c;R5为主认证方&#xff1b; R3于R5之间使用HDLC封装。 3.R1/…

【JavaSE】类和对象详解(上)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 类和对象 类的组成 对类的理解 成员变量的访问和类方法的调用 this 抛出一个问题 this的作用 初始化成员变量 未初始化的成员变量 代码举例 就地初始化 构…

深入理解数据结构(3):栈和队列详解

文章主题&#xff1a;顺序表和链表详解&#x1f331;所属专栏&#xff1a;深入理解数据结构&#x1f4d8;作者简介&#xff1a;更新有关深入理解数据结构知识的博主一枚&#xff0c;记录分享自己对数据结构的深入解读。&#x1f604;个人主页&#xff1a;[₽]的个人主页&#x…

【研发日记】Matlab/Simulink开箱报告(十一)——Requirements Toolbox

目录 前言 Requirements Toolbox 编写需求 需求联接设计 需求跟踪开发进度 追溯性矩阵 分析和应用 总结 前言 见《开箱报告&#xff0c;Simulink Toolbox库模块使用指南&#xff08;六&#xff09;——S-Fuction模块&#xff08;TLC&#xff09;》 见《开箱报告&#x…

25Ramdisk 启动模式简介

Ramdisk 启动模式简介 ramdisk是一种虚拟磁盘技术,我们的PE系统几乎都是使用ramdisk方式从计算机启动的.那么,ramdisk有哪些特点呢? Ramdisk 将内存虚拟为一个磁盘 Ramdisk技术会将你的一部分内存虚拟成一块磁盘分区.使用U盘启动pe系统时,打开pe系统里的文件资源管理器,你会看…

实验三智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 请编写下方商品列表页面&#xff0c;展示商品名称和价格&#xff1b; 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; Index.WXML <view class"shop" wx:for"{{10}}"> <vie…

vue3全局控制Element plus所有组件的文字大小

项目框架vue-右上角有控制全文的文字大小 实现&#xff1a; 只能控制element组件的文字及输入框等大小变化&#xff0c;如果是自行添加div,text, span之类的控制不了。 配置流程 APP.vue 使用element的provide&#xff0c;包含app <el-config-provider :locale"loca…

JavaSE:继承和多态(下篇)

目录 一、前言 二、多态 &#xff08;一&#xff09;多态的概念 &#xff08;二&#xff09;多态实现条件 &#xff08;三&#xff09;多态的优缺点 三、重写 &#xff08;一&#xff09;重写的概念 &#xff08;二&#xff09;重写的规则 &#xff08;三&#xff09;重…

2024年京东云主机租用价格_京东云服务器优惠价格表

2024年京东云服务器优惠价格表&#xff0c;轻量云主机优惠价格5.8元1个月、轻量云主机2C2G3M价格50元一年、196元三年&#xff0c;2C4G5M轻量云主机165元一年&#xff0c;4核8G5M云主机880元一年&#xff0c;游戏联机服务器4C16G配置26元1个月、4C32G价格65元1个月、8核32G费用…

Sentinel入门流控编码方式

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流…

安科瑞路灯安全用电云平台解决方案【电不起火、电不伤人】

背景介绍 近年来 &#xff0c;随着城市规模的不断扩大 &#xff0c;路灯事业蓬勃发展。但有的地方因为观念、技术、管理等方面不完善 &#xff0c;由此引发了一系列安全问题。路灯点多面广 &#xff0c;一旦漏电就极容易造成严重的人身安全事故。不仅给受害者家庭带来痛苦 &am…

【Docker笔记02】【常用软件安装】

一、前言 本系列是根据 B 站 尚硅谷 Docker 视频 学习记录笔记。因为没有视频课件&#xff0c;部分内容摘自 https://www.yuque.com/tmfl/cloud/dketq0。 本系列仅为自身学习笔记记录使用&#xff0c;记录存在偏差&#xff0c;推荐阅读原视频内容或本文参考笔记。 本文主要介…

输出1到10的阶乘--C语言

#include<stdio.h> int fac(int n){if(n<1){return 1;}elsereturn fac(n-1)*n; } int main(){int i, result;for(i1;i<10;i){resultfac(i);printf("%d!%d\n",i,result);}} 输出结果&#xff1a;