springboot系列教程(三十一):springboot整合Nacos组件,环境搭建和入门案例详解
一、Nacos基础简介
1、概念简介
Nacos 是构建以“服务”为中心的现代应用架构,如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。敏捷构建、交付和管理微服务平台。
2、关键特性
- 动态配置服务
- 服务发现和服务健康监测
- 动态 DNS 服务
- 服务及其元数据管理
3、专业术语解释
- 命名空间
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。
- 配置集
一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。
- 配置集 ID
Nacos 中的某个配置集的ID。配置集ID是组织划分配置的维度之一。DataID通常用于组织划分系统的配置集。
- 配置分组
Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串对配置集进行(Group)分组,从而区分 Data ID 相同的配置集。
- 配置快照
Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。
- 服务注册
存储服务实例和服务负载均衡策略的数据库。
- 服务发现
使用服务名对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。
- 元数据
Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略等。
4、Nacos生态圈
Nacos 无缝支持一些主流的开源框架生态:
- Spring Cloud 微服务框架 ;
- Dubbo RPC框架 ;
- Kubernetes 容器应用 ;
二、Nacos环境搭建
1、环境版本
这里在Windos环境下搭建Nacos单个服务。
- Nacos版本:官方推荐的稳定版本为1.1.4。
- 基础环境:JDK 1.8+;Maven 3.2.x
2、环境包下载
这里直接下载打包好的文件,也可以下载源码自己打包。
https://github.com/alibaba/nacos/releases
下载文件:nacos-server-1.1.4.zip
3、启动环境
- 启动文件地址:
nacos\bin
- 启动文件:
startup.cmd
- 关闭文件:
shutdown.cmd
启动后登陆,账户密码默认:nacos/nacos ;首页效果如下:
三、整合SpringBoot2
注意:版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
1、新建配置
2、核心依赖
<!-- Nacos 组件依赖 -->
<dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-discovery-spring-boot-starter</artifactId><version>0.2.3</version>
</dependency>
<dependency><groupId>com.alibaba.boot</groupId><artifactId>nacos-config-spring-boot-starter</artifactId><version>0.2.3</version>
</dependency>
3、Yml配置文件
这里把项目作为服务注册到Nacos中。
nacos:config:server-addr: 127.0.0.1:8848discovery:server-addr: 127.0.0.1:8848
4、启动类配置
启动类关联配置中心的dataId标识。
@EnableSwagger2
@SpringBootApplication
@NacosPropertySource(dataId = "WARE_ID", autoRefreshed = true)
public class Application7017 {public static void main(String[] args) {SpringApplication.run(Application7017.class,args) ;}
}
5、核心配置类
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
@Configuration
public class NacosConfig {@Value("${server.port}")private int serverPort;@Value("${spring.application.name}")private String applicationName;@NacosInjectedprivate NamingService namingService;@PostConstructpublic void registerInstance() throws NacosException {namingService.registerInstance(applicationName, "127.0.0.1", serverPort);}
}
启动成功后查询服务列表:
6、基础API用例
这里演示两个基础用法:上述步骤1的配置内容读取,步骤4的服务列表读取。基于swagger2管理测试接口。
@Api("Nacos接口管理")
@RestController
@RequestMapping("/nacos")
public class NacosController {@NacosValue(value = "${MyName:null}", autoRefreshed = true)private String myName;@NacosValue(value = "${project:null}", autoRefreshed = true)private String project;@ApiOperation(value="查询配置信息")@GetMapping(value = "/info")public String info () {return myName+":"+project;}@NacosInjectedprivate NamingService namingService;@ApiOperation(value="查询服务列表")@GetMapping(value = "/getServerList")public List<Instance> getServerList (@RequestParam String serviceName) {try {return namingService.getAllInstances(serviceName) ;} catch (Exception e){e.printStackTrace();}return null ;}
}
相关文章:

springboot系列教程(三十一):springboot整合Nacos组件,环境搭建和入门案例详解
一、Nacos基础简介 1、概念简介 Nacos 是构建以“服务”为中心的现代应用架构,如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管…...

Traefik系列
一、入门Traefik系列——基础简介 官方文档 https://doc.traefik.io/traefik/[1] 简介 Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Re…...
【力扣】3128. 直角三角形 JAVA
一、题目描述 给你一个二维 boolean 矩阵 grid 。 请你返回使用 grid 中的 3 个元素可以构建的 直角三角形 数目,且满足 3 个元素值 都 为 1 。 注意: 如果 grid 中 3 个元素满足:一个元素与另一个元素在 同一行,同时与第三个元素…...
如何全面提升企业安全意识
引言 在当今数字化和信息化的时代,网络安全已成为企业运营不可忽视的核心问题。员工的安全意识直接关系到企业的数据安全和整体网络防护能力。即使企业采用了先进的安全技术,如果员工缺乏足够的安全意识,仍然容易成为攻击者的突破口。本文将…...
全球支持与无界服务:跨越地域的数据采集与分析
在当今企业运营中,IT 监控系统的全球支持和无界服务变得至关重要。随着企业业务的全球化扩展,传统的监控工具往往因地域限制而无法满足全球统一监控的需求。观测云通过其全球部署的数据采集点和多语言支持,确保了无论数据产生于何处ÿ…...

