Spring Cloud Alibaba学习笔记(十四)服务注册与配置中心Nacos

一个例子搞懂Nacos服务发现 Nacos服务发现 什么是服务发现 在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作来实现业务目标。这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,为了完成一次请求,消费方需要知道服务生产方的网络位置(IP地址和端口号)。 我们的代码可以通过读取配置文件的方式读取服务生产方网络位置,如下: 远程调用 SpringBoot怎么实现? 服务生产方 Service B是服务的生产方,暴露/service服务地址,实现代码如下: @SpringBootAppli 阅读详情

简介

Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,我们可以基于这套解决方案轻松的创建分布式应用程序。之前学习过服务注册和配置Spring Cloud Eureka和Config,今天来学习的主角是Nacos,那么换了服务注册与配置中心,借机也了解一下相关历史吧。

服务注册管理中心有很多解决方案,包括之前学习的Eureka,今天学习的Nacos,还有类似Zookeeper和Consul等等。Nacos是Alibaba开源的服务注册中心组件,内部孵化最早叫ConfigServer,Nacos是ConfigServer 的开源实现。2008年,阿里巴巴就开始服务化的进程,经过了十余年的积累,2018年7月,阿里巴巴高级技术专家许真恩发布了Nacos首个开源版本V0.1.0,Nacos开源的最新版本为1.2.1,项目地址为:https://github.com/alibaba/nacos/releases

Nacos生态

Nacos 卿¯å¾

如上图所示,Nacos比较强调融入其它开源生态,除了对自身体系比如Dubbo等支持外,还包括 Java 的微服务生态体系 Spring Cloud,K8S以及CNCF云原生生态体系等的支持。Nacos 可无缝支持 Spring Cloud,为 Spring Cloud 用户其提供更简便的配置中心和注册中心的解决方案,目前,也算是Spring Cloud的一分子。

Nacos的基本概念 

命名空间(Namespace) 

不同命名空间可以作为生产和开发环境的隔离。

配置(Configuration)

系统中一些配置信息可以注册到Nacos进行管理;
利用Nacos进行配置的动态发布。

配置管理(Configuration Management)

系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。

配置ID和配置分组(Data ID & Group)

配置ID作为配置的唯一标识;
配置分组内可以有多个配置ID,形成一个配置集。

服务名(Service)

注册服务的唯一标识。

服务注册中心(Service Registry)

存储服务实例和服务负载均衡策略的数据库。

服务发现(Service Discovery)

在计算机网络上,(通常使用服务名)对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。

服务分组(Service Group)

不同的服务可以归类到同一分组。

虚拟集群(Virtual Cluster)

同一个服务下的所有服务实例组成一个默认集群, 集群可以被进一步按需求划分,划分的单位可以是虚拟集群。

实例(Instance)

提供一个或多个服务的具有可访问网络地址(IP:Port)的进程。

权重(Weight)

实例级别的配置。权重为浮点数。权重越大,分配给该实例的流量越大。

健康检查(Health Check)

通过TCP/HTTP的方式检查服务下某实例的健康度,从而确定该实例是否能够提供服务,对于不健康的实例服务端则不会返回。

健康保护阈值(Protect Threshold)

为了防止因过多实例 (Instance) 不健康导致流量全部流向健康实例 (Instance) ,继而造成流量压力把健康 健康实例 (Instance) 压垮并形成雪崩效应,应将健康保护阈值定义为一个 0 到 1 之间的浮点数。当域名健康实例 (Instance) 占总服务实例 (Instance) 的比例小于该值时,无论实例 (Instance) 是否健康,都会将这个实例 (Instance) 返回给客户端。这样做虽然损失了一部分流量,但是保证了集群的剩余健康实例 (Instance) 能正常工作。

部署Nacos Server

在https://github.com/alibaba/nacos/releases中下载打包好的jar文件,这里我下载的是1.2.0版本。当然,你也可以去clone源代码到本地,然后自己build

解压完之后,打开CMD命令行,转到bin目录文件夹下运行命令

startup.cmd -m standalone

 端口默认是8848,访问路径/nacos

打开页面测试,如下图,配置成功

Nacos的服务注册

为了方便,我们基于上一节学习Sleuth的代码进行改造,这个工程里,正好有一个服务提供者和一个调用者,整体的套路跟Eureka基本类似,比较简单,首先引入nacos依赖包。

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>2.1.0.RELEASE</version>
</dependency>

修改两个工程的配置文件,注册到Nacos

server:
  port: 9001
spring:
  application:
    name: service-provider-a
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

修改启动类,加入@EnableDiscoveryClient

启动两个服务,如下图,去Nacos控制台查看服务注册情况

Nacos作为配置中心 

引入配置中心的依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

 然后修改两个服务的配置文件,变成bootstrap.yml,然后把配置中心也指向我们Nacos server

