SpringCloudAlibaba之Nacos——详细讲解

目录

一、SpringCloudAlibaba简介

 1. spring cloud alibaba 特点

 2.springcloud 组件

 二、环境搭建

1.构建项目并引入依赖

三、Nacos

1.什么是Nacos

2.安装Nacos

 3.启动安装服务

 4.访问nacos的web服务管理界面

 四、开发服务注册到nacos

1.创建项目并引入依赖

2.配置注册地址

 3. 加入启动服务注册注解 [注意:][新版本之后这步可以省略不写]

 4.查看nacos的服务列表

五、使用nacos作为配置中心

1.从nacos获取配置

1.创建项目并引入nacons配置中心依赖

2.配置配置中心地址

3.在nacos中创建配置

​编辑​编辑4.编写控制器测试配置读取情况

5.DataId

 6.实现自动配置刷新

7.命名空间

1.命名空间(namespace)

 2.创建其他命名空间

 3.在配置列表查看空间

 4.在指定空间下载创建配置文件

 5.项目中使用命名空间指定配置

6.配置分组

1.配置分组(group)

 2.创建分组

​编辑​编辑3.读取不同分组的配置


一、SpringCloudAlibaba简介

Spring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop your applications using Spring Cloud.

  • spring cloud 用来解决微服务系统中(分布式系统)解决方案

  • spring cloud alibaba 用来解决微服务系统中解决方案

With Spring Cloud Alibaba, you only need to add some annotations and a small amount of configurations to connect Spring Cloud applications to the distributed solutions of Alibaba, and build a distributed application system with Alibaba middleware.

原文翻译
https://spring.io/projects/spring-cloud-alibaba
阿里云为分布式应用开发提供了一站式解决方案。它包含了开发分布式应用程序所需的所有组件,使您可以轻松地使用springcloud开发应用程序。
有了阿里云,你只需要添加一些注解和少量的配置,就可以将Spring云应用连接到阿里的分布式解决方案上,用阿里中间件搭建一个分布式应用系统。

 1. spring cloud alibaba 特点


a.服务降级和流量控制            sentinel        替换  hystrix
b.服务注册与发现                  nacos           替换  eureka  consul
c.分布式配置& 事件驱动消息总线   nacos     替换 config & bus
d.分布式事务&dubbo            seta

 2.springcloud 组件

服务注册与发现组件   eureka  consul                     nacos
服务间通信组件      restTemplate+ribbon,Openfeign      restTemplate+ribbon,Openfeign
服务降级和熔断      hystrix hystrix dashboard          sentinel
服务网关组件        gateway                            gateway
统一配置中心组件 消息总线组件   config  bus               nacos

 二、环境搭建

1.构建项目并引入依赖

<!--定义springcloud版本-->
<properties><spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version>
</properties><!--全局引入springcloudalibaba下载依赖地址,并不会引入依赖-->
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

三、Nacos

1.什么是Nacos

Name Service(服务注册与发现) & Configurations Services(统一配置中心)

https://nacos.io/zh-cn/index.html
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

 总结:Nacos就是微服务架构中服务注册中心以及统一配置中心,用来替换原来的(eureka,consul)以及config组件

2.安装Nacos

准备环境
1.64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。必须满足
2.64 bit JDK 1.8+;下载 & 配置。 必须满足
3.Maven 3.2.x+;下载 & 配置。

下载nacos 
https://github.com/alibaba/nacos/releases 

解压缩安装包到指定位置
[root@localhost ~]# tar -zxvf nacos-server-1.3.1.tar.gz 
- bin              启动nacos服务的脚本目录
- conf             nacos的配置文件目录
- target         nacos的启动依赖存放目录
- data          nacos启动成功后保存数据的目录

 3.启动安装服务

linux/unix/mac启动
    打开终端进入nacos的bin目录执行如下命令 
    ./startup.sh -m standalone

windows启动
    在 cmd中 
    执行 startup.cmd -m standalone 或者双击startup.cmd运行文件。

 4.访问nacos的web服务管理界面


- http://localhost:8848/nacos/
- 用户名 和 密码都是nacos

 四、开发服务注册到nacos

1.创建项目并引入依赖

<!--引入nacos client的依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.配置注册地址

server.port=8789 																												#指定当前服务端口
spring.application.name=nacosclient																			#指定服务名称
spring.cloud.nacos.server-addr=localhost:8848														#指定nacos服务地址
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} #指定注册中心地址							
management.endpoints.web.exposure.include=*														  #暴露所有web端点

 3. 加入启动服务注册注解 [注意:][新版本之后这步可以省略不写]

 4.查看nacos的服务列表

 

五、使用nacos作为配置中心

1.从nacos获取配置

1.创建项目并引入nacons配置中心依赖

<!--引入nacos client 依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency><!--引入配置中心依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.配置配置中心地址

spring.cloud.nacos.server-addr=localhost:8848								# 远程配置中心的地址
spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr}     # 去指定nacos地址读取配置
spring.cloud.nacos.config.group=DEFAULT_GROUP								# 读取配置的分组
spring.cloud.nacos.config.file-extension=properties					        # 指定读取文件后缀
spring.application.name=config												# 指定读取文件的前缀
spring.profiles.active=prod													# 指定读取文件的具体环境

 

3.在nacos中创建配置

4.编写控制器测试配置读取情况

@RestController
@Slf4j
public class HelloController {//注入配置@Value("${user.name}")private String username;@GetMapping("/hello/config")public String config(){log.info("用户名: [{}]",username);return username;}
}

5.DataId

# 1.DataId
- 用来读取远程配置中心的中具体配置文件其完整格式如下:
- ${prefix}-${spring.profile.active}.${file-extension}
    a. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
    
    b. spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
    
    c. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

 6.实现自动配置刷新

 1.自动刷新
- 默认情况下nacos已经实现了自动配置刷新功能,如果需要刷新配置直接在控制器中加入@RefreshScope注解即可

@RestController
@Slf4j
@RefreshScope
public class HelloController {//注入配置@Value("${user.name}")private String username;@GetMapping("/hello/config")public String config(){log.info("用户名: [{}]",username);return username;}
}

7.命名空间

1.命名空间(namespace)


- https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
- namespace命名空间是nacos针对于企业级开发设计用来针对于不同环境的区分,比如正在企业开发时有测试环境,生产环境,等其他环境,因此为了保证不同环境配置实现隔离,提出了namespace的概念,默认在nacos中存在一个public命名空间所有配置在没有指定命名空间时都在这个命名空间中获取配置,在实际开发时可以针对于不能环境创建不同的namespace空间。默认空间不能删除!

 2.创建其他命名空间


- 每个命名空间都有一个唯一id,这个id是读取配置时指定空间的唯一标识

 3.在配置列表查看空间

 4.在指定空间下载创建配置文件

 

 5.项目中使用命名空间指定配置

6.配置分组

1.配置分组(group)


- 配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个group为:STUDENT_GROUP。

 2.创建分组

3.读取不同分组的配置

下一篇来讲解nacos的持久化和高可用

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

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

相关文章

【JavaEE初阶】volatile 关键字、wait 和 notify

目录 一、volatile 关键字 1、volatile 能保证内存可见性 2、volatile 不保证原子性 二、wait 和 notify 1、wait()方法 2、notify()方法 3、notifyAll()方法 4、wait 和 sleep 的对比 一、volatile 关键字 1、volatile 能保证内存可见性 我们前面的线程安全文章中&…

Leetcode394. 字符串解码

Every day a Leetcode 题目来源&#xff1a;394. 字符串解码 解法1&#xff1a;栈 本题中可能出现括号嵌套的情况&#xff0c;比如 2[a2[bc]]&#xff0c;这种情况下我们可以先转化成 2[abcbc]&#xff0c;在转化成 abcbcabcbc。我们可以把字母、数字和括号看成是独立的 TO…

vs配置64位汇编

vs开发64位程序无法使用内联汇编&#xff0c;需要将汇编放到一个单独文件中编译链接。 步骤如下&#xff1a; 生成汇编代码。以asm.asm为例&#xff0c;以下是模板&#xff1a; ;64位汇编程序模板 (Template) ;声明一个ExitProcess函数 ExitProcess PROTO.data;在这里声明变量…

关于pyqt5与moviepy到打包的坑点

1,pyqt5 关于pyqt5 designer.exe 的使用主要就是了解pyqt5右侧菜单栏的功能使用 打包后的文件&#xff0c;需要继承改类&#xff0c;进行图形指令交互 关于pyqt5&#xff0c;要了解信号&#xff0c;和槽点的相互关系。 我在pyqt5中使用moviepy的时候&#xff0c;需要用到异步…

行测空间展开图类型题目通法

国考《行测》空间展开图类型题目通法 摘要 本文介绍一种判断哪一种立体图形可以由空间展开图组成的通用方法。 方法 1.将给定的展开图重构为容易识别的上边一个方块&#xff0c;下边一个方块&#xff0c;中间一个方块条的形式。 姑且称之为十字形吧。 之所以重构成这种形…

WordPress批量上传文章和自动发布文章的方法

专业介绍&#xff1a;WordPress批量上传文章技术解析 在现代数字时代&#xff0c;内容创作是网络存在的驱动力之一。对于博客作者、新闻编辑和内容管理员而言&#xff0c;高效地批量上传文章至WordPress平台是提高工作效率的一个关键方面。WordPress作为最受欢迎的内容管理系统…

能耗远程在线监测系统在工业节能提高效率

摘要&#xff1a;为保证企业实现节能减排目标&#xff0c;设计和使用远程在线监测系统势在必行。远程在线监测系统是基于传感器与网络技术的优势&#xff0c;在企业区域各个位置针对性安装传感器&#xff0c;对实时数据进行采集、编码传输到远程管理系统。远程管理系统对采集的…

Java核心知识点整理大全24-笔记

22. 数据结构 22.1.1. 栈&#xff08;stack&#xff09; 栈&#xff08;stack&#xff09;是限制插入和删除只能在一个位置上进行的表&#xff0c;该位置是表的末端&#xff0c;叫做栈顶 &#xff08;top&#xff09;。它是后进先出&#xff08;LIFO&#xff09;的。对栈的基…

Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/5)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

Windows系统搭建Appium 2 和 Appium Inspector 环境

前言 自 2022 年 1 月 1 日起&#xff0c;Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x&#xff0c;需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具&#xff0c;它带来了以下重要改进&#xff1a;  …

揭秘近期CSGO搬砖市场小幅回暖的真正原因

最近市场小幅度回暖&#xff0c;第一个原因则是到处都在说buff要开租赁了&#xff0c;市场要开始爆燃了。阿阳听到这些消息实在是绷不住了&#xff0c;出来给大家讲一下自己的看法&#xff0c;大家理性思考一下。 Buff出不出租赁跟市场燃不燃有一点关系吗&#xff1f;隔壁悠悠…

C++基础 -20- 基类覆盖父类

引用的方式覆盖 #include "iostream" using namespace std; class base { public:base() {}base(int a, int b) : a(a), b(b){}int a;int b; }; class step1 : public ::base { public:step1() {} };int main() {step1 rlxy;rlxy.a 100;rlxy.b 200;cout <<…