当前位置: 首页 > news >正文

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 是构建以“服务”为中心的现代应用架构&#xff0c;如微服务范式、云原生范式等服务基础设施。聚焦于发现、配置和管理微服务。Nacos提供一组简单易用的特性集&#xff0c;帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管…...

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 个元素可以构建的 直角三角形 数目&#xff0c;且满足 3 个元素值 都 为 1 。 注意&#xff1a; 如果 grid 中 3 个元素满足&#xff1a;一个元素与另一个元素在 同一行&#xff0c;同时与第三个元素…...

如何全面提升企业安全意识

引言 在当今数字化和信息化的时代&#xff0c;网络安全已成为企业运营不可忽视的核心问题。员工的安全意识直接关系到企业的数据安全和整体网络防护能力。即使企业采用了先进的安全技术&#xff0c;如果员工缺乏足够的安全意识&#xff0c;仍然容易成为攻击者的突破口。本文将…...

全球支持与无界服务:跨越地域的数据采集与分析

在当今企业运营中&#xff0c;IT 监控系统的全球支持和无界服务变得至关重要。随着企业业务的全球化扩展&#xff0c;传统的监控工具往往因地域限制而无法满足全球统一监控的需求。观测云通过其全球部署的数据采集点和多语言支持&#xff0c;确保了无论数据产生于何处&#xff…...

Java面试八股之简述spring boot的目录结构

简述spring boot的目录结构 Spring Boot 项目遵循标准的 Maven 或 Gradle 项目布局&#xff0c;并且有一些约定的目录用于组织不同的项目组件。下面是一个典型的 Spring Boot 项目目录结构&#xff1a; src/main/java&#xff1a;包含所有的 Java 源代码&#xff0c;通常按包组…...

python == 与 is区别

刷到一个面试题 python中 与 is 的区别 根据以往的经验&#xff0c;这个问题应该考察的是运算符根据地址 还是值进行比较的 s1 [a] s2 [a] s3 s1 print(s1 s2) # True 值相等 print(s1 s3) # True 值相等 print(s1 is s2) # False 值相等&#xff0c;引用地址不相…...

STM32学习笔记1---LED,蜂鸣器

目录 GPIO LED 蜂鸣器 RCC外设 GPIO外设 总概 操作STM32的GPIO 代码 LED闪烁 LED流水灯 蜂鸣器&#xff01; 连接方式 GPIO GPIO输出&#xff1a;向外驱动控制 GPIO输入&#xff1a;读取&#xff0c;捕获&#xff08;信息&#xff09;&#xff08;控制&#xff09…...

动手学强化学习 第 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. 进程和线程的概念、区别以及什么时候用线程、什么时候用进程&#xff1f; &#xff08;1&#xff09;线程 线程是CPU任务调度的最小单元、是一个轻量级的进程 &#xff08;2&#xff09;进程 进程是操作系统资源分配的最小单元 进程是一个程序动态执行的过程&#xff0c;包…...

《数学教学通讯》是一本怎样的刊物?投稿难吗?

《数学教学通讯》是一本怎样的刊物&#xff1f;投稿难吗&#xff1f; 《数学教学通讯》是一本具有较高学术价值的教育类刊物。它创刊于 1979 年&#xff0c;由西南大学主管&#xff0c;西南大学数学与统计学院、重庆市数学学会主办&#xff0c;出版周期为旬刊。该刊物在国内外…...

<机器学习> K-means

K-means定义 K-means 是一种广泛使用的聚类算法&#xff0c;旨在将数据集中的点分组为 K 个簇&#xff08;cluster&#xff09;&#xff0c;使得每个簇内的点尽可能相似&#xff0c;而不同簇的点尽可能不同。K-means 算法通过迭代的方式&#xff0c;逐步优化簇的分配和簇的中心…...

我们如何优化 Elasticsearch Serverless 中的刷新成本

作者&#xff1a;来自 Elastic Francisco Fernndez Castao, Henning Andersen 最近&#xff0c;我们推出了 Elastic Cloud Serverless 产品&#xff0c;旨在提供在云中运行搜索工作负载的无缝体验。为了推出该产品&#xff0c;我们重新设计了 Elasticsearch&#xff0c;将存储与…...

MySQL半同步复制

1.MySQL主从复制模式 1.1异步复制 异步复制为 MySQL 默认的复制模式&#xff0c;指主库写 binlog、从库 I/O 线程读 binlog 并写入 relaylog、从库 SQL 线程重放事务这三步之间是异步的。 异步复制的主库不需要关心备库的状态&#xff0c;主库不保证事务被传输到从库&#xf…...

[一本通提高数位动态规划]数字游戏:取模数题解