server:
  port: 9001
spring:
  application:
    name: service-provider-a
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848


然后我们改代码,从配置中心取配置的值

package org.dothwinds.serviceprovider;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@RestController
@EnableDiscoveryClient
public class SpringCloudStudyServiceProviderApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringCloudStudyServiceProviderApplication.class, args);
	}

	@Autowired
	private RestTemplate restTemplate;

	@Bean
	public RestTemplate getRestTemplate(){
		return new RestTemplate();
	}

	@Value(value = "${user.name}")
	private String name;

	@GetMapping("/sayHi")
	public String sayHi() {
		return "hi," + name + ", welcome to my world ";
	}

}

然后在Nacos Server里增加配置值,这里需要说明data-id就是我们的service服务名,然后加上配置文件的文件后缀名来命名,进入Nacos控制台,点击配置管理-》配置列表右侧的加号,新建配置值如下: 

 

建完之后,启动服务测试,如下图:

 

服务与配置匹配关系 

spring:
  application:
    name: service-provider-a
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        prefix: nacos-provider
  profiles:
    active: dev
server
  port: 9001

如上图的配置,配置了Nacos Config Server的地址,配置的扩展名是ymal(目前仅支持ymal和properties)。主要需要注意的是,上面的配置是和Nacos中的DataId的格式是对应的,完整格式如下: 

${prefix}-${spring.profile.active}.${file-extension}
  • prefix默认值就是spring.application.name的值,如这里指定prefix的值,那么就是prefix的值
  • spring.profile.active如果不指定,那么需要把前面的“-”一并去掉
  • file-extension是扩展名的值,目前仅支持yaml和properties。但是在Nacos控制台配置的时候,一定要写后缀名,没有特殊指定就是.properties

参考资料:

https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html

代码:

比较简单,自己动手写一下吧

 

Spring-Cloud-Alibaba(一):Nacos服务注册与配置中心 nacos用来做服务注册中心以及配置中心,相当于springCloud的eureka或者zookeeper服务注册中心,以及spring cloud config配置中心。 nacos安装搭建省略,自行百度! (一)创建一个maven父工程,引入spring-cloud以及spring-cloud-alibaba版本依赖 <dependencies> <!-- h... 阅读详情

相关推荐

SpringCloud Alibaba入门简介和Nacos服务注册和配置中心

前面已经把spring cloud相关的组件都一一学了个遍,现在有点小佩服自己…本来计划今天周末好好出去玩一圈,天气太热了,39了都,还是在办公室学习吧,进行下面的springCloud Alibaba 学习吧…不废话了赶快进入正体 1. SpringCloud Alibaba入门简介 1.1 why会出现SpringCloud alibaba? Spring Cloud Netflix项目进入维护模式,spring blog上增加官宣 不争气啊,看到都是我们前面刚学的比较熟悉的啊,hystrix,rib

1039

SpringBoot集成Nacos的配置中心

Nacos 什么是配置中心 什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。 特点 配置是独立于程序的只读变量 配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置 配置伴随应用的整个生命周期 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。比如:启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。 配置可以

YHJ 2万+

Alibaba Spring Cloud 十一 Nacos 服务注册、发现与配置管理中心

Nacos(Naming and Configuration Service)是阿里巴巴开源的服务注册、发现与配置管理中心,也是 Spring Cloud Alibaba 生态下的重要组件之一

空 893

nacos的server-addr地址为域名情况会默认加8848端口

一、本地的nacos:127.0.0.1:8848 二、测试环境域名nacos:www.lmptestnacos.cn:80 注意:域名后面必须加80端口,不然会被默认添加8848端口

leomoon 7260

Spring Cloud Alibaba 整合Nacos实战

Spring Cloud Alibaba 整合Nacos

congge_study的博客 7898

阿里巴巴开放数据处理服务odps

ODPS 提供海量数据处理及分析服务,让用户远离大数据运算烦恼。 开放数据处理服务(Open Data Processing Service,ODPS)是基于飞天分布式系统构建的海 量数据处理和分析的服务平台,具有 PB 级别的数据处理能力, 主要适用于实时性要求不高 的海量数据处理,如数据分析、海量数据统计、数据挖掘和商业智能领域。 ODPS 提供了数据上传下载通道, SQL 处理操作,并且提供了完善的安全解决方案, 当前开 放的功能有:  数据通道:提供高并发的数据上传下载服务  SQL 计算  安全:ODPS 提供了功能强大的安全服务,为用户的数据安全提供保护

【微服务】Nacos保护阈值_权重_命名空间_分组_集群管理简介

定义与功能:设置与触发:定义与功能:应用场景:定义与功能:使用与管理:定义与功能:使用与管理:定义与功能:使用与管理:

wosixiaokeai的博客 1029

FPGA时序约束:从时钟树到数据路径的深度解析与优化策略

本文深入解析FPGA时序约束的核心技术与优化策略,涵盖时钟树结构分析、时序报告解读和数据路径优化。重点探讨Vivado工具中的时序约束方法,包括时钟定义、异常约束和物理优化,帮助工程师掌握寄存器级时序分析和系统级协同设计,实现高性能FPGA设计。

u5v6w7的博客 652

SpringCloud Alibaba史上最强详解与史上最系统框架搭建

框架实现代码资源地址:springCloud_dataservice_bus.zip_springcloudalibaba搭建-Java文档类资源-优快云下载 目录 一、官网集合: Springboot官网 中文文档 Mybatis官网 SpringCloud Alibaba官网 github中文官网 英文官网 Nacos官网 Sentinel官网 OpenFeign官网 Gateway官网 Seata官网 Sleuth官网 二、微服务架构编码构建 2.1 idea新.

qq_36250202的博客 2万+

Ubuntu 24.04 LTS与Windows 11远程桌面连接:从xrdp闪退到xfce4桌面环境的实战排障

本文详细解决了在Ubuntu 24.04 LTS上使用xrdp连接Windows 11远程桌面时遇到的登录后闪退问题。通过分析日志,定位到默认GNOME桌面环境与xrdp的兼容性冲突,并提供了将桌面环境更换为轻量且兼容性更佳的XFCE4的完整实战解决方案,包括安装、关键配置修改及服务重启步骤,确保远程连接稳定可靠。

mango的博客 807

π_RL:解锁流匹配VLA强化学习后训练的关键技术与实战解析

本文深入解析了π_RL框架如何通过流匹配(flow matching)与强化学习(RL)的结合,解决视觉语言动作模型(VLA)在后训练中的关键挑战。详细介绍了Flow Noise和Flow SDE两大核心技术,以及它们在机器人控制任务中的实战效果,显著提升了模型的性能、数据效率和泛化能力。

weixin_29061531的博客 220

Spring Cloud Alibaba —— 服务注册与配置中心

Spring Cloud Alibaba ———— 服务注册与配置中心

4万+

PTA 编程题(C语言)-- 然后是几点

PTA 编程题(C语言)-- 然后是几点

LCCprogrammer 5079

Java面试-Spring Cloud Alibaba Nacos:服务注册与配置中心

《Java面试200问》系列推出Spring Cloud Alibaba Nacos专题详解,从服务注册到配置中心,一文掌握微服务核心技术。文章以生动比喻将Nacos比作"微服务指挥官",通过图文并茂的方式系统讲解其核心架构、环境搭建及实战应用。包含10000+字深度解析,涵盖命名空间、分组等高级特性,并特别设计电商微服务案例和面试高频问题解析,帮助开发者深入理解Nacos在服务发现与动态配置中的关键作用,为Java面试提供全面备战指南。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

华为FusionCharge 720kW液冷直流快充桩主电流全路径深度详解

本文档详细介绍了华为FusionCharge 720kW液冷分体式直流充电系统的主电流路径全链路解析,适用于配套DS720-720LCNA1充电主机及DT600L1-CNA1液冷终端、DT250N2-CNA1自然冷终端的运维工作。内容涵盖从电网交流输入到电动汽车充电的全过程,重点解析交流门、整流正门、主控正门等五大柜门区域的核心元器件分布及功能,包括额定参数、安全规范、故障排查等关键运维知识。操作人员需持有高压电工证并通过专项培训,作业时必须严格遵守断电验电、穿戴PPE防护装备等安全红线。文档通过16个关键

2401_84939870的博客 751

多传感器融合SLAM指南:如何结合视觉与激光雷达提升建图精度

本文深入探讨了多传感器融合SLAM技术,详细解析了如何将视觉传感器与激光雷达(特别是3D激光雷达)进行深度融合以提升建图精度与鲁棒性。文章从传感器特性分析、数据同步标定、前端融合策略(松耦合与紧耦合)到后端优化与地图构建,提供了完整的实战指南,并重点介绍了V-LOAM等经典融合框架的核心思想,旨在帮助开发者构建适应复杂动态环境的高精度SLAM系统。

weixin_29056145的博客 535

SpringCloud Alibaba 2021版 nacos 配置中心教程

文章目录nacos 配置中心 是什么nacos config 和 springcloud config 对比常用配置中心对比支持profile粒度的配置快速入门 nacos 配置中心 是什么 nacos config 和 springcloud config 对比 springcloud config大部分场景结合git 使用, 动态变更还需要依赖Spring Cloud Bus 消息总线来通过所有的客户端变化. springcloud config不提供可视化界面 nacos config使用长轮询更新

