springboot系列教程(三十一):springboot整合Nacos组件,环境搭建和入门案例详解

news2024/9/20 0:06:58

一、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:8848
  discovery:
    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;
    @NacosInjected
    private NamingService namingService;
    @PostConstruct
    public 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;
    }

    @NacosInjected
    private 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 ;
    }
}

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

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

相关文章

MySQL高阶(九)——窗口函数

文章目录 MySQL高阶(九)——窗口函数特点语法结构窗口函数分类准备数据 序号函数聚合函数分布函数CUME_DIST&#xff08;累计分布值&#xff09;PERCENT_RANK &#xff08;等级值&#xff09; 前后函数LAG函数LEAD函数 头尾函数FIRST_VALUE和LAST_VALUENTH_VALUE(expr, n&#…

贪心(区间)

905. 区间选点 - AcWing题库 #include<bits/stdc.h> using namespace std; const int N1e510;struct Range {int l,r;bool operator <(const Range&m)const{return r<m.r;} }range[N];int main() {int n;cin>>n;for(int i0;i<n;i){cin>>range[…

汉诺塔(C++)

解决汉诺塔问题是程序递归思想最基本的体现&#xff0c;问题以及规则如下&#xff1a; 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上…

测评自养号与机刷:电商平台推广的深度解析与区别探讨

在电商平台上&#xff0c;产品和店铺的评价至关重要&#xff0c;许多买家在购买前都会仔细查看评论&#xff0c;比较同类产品的口碑&#xff0c;以便做出明智的选择。今天&#xff0c;我们将探讨测评自养号与机刷之间的区别。 测评一直是各大电商平台常用的推广手段&#xff0c…

心算项目攻略:最大化卡牌得分技巧

目录 题目描述代码逻辑原理总结解析&#xff1a;代码逻辑&#xff1a;示例场景&#xff1a;总结&#xff1a; 题目 选自力扣 心算项目的挑战比赛中&#xff0c;要求选手从 N 张卡牌中选出 cnt 张卡牌&#xff0c;若这 cnt 张卡牌数字总和为偶数&#xff0c;则选手成绩「有效」…

AI绘画工具推荐:Stable Diffusion的新境界

前言 在AI绘画的世界里&#xff0c;Stable Diffusion无疑是一颗璀璨的明星。然而&#xff0c;对于许多用户来说&#xff0c;切换不同的UI界面和管理众多模型是一项挑战。今天&#xff0c;我们为大家介绍一款革命性的工具——Stability Matrix&#xff0c;它将彻底改变你对Stabl…

JavaScript前端面试题——fetch

什么是fetch&#xff1f; fetch&#xff1a;fetch是浏览器内置的api&#xff0c;用于发送网络请求 ajax&axios&fetch的关系 ajax&#xff1a;ajax 是一种基于原生 JavaScript 的异步请求技术。它使用 XMLHttpRequest 对象来发送请求和接收响应。 axios&#xff1a;…

MP4标准格式深度解析

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

校园选课助手【1】-项目整体架构从此开始

项目背景 随着高校招生规模的不断扩大&#xff0c;学生选课需求日益增长。为提高选课效率&#xff0c;降低学生选课压力&#xff0c;本项目旨在开发一款校园选课助手软件。 项目目标:开发一款具有以下特点的校园选课助手软件&#xff1a; 易用性&#xff1a;界面简洁&#xff…

微信-公众号/订阅号推送消息(js版本)

1.登录或注册微信测试号 &#xff08;测试号的名称由官方自动生成&#xff0c;不能更改&#xff09; 微信测试号入口&#xff1a;微信公众平台 ​ 2.登录进去后会看到自己的appId和appsecret &#xff08;这两个参数都需填入代码中&#xff09; ​ 3.检查是否安装nodeJs…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-3-启动浏览器(详细教程)

软件测试微信群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 通过前边两篇文章跟随宏哥学习想必到这里已经将环境搭建好了&#xff0c;今天就在Java项目搭建环境中简单地实践一下&#xff1a; 启动两大浏览器。按市场份额来说&#xff0c…