[一本通提高数位动态规划]数字游戏&#xff1a;取模数题解 1前言2问题3状态的设置4数位dp-part1预处理5数位dp-part2利用状态求解6代码7后记 1前言 本文为数字游戏&#xff1a;取模数的题解 需要读者对数位dp有基础的了解&#xff0c;建议先阅读 论数位dp–胎教级教学 B3883 […...

[Day 39] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

區塊鏈的安全性分析 區塊鏈技術已經成為現代數字經濟的一個重要組成部分&#xff0c;提供了去中心化、透明和不可篡改的數據存儲與交易系統。然而&#xff0c;隨著區塊鏈技術的廣泛應用&#xff0c;其安全性問題也日益受到關注。本篇文章將詳細探討區塊鏈技術的安全性&#xf…...

OpenStack入门体验

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

预测未来 | MATLAB实现RF随机森林多变量时间序列预测未来-预测新数据

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

iOS 系统提供的媒体资源选择器(UIImagePickerController)

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

电脑如何扩展硬盘分区?告别空间不足困扰

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

在 Docker 中,如何实现容器之间的通信?

在 Docker 中&#xff0c;容器之间的通信主要通过 Docker 网络&#xff08;Docker Networking&#xff09; 实现。Docker 提供了多种网络驱动和机制&#xff0c;允许容器安全、高效地相互通信。以下是实现容器通信的核心方法和最佳实践&#xff1a;一、核心网络模式 1. Bridge …...

工业视觉代码交付总被退回?(甲方验收必查的6项硬性指标:实时性≤35ms、重复精度±0.015px、抗电磁干扰日志完备性)

第一章&#xff1a;工业视觉代码交付失败的典型归因分析工业视觉系统在产线部署阶段频繁遭遇代码交付失败&#xff0c;其根本原因往往并非算法性能不足&#xff0c;而是工程化落地环节存在系统性疏漏。以下从环境适配、数据闭环、接口契约三个维度展开典型归因。运行时环境不一…...

基于MATLAB的数字图像处理系统:预处理、特征提取与语义分割全流程实现

数字图像处理系统&#xff08;基于matlab&#xff09; 此系统包括预处理&#xff0c;特征提取&#xff0c;语义分割 使用机器学习算法knn和svm 预处理包括线性灰度级变化&#xff0c;指数灰度级变化&#xff0c;直方图均衡化&#xff0c;高斯滤波&#xff0c;中值滤波&#xff…...

使用AI大大提升了学习代码的效率

最近看到一个观点&#xff0c;说AI的发展导致代码越来越不值钱了&#xff0c;AI降低了我们学习的门槛&#xff0c;大大提升了学习效率。好像很多程序都可以一个人一天上架一款产品。或许有夸张成分&#xff0c;但像我们普通人都体验到了AI的方便&#xff0c;比如在项目开发的过…...

Jable视频下载终极指南:3步免费保存你喜欢的视频内容

Jable视频下载终极指南&#xff1a;3步免费保存你喜欢的视频内容 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download jable-download是一款专为Jable.tv视频平台设计的免费下载工具&#xff0c;通过Ch…...

制造业生产管理应用搭建指南:轻流无代码平台完整实施流程——生产效率提升 300% 方法论

制造业生产管理应用搭建指南&#xff1a;轻流无代码平台完整实施流程——生产效率提升 300% 方法论制造业生产管理应用搭建指南&#xff1a;轻流无代码平台完整实施流程——生产效率提升 300% 方法论引言&#xff1a;背景与重要性工信部《智能制造发展规划》明确提出&#xff0…...

高效解决多设备滚动冲突难题的Scroll Reverser工具

高效解决多设备滚动冲突难题的Scroll Reverser工具 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser Scroll Reverser是一款专为macOS用户设计的开源效率工具&#xff0c;它能够为…...

3大核心功能:让iOS推送调试效率提升10倍的SmartPush工具全解析

3大核心功能&#xff1a;让iOS推送调试效率提升10倍的SmartPush工具全解析 【免费下载链接】SmartPush SmartPush,一款iOS苹果远程推送测试程序,Mac OS下的APNS工具APP,iOS Push Notification Debug App 项目地址: https://gitcode.com/gh_mirrors/smar/SmartPush 一、问…...

ESLyric歌词源高效配置与避坑指南:Foobar2000用户进阶教程

ESLyric歌词源高效配置与避坑指南&#xff1a;Foobar2000用户进阶教程 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource ESLyric-LyricsSource是Foobar2000…...

计算机毕业设计springboot在线病患管理系统 基于SpringBoot的智慧医疗就诊服务平台设计与实现 基于Java Web的医院数字化门诊住院一体化系统开发

计算机毕业设计springboot在线病患管理系统79jbb1co &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着我国医疗资源分布不均、基层医疗服务能力不足等问题的日益凸显&#xff…...