做一个有思想的技术人 1万+

从SIGGRAPH审稿人视角看:什么样的TOG论文更容易被接收?

本文从SIGGRAPH审稿人视角深入解析TOG论文的审稿标准与投稿策略,揭示如何提升论文接收概率。重点探讨创新性、技术深度、实验验证等核心评分维度,并提供写作技巧与审稿意见应对策略,帮助研究者优化ACM Transactions on Graphics投稿质量。

weixin_33721344的博客 108

从零搭建 Spring Cloud 微服务项目:注册中心 + 网关 + 配置中心全流程

本文面向具备 Java 基础与 Spring Boot 实战经验的开发者,以 Spring Cloud Alibaba 生态为核心,从零搭建包含注册中心、API 网关、配置中心的微服务项目,全程附带可运行代码与实操说明,读者可边读边动手实现。

lbbxmx111的博客 2836

2017阿里内推笔试题--算法工程师(运筹优化)

2017阿里内推笔试题–算法工程师(运筹优化)题目沐哲是一个菜鸟仓库的一个拣货员,但他有非常个怪异的习惯。每次拣货的重量都要比之前拣的一个轻,每次拣到货后都可以得到1块钱,沐哲想知道这样最多能赚多少钱 32 34 7 33 21 2 13 12 3 11 26 36 16 30 22 1 24 14 20 23 25 5 19 29 27 15 9 17 31 4 6 18 8 10 3

shawpan的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【深入了解Spring Cloud Alibaba Nacos:服务注册和配置中心】—— 每天一点小知识

Nacos是一个开源的分布式服务注册和配置中心,它提供了一种简单且强大的方式来实现微服务架构中的服务注册和配置管理。Nacos支持基于云原生的架构理念,具有高可用性、动态扩展、易于使用和强大的功能。Nacos的主要特性包括:服务注册和发现:Nacos可以作为服务注册中心,帮助微服务应用进行服务注册与发现,实现微服务的动态扩展和负载均衡。服务配置管理:Nacos可以作为配置中心,集中管理微服务应用的配置信息,实现配置的动态更新和一致性。服务健康监测。

仰望天空,妳我亦是行人. 3084

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Spring Cloud Alibaba】Nacos 配置中心(二)

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。在没有明确指定配置的情况下, 默认使用的是 Nacos 上 Public 这个namespace。注意:该配置必须放在 bootstrap.properties 文件中。

Blue_Pepsi_Cola的博客 1619

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring Cloud Alibaba - Nacos(全网最详细!!!)

是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序。服务发现是微服务架构中的关键组件之一Nacos致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。1. Nacos =注册中心配置中心组合。

国家专精特新小巨人、资深消防行业企业、国家高新技术企业、智慧消防技术实验室、准独角兽企业、浙江省电流AI技术研发中心 4290

【Spring Cloud Alibaba】Nacos(一)

在Spring Cloud Alibaba套件中服务治理方面的核心组件是Nacos(Dynamic Naming and Configuration Service),在Spring Cloud Alibaba套件为基础的微服务中,Nacos担当的角色有服务发现和健康检测、服务注册中心(动态注册)、配置中心(动态配置)、服务元数据管理等功能。做为注册中心:Nacos管理所有的微服务,解决微服务调用之间的错综复杂、难以维护的问题。

Blue_Pepsi_Cola的博客 1696

Spring Cloud Alibaba Nacos 服务注册发现和分布式配置中心

本文介绍了Spring Cloud Alibaba Nacos的服务注册发现和分布式配置中心功能。主要内容包括:版本适配关系,推荐使用Spring Boot 3.2.x + SCA 2023.0.1.0 + Nacos 2.3.2组合;Nacos服务端的两种部署方式(单机模式和简化生产模式);Spring Boot项目整合步骤,包括依赖添加、配置文件和启动类注解;以及动态配置中心的核心功能演示,展示了如何通过@RefreshScope实现配置热更新。文章提供了详细的配置示例和操作指导,帮助开发者快速上手Na

hbx98的博客 1001

Spring Cloud Alibaba实战(二) - Nacos注册中心

目录 (一)Nacos动态配置(二)Nacos注册中心(三)Sentinel之限流(四)Sentinel之熔断(五)Gateway之路由、限流(六)Gateway之鉴权、日志(七)Gateway搭配Nacos实现动态路由(八)Dubbo + Nacos 正文 Nacos作为配置中心的表现可圈可点,下面继续探探作为注册中心的斤两。 上一节编写了payment-service,提供查询余额接口...

分享知识、分享进步 1万+
上一篇: Spring Cloud学习笔记(十三)服务链路追踪Sleuth
下一篇: Idea新建项目 Spring Initializr 403问题解决
呼吸先生
博客等级 码龄21年 57粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值