你可以从 Nacos 的 GitHub 发布页面(Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 )下载最新的稳定版本。选择合适的压缩包(如 .zip
或 .tar.gz
)进行下载。
将下载好的压缩包解压到指定目录,例如 /opt/nacos
。以 Linux 系统为例,解压命令如下:
unzip nacos-server-$version.zip -d /opt/nacos
这里的 $version
需替换为你下载的具体版本号。
Nacos 有单机模式和集群模式,这里以单机模式为例启动。进入 Nacos 的 bin
目录,执行启动脚本:
cd /opt/nacos/bin
sh startup.sh -m standalone
启动成功后,在浏览器中访问 http://localhost:8848/nacos
,使用默认用户名 nacos
和密码 nacos
登录 Nacos 控制台。
你可以使用 Spring Initializr(https://start.spring.io/ )来快速创建一个新的 Spring Boot 项目,添加以下依赖:
在 application.properties
或 application.yml
中添加 Nacos 相关配置。以下是 application.yml
的示例:
spring:
application:
name: your-application-name
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
Nacos 的配置文件位于其解压后的conf
目录下。以下是一些主要配置文件:
application.properties
:Nacos 单机启动配置文件,用于配置 Nacos 的一些基本参数,如服务端口、数据存储路径、数据库连接信息等。application.properties.example
:单机默认配置文件,提供了一些默认的配置示例。cluster.conf.example
:Nacos 集群默认配置文件,用于配置集群相关的参数。nacos-logback.xml
:日志配置文件,用于配置 Nacos 的日志输出格式、级别等。Nacos不必须要数据库才能启动。
Nacos 有两种数据存储方式:内嵌数据库和外部数据库。当使用内嵌数据库时,Nacos 可以直接启动,无需额外配置外部数据库。这种方式适用于开发测试环境,方便快速搭建 Nacos 服务。
但是,在生产环境中,为了保证数据的可靠性和稳定性,通常会使用外部数据库来存储 Nacos 的配置信息和服务注册信息等。此时就需要配置好外部数据库的连接信息,Nacos 才能正常启动并将数据持久化到外部数据库中。
Nacos 实现动态配置更新主要基于长轮询机制。客户端(微服务)在启动时会向 Nacos 服务器注册并获取配置信息,同时客户端会与 Nacos 服务器建立长轮询连接。当配置发生变化时,Nacos 服务器会记录配置的变更信息,当客户端发起长轮询请求时,服务器会将变更信息返回给客户端,客户端接收到变更信息后,会重新从服务器获取最新的配置并更新本地配置。
在 pom.xml
中添加 Spring Cloud Alibaba Nacos Config 依赖:
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
在 src/main/resources
目录下创建 bootstrap.properties
文件,添加以下配置:
spring.application.name=your-application-name
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=properties
@RefreshScope
注解创建一个控制器类,使用 @RefreshScope
注解支持配置的动态刷新:
nacos-dynamic-config-exampleNacos 动态配置更新示例
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RestController
public class DynamicConfigController {
@Value("${cache.expire.time:3600}")
private int cacheExpireTime;
@GetMapping("/cacheExpireTime")
public int getCacheExpireTime() {
return cacheExpireTime;
}
}
/cacheExpireTime
接口,获取初始的缓存过期时间。your-application-name.properties
配置文件中的 cache.expire.time
属性值。/cacheExpireTime
接口,你会发现返回的缓存过期时间已经更新为最新配置的值,无需重启服务。