2025年Nacos整合SpringCloud(配置中心、注册中心)[通俗易懂]

Nacos整合SpringCloud(配置中心、注册中心)[通俗易懂]1 什么是 Nacos Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现 配置管理和服务管理平台 2 Nacos Config 整合 Nacos Config Starter 实现 Spring Cloud 应用程序的外部化配置 2 1 启动 Nacos Server 并添加配置 1 下载地址 直接下载 Nacos Server 下载页 源码构建 Github

1.什么是Nacos?
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
2.Nacos Config整合
Nacos Config Starter实现Spring Cloud应用程序的外部化配置。
2.1 启动 Nacos Server 并添加配置
1.下载地址:

直接下载:Nacos Server 下载页

源码构建:Github 项目页面

2.启动

Linux/Unix/Mac 操作系统,执行命令 sh startup.sh -m standalone

Windows 操作系统,执行命令 cmd startup.cmd

默认账户密码:nacos

3.在命令行执行如下命令,向 Nacos Server 中添加一条配置,也可在控制台中手动添加。
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config-example.properties&group=DEFAULT_GROUP&content=user.id=1%0Auser.name=james%0Auser.age=17"
添加的配置的详情如下
dataId 为 nacos-config-example.properties group 为 DEFAULT_GROUP 内容如下 user.id=1 user.name=james user.age=17

2.1 引入pom文件
 
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-config

/pre>

img src=https://ask.qcloudimg.com/http-save/yehe-8223537/9047560c84ff65e7ea17ff6c18704646.png>

h6>2.2 添加bootstrap.properties

/h6>

pre class='language-javascript'>

spring.application.name=nacos-config-example
spring.cloud.nacos.config.server-addr=ip:8848 #服务器ip或本地ip

/pre>

h6>2.3 获取相应的配置

/h6>

pre class='language-javascript'>

@RefreshScope //打开动态刷新功能
class SampleController {


@Value("${user.name}")
String userName;

@Value("${user.age}")
int age;
}

/pre>

h6>2.4 应用启动

/h6>

blockquote>1.添加/application.properties


server.port=18084 management.endpoints.web.exposure.include=*


2.App启动


/blockquote>

h6>2.5 原理

/h6>

blockquote>1.Nacos Config 数据结构


Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置.


Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigService.getConfig(String dataId, String group, long timeoutMs)。


2.Spring Cloud 应用获取数据


dataId


在 Nacos Config Starter 中,dataId 的拼接格式如下


${prefix} - ${spring.profiles.active} . ${file-extension}


/blockquote>

p>prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。


/p>

p>spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档


注意,当 activeprofile 为空时,对应的连接符 – 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}


/p>

p>file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension来配置。 目前只支持 properties 类型。


/p>

p>group


/p>

p>group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。

/p>

p>3.自动注入


Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator接口,并将优先级设置成了最高。


在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server 端配置的内容。


4.动态刷新


Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。


如果需要对 Bean 进行动态刷新,给类添加 @RefreshScope 或 @ConfigurationProperties注解。


5.Endpoint 信息查看


Springboot支持这一点,Nacos Config也同时可以使用Endpoint来暴露信息。


在maven 中添加 spring-boot-starter-actuator依赖,并在配置中允许 Endpoints 的访问。


/p>

p>Spring Boot 1.x 中添加配置 management.security.enabled=false

/p>

p>Spring Boot 2.x 中添加配置 management.endpoints.web.exposure.include=*

/p>

p>Spring Boot 1.x 可以通过访问 http://127.0.0.1:18084/nacos_config 来查看 Nacos Endpoint 的信息。


Spring Boot 2.x 可以通过访问 http://127.0.0.1:18084/actuator/nacos-config 来访问。


/p>

h6>2.6 更多

/h6>

table border='1' style='border-collapse: collapse; width: 100%;'>