[极客大挑战 2019]BuyFlag1

这个题目比较常规&#xff0c;算是我遇到的简单题&#xff0c;也是这段时间第一个独立解出的&#xff0c;有点小开心。 首先打开靶机&#xff0c;一个平平无奇的纳新页面&#xff0c;很容易找到 /pay.php 看一下pay.php 这里说了几个条件&#xff1a;需要100000000&#xff0c…

【iOS】copystrong原理+深浅拷贝+完全拷贝

Copy&Strong原理 Copy探究 在回答copy的各种问题前&#xff0c;我们需要先了解我们为什么要使用copy。 拷贝的目的 &#xff1a; 产生一个副本对象&#xff0c;跟源对象互不影响 修改了源对象&#xff0c;不会影响副本对象修改了副本对象&#xff0c;不会影响源对象 iOS…

量化方法怎么选?如何评估量化后的大模型LLM?

文章内容总结自&#xff1a;Evaluating Quantized Large Language Models&#xff08;https://arxiv.org/abs/2402.18158&#xff09; 如果想深入了解量化的基本概念和如何用代码实现请参考&#xff1a; Michael&#xff1a;用python代码深入浅出量化概念 &#xff08;https…

YOLOv10改进 | 注意力篇 | YOLOv10引入SpatialGroupEnhance注意力机制,并构建C2f_SGE

1. SGE介绍 1.1 摘要:卷积神经网络(CNN)通过收集语义子特征的层次和不同部分来生成复杂对象的特征表示。这些子特征通常可以以分组的形式分布在每层的特征向量中[43,32],代表各种语义实体。然而,这些子特征的激活通常在空间上受到相似模式和噪声背景的影响,从而导致错误…

虚拟机win server安装配置DNS服务器

准备工作 创建DNS服务器前将自己的网卡地址设置为静态IP&#xff0c;选择自己的网卡。因为本机作为DNS服务器所以将DNS服务器地址设为了自己的回环地址。 一、使用服务器管理安装 DNS 服务器 1、登录服务器后&#xff0c;服务器会默认启用“服务器管理”页面&#xff0c;选择…

提前批测开三面,已OC!

大家好&#xff0c;我是洋子 近期百度提前批已经开始有一段时间了&#xff0c;甚至已经有不少 25 届的同学 oc 了&#xff0c;这里分享一位已经顺利 oc 百度提前批测开岗位同学的三轮面试面经 整个三轮技术面试总体难度不高&#xff0c;但考察知识广度比较广&#xff0c;如果…

搭建 STM32 网关服务器的全流程:集成嵌入式 C++、TCP/IP 通信、Flash 存储及 JWT 认证(含代码示例)

引言 随着物联网&#xff08;IoT&#xff09;技术的快速发展&#xff0c;基于 STM32 的服务器&#xff08;类似网关&#xff09;在数据采集、设备控制等方面的应用越来越广泛。本文将介绍搭建一个基于 STM32 的服务器所需的技术栈&#xff0c;以及详细的搭建步骤和代码示例。 …

好的养宠空气净化器是智商税吗?好的养宠空气净化器用户体验

家里养了两只“超级掉毛怪”,家里的猫毛满天飞&#xff0c;衣服床餐具等到处都是&#xff01;感受一下40度高温的养猫人&#xff0c;给掉毛怪疏毛浮毛飘飘&#xff0c;逃不过的饮水机&#xff0c;各个角落&#xff0c;多猫拉臭传来的异味。 一、养猫需要解决的问题 掉毛&#…

Tsan-ThreadSanitizer之As if synchronized via sleep

最近在调试ffmpeg的时候&#xff0c;加入了tsan&#xff0c;结果出现了下面提示&#xff1a; 具体什么意思呢&#xff0c;找了很久找到了官方介绍&#xff1a; https://github.com/google/sanitizers/wiki/ThreadSanitizerReportFormat