Java面试八股之简述spring boot的目录结构
简述spring boot的目录结构 Spring Boot 项目遵循标准的 Maven 或 Gradle 项目布局,并且有一些约定的目录用于组织不同的项目组件。下面是一个典型的 Spring Boot 项目目录结构: src/main/java:包含所有的 Java 源代码,通常按包组…...
python == 与 is区别
刷到一个面试题 python中 与 is 的区别 根据以往的经验,这个问题应该考察的是运算符根据地址 还是值进行比较的 s1 [a] s2 [a] s3 s1 print(s1 s2) # True 值相等 print(s1 s3) # True 值相等 print(s1 is s2) # False 值相等,引用地址不相…...

STM32学习笔记1---LED,蜂鸣器
目录 GPIO LED 蜂鸣器 RCC外设 GPIO外设 总概 操作STM32的GPIO 代码 LED闪烁 LED流水灯 蜂鸣器! 连接方式 GPIO GPIO输出:向外驱动控制 GPIO输入:读取,捕获(信息)(控制)…...
动手学强化学习 第 15 章 模仿学习 训练代码
基于 https://github.com/boyu-ai/Hands-on-RL/blob/main/%E7%AC%AC15%E7%AB%A0-%E6%A8%A1%E4%BB%BF%E5%AD%A6%E4%B9%A0.ipynb 理论 模仿学习 修改了警告和报错 运行环境 Debian GNU/Linux 12 Python 3.9.19 torch 2.0.1 gym 0.26.2 运行代码 #!/usr/bin/env pythonimpor…...

第一阶段面试问题(前半部分)
1. 进程和线程的概念、区别以及什么时候用线程、什么时候用进程? (1)线程 线程是CPU任务调度的最小单元、是一个轻量级的进程 (2)进程 进程是操作系统资源分配的最小单元 进程是一个程序动态执行的过程,包…...

《数学教学通讯》是一本怎样的刊物?投稿难吗?
《数学教学通讯》是一本怎样的刊物?投稿难吗? 《数学教学通讯》是一本具有较高学术价值的教育类刊物。它创刊于 1979 年,由西南大学主管,西南大学数学与统计学院、重庆市数学学会主办,出版周期为旬刊。该刊物在国内外…...
<机器学习> K-means
K-means定义 K-means 是一种广泛使用的聚类算法,旨在将数据集中的点分组为 K 个簇(cluster),使得每个簇内的点尽可能相似,而不同簇的点尽可能不同。K-means 算法通过迭代的方式,逐步优化簇的分配和簇的中心…...

我们如何优化 Elasticsearch Serverless 中的刷新成本
作者:来自 Elastic Francisco Fernndez Castao, Henning Andersen 最近,我们推出了 Elastic Cloud Serverless 产品,旨在提供在云中运行搜索工作负载的无缝体验。为了推出该产品,我们重新设计了 Elasticsearch,将存储与…...
MySQL半同步复制
1.MySQL主从复制模式 1.1异步复制 异步复制为 MySQL 默认的复制模式,指主库写 binlog、从库 I/O 线程读 binlog 并写入 relaylog、从库 SQL 线程重放事务这三步之间是异步的。 异步复制的主库不需要关心备库的状态,主库不保证事务被传输到从库…...
[一本通提高数位动态规划]数字游戏:取模数题解
[一本通提高数位动态规划]数字游戏:取模数题解 1前言2问题3状态的设置4数位dp-part1预处理5数位dp-part2利用状态求解6代码7后记 1前言 本文为数字游戏:取模数的题解 需要读者对数位dp有基础的了解,建议先阅读 论数位dp–胎教级教学 B3883 […...
[Day 39] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
區塊鏈的安全性分析 區塊鏈技術已經成為現代數字經濟的一個重要組成部分,提供了去中心化、透明和不可篡改的數據存儲與交易系統。然而,隨著區塊鏈技術的廣泛應用,其安全性問題也日益受到關注。本篇文章將詳細探討區塊鏈技術的安全性…...

OpenStack入门体验
一、云计算概述 1.1什么是云计算 云计算(cloud computing)是一种基于网络的超级计算模式,基于用户的不同需求,提供所需的资源,包括计算资源、存储资源、网络资源等。云计算服务运行在若干台高性能物理服务器之上,提供每秒 10万亿次的运算能力…...

预测未来 | MATLAB实现RF随机森林多变量时间序列预测未来-预测新数据
预测未来 | MATLAB实现RF随机森林多变量时间序列预测未来-预测新数据 预测效果 基本介绍 随机森林属于 集成学习 中的 Bagging(Bootstrap AGgregation 的简称) 方法。如果用图来表示他们之间的关系如下: 随机森林是由很多决策树构成的,不同决策树之间没有关联。当我们进行…...

iOS 系统提供的媒体资源选择器(UIImagePickerController)
简介 图片或者视频的选择功能几乎是每个APP必不可少的,UIImagePickerController 是 iOS 系统提供的一个方便的媒体选择器,允许用户从照片库中选择图片或视频,或者使用相机拍摄新照片和视频。 它的页面简单易用,代码稳定可靠&…...

电脑如何扩展硬盘分区?告别空间不足困扰
在数字化时代,电脑硬盘的存储空间显得愈发重要。随着个人文件、应用程序和系统更新的不断累积,原有的硬盘分区可能很快就会被填满。为了解决这个问题,扩展硬盘分区成为了一个非常实用的方法。那么,电脑如何扩展硬盘分区呢…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...