配置项key默认值说明服务端地址spring.cloud.nacos.config.server-addrDataId前缀spring.cloud.nacos.config.prefixspring.application.nameGroupspring.cloud.nacos.config.groupDEFAULT_GROUPdataID后缀及内容文件格式spring.cloud.nacos.config.file-extensionpropertiesdataId的后缀,同时也是配置内容的文件格式,目前只支持 properties配置内容的编码方式spring.cloud.nacos.config.encodeUTF-8配置的编码获取配置的超时时间spring.cloud.nacos.config.timeout3000单位为 ms配置的命名空间spring.cloud.nacos.config.namespace常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源隔离等。AccessKeyspring.cloud.nacos.config.access-keySecretKeyspring.cloud.nacos.config.secret-key相对路径spring.cloud.nacos.config.context-path服务端 API 的相对路径接入点spring.cloud.nacos.config.endpointUTF-8地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址是否开启监听和自动刷新spring.cloud.nacos.config.refresh.enabledtrue

/table>

h5>3.Nacos Discovery 整合

/h5>

blockquote>Nacos Discovery Starter 完成 Spring Cloud 应用的服务注册与发现。


/blockquote>

h6>3.1 添加依赖

/h6>

pre class='language-javascript'>


org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery

/code>

code class='prism'>spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

/code>

code class='prism'>@SpringBootApplication


@EnableDiscoveryClient


public class ProviderApplication {




public static void main(String[] args) {



SpringApplication.run(Application.class, args);


}



@RestController


class EchoController {



@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)


public String echo(@PathVariable String string) {



return string;


}


}


}

/code>

br /> spring.application.name=service-provider server.port=18082

br />

code class='prism'>http://127.0.0.1:8848/nacos/v1/ns/instances?serviceName=service-provider

/code>

br />

br />

br />

br />

br />

br />

br />

br />

br />

br />

br />

br /> 验证

br />

br />

br /> 在Spring云应用程序的启动阶段,将监视WebServerInitializedEvent事件。在初始化Web容器后收到WebServerInitializedEvent事件时,将触发注册操作,并调用ServiceRegistry注册方法以将服务注册到Nacos Server。

br /> 服务发现

br /> NacosServerList实现com.netflix.loadbalancer.ServerList接口并在@ConditionOnMissingBean下自动注入它。功能区默认为集成。

br /> 端点

br /> Nacos Discovery Starter还支持Spring Boot执行器端点的实现。

br /> 先决条件:

br /> 将依赖spring-boot-starter-actuator添加到pom.xml文件中,并配置端点安全策略。

br /> Spring Boot 1.x:添加配置management.security.enabled = false

br /> Spring Boot 2.x:添加配置management.endpoints.web.exposure.include = *

br /> 要查看端点信息,请访问以下URL:

br /> Spring Boot1.x:Nacos Discovery端点URL是http://127.0.0.1:18083/nacos_discovery。

br /> Spring Boot2.x:Nacos Discovery端点URL是http://127.0.0.1:18083/actuator/nacos-discovery。

br />

tr>

/tr>

tr>

配置项键默认值描述

/tr>

tr>

服务器地址spring.cloud.nacos.discovery.server-addrnacos注册中心地址

/tr>

tr>

服务名spring.cloud.nacos.discovery.servicespring.application.name服务名

/tr>

tr>

权重spring.cloud.nacos.discovery.weight1值从1到100,值越大,重量越大

/tr>

tr>

IPspring.cloud.nacos.discovery.ipip address to registry,最高优先级

/tr>

tr>

网络接口spring.cloud.nacos.discovery.network-interface未配置IP时,注册的IP地址为网络接口对应的IP地址。如果未配置此项,则默认采用第一个网络接口的地址。

/tr>

tr>

端口spring.cloud.nacos.discovery.port-1注册端口,无需配置即可自动检测

/tr>

tr>

namesapcespring.cloud.nacos.discovery.namespace开发环境(dev、pro等)

/tr>

tr>

accesskeyspring.cloud.nacos.discovery.access-key

/tr>

tr>

secretkeyspring.cloud.nacos.discovery.secret-key

/tr>

tr>

元数据spring.cloud.nacos.discovery.metadata扩展数据,使用Map格式配置

/tr>

tr>

日志名称spring.cloud.nacos.discovery.log-name

/tr>

tr>

端点spring.cloud.nacos.discovery.endpoint服务的域名,通过该域名可以动态获取服务器地址。

/tr>

tr>

集成功能区ribbon.nacos.enabledtrue

/tr>

编程小号
上一篇 2025-08-15 23:06
下一篇 2025-03-22 13:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/127401.html