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.mzph.cn/news/178418.shtml

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

相关文章

【Linux】了解进程的基础知识

进程 1. 进程的概念1.1 进程的理解1.2 Linux下的进程1.3 查看进程属性1.4 getpid和getppid 2. 创建进程3. 进程状态4. 进程优先级5. 进程切换6. 环境变量7. 本地变量与内建命令 1. 进程的概念 一个已经加载到内存中的程序&#xff0c;叫做进程&#xff08;也叫任务&#xff09…

OWASP TOP 10 2021 对应的CWE缺陷(官方)

在OWASP TOP 10 2021年发布TOP 10中&#xff0c;比较好的给出了每类漏洞类型对应的CWE编号&#xff0c;这对于开发应用安全的厂商来说无疑是一件好事。 不过大家应该也可以看到&#xff0c;A1-A10都是给出了几种CWE&#xff0c;但是官方并没有给出比较全面的的对应关系&#xf…

Python+Selenium WebUI自动化框架 -- 基础操作封装

前言&#xff1a; 封装Selenium基本操作&#xff0c;让所有页面操作一键调用&#xff0c;让UI自动化框架脱离高成本、低效率时代&#xff0c;将用例的重用性贯彻到极致&#xff0c;让烦人的PO模型变得无所谓&#xff0c;让一个测试小白都能编写并实现自动化。 知识储备前提&a…

ethtool -T显示ptp过滤器信息源码分析

ptp过滤器 新设备使用ethtool -T显示ptp过滤器信息&#xff1a; linux_cx7110:~# ethtool -T eth0 Time stamping parameters for eth0: Capabilities:hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)software-transmit (SOF_TIMESTAMPING_TX_SOFTWARE)hardware-r…

中小型公司如何搭建运维平台,rancher、kubersphere、rainbond

很多开发人员应该是了解过运维发布相关的平台或实际操作过应用发布&#xff0c;但又通常不是十分熟悉。在一个初创公司&#xff0c;或者没有成熟的运维发布平台的公司&#xff0c;如果让你来搭建一套发布平台&#xff0c;你应该如何去抉择呢&#xff1f; 这里我简单介绍几种。…

本地开启https,配置nodeJs服务

服务端和客户端各有一对公钥和私钥&#xff0c;使用公钥加密的数据只能用私钥解密&#xff0c;建立https传输之前&#xff0c;客户端和服务端互换公钥。客户端发送数据前使用服务端公钥加密&#xff0c;服务端接收到数据后使用私钥解密&#xff0c;反之亦如此。 1. 公钥私钥的…

【Linux】:信号在内核里的处理

信号的发送和保存 一.内核中的信号处理二.信号集操作函数1.一些信号函数2.sigprocmask3.sigpending4.写代码 三.信号在什么时候处理的四.再谈地址空间 一.内核中的信号处理 1.实际执行信号的处理动作称为信号递达(Delivery )2.信号从产生到递达之间的状态,称为信号未决(Pending…

『 Linux 』僵尸进程与孤儿进程

文章目录 &#x1f680;僵尸进程 - Z(zomble)&#x1f6f0;️ 僵尸状态与死亡状态的区别 &#x1f6f0;️&#x1f6f0;️ 僵尸状态的危害 &#x1f6f0;️ &#x1f680;孤儿进程&#x1f6f0;️ 为什么托孤 &#x1f6f0;️ &#x1f680;僵尸进程 - Z(zomble) 一个进程的创…

米贸搜| Youtube运营:免费涨粉的16个技巧

1、要求观众订阅你的频道 要求用户订阅你的频道无非是再简单不过的方法了&#xff0c;有时你需要做的只是一个及时的提醒而已。红色的订阅按钮通常很难被忽略&#xff0c;但是你可能还需要提醒用户点击订阅按钮旁边的“铃铛”图标&#xff0c;以打开消息提醒&#xff0c;以便在…

vue找依赖包的网址

https://www.npmjs.com/ 浅收藏一下

心大数据结构题型

选择题 2021 数据处理的单位&#xff1a;数据元素 矩阵压缩存储 2022 ①单链表头插法选择 ②矩阵压缩存储&#xff0c;行优先 ③删除链表节点的时间复杂度 ④稀疏矩阵存储 ⑤平衡二叉树时间复杂度 ⑥栈和队列的出队&#xff0c;问栈的大小至少多少 ⑦拓扑排序 ⑧参考书 360…

30.0/集合/ArrayList/LinkedList

目录 30.1什么是集合? 30.1.2为什么使用集合 30.1.3自己创建一个集合类 30.1.3 集合框架有哪些? 30.1.2使用ArrayList集合 30.2增加元素 30.3查询的方法 30.4删除 30.5 修改 30.6泛型 30.1什么是集合? 我们之前讲过数组&#xff0c;数组中它也可以存放多个元素。集合…

关于torch.backends.cudnn.benchmark = True

cuDNN 是英伟达专门为深度神经网络所开发出来的 GPU 加速库&#xff0c;针对卷积、池化等等常见操作做了非常多的底层优化&#xff0c;比一般的 GPU 程序要快很多。大多数主流深度学习框架都支持 cuDNN&#xff0c;PyTorch 自然也不例外。在使用 GPU 的时候&#xff0c;PyTorch…

Cenos7系统通过链接一键安装LAMP项目环境(linux,apache,mysql,php)

前言&#xff1a;嫌装环境麻烦&#xff0c;以下介绍自动安装环境的方法 一.环境配置 根据自己需要选择 操作系统&#xff1a;CenOS 7.x以上Web服务器&#xff1a;Apache 2.4数据库&#xff1a;MySQL 5.7开发框架&#xff1a;ThinkPHP 5.0&#xff08;PHP5.0以上&#xff09;…

CountDownLatch和CyclicBarrier源码详解

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、CountDownLatch和CyclicBarrier 二、CountDownLatch源码分析 三、CyclicBarrier源码分析 四、总结 前言 我现在有个场景:现在我有50个任务&…

【Web】NewStarCtf Week2 个人复现

目录 ①游戏高手 ②include 0。0 ③ez_sql ④Unserialize&#xff1f; ⑤Upload again! ⑥ R!!C!!E!! ①游戏高手 经典前端js小游戏 检索与分数相关的变量 控制台直接修改分数拿到flag ②include 0。0 禁了base64和rot13 尝试过包含/var/log/apache/access.log,ph…

Git 入门指南

什么是 Git&#xff1f; Git 的目前最流行的分布式版本控制软件&#xff0c;可以帮助我们高效敏捷的处理任何项目。 版本管理 要理解 Git 我们首先要理解版本管理。 版本管理就是开发过程中用于管理对文件、目录或者工程等内容的修改历史&#xff0c;可以让我们方便的查看历史…

java学习part20内部类

116-面向对象(高级)-类的成员之五&#xff1a;内部类_哔哩哔哩_bilibili 1.内部类

在Anaconda中用命令行安装环境以及安装包

一、下载Anaconda 下载地址 二、创建环境 1. 打开Anaconda命令行 2.创建环境 conda create -n 环境名称 python3.10(需要的python版本号) 3.激活环境 activate 环境名4.下载安装包 pip install 模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple5.下载torch 官网&…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1&#xff0c;字符编码(Character Encoding) 是一种将…