# 关于 nacos 的说明
## 简介
* Nacos 是阿里巴巴开源的 动态服务发现、配置管理和服务治理 平台,常用于微服务架构。它支持 Dubbo、Spring Cloud 等框架,适合构建云原生应用。
* [文档地址]
## 下载
## 简单使用
* 下载后解压, 然后 cd 到 解压目录
unzip nacos-server-2.3.0.zipcd nacos/bin
* 使用单机模式运行
sh startup.sh -m standalone
* 启动后, 可以通过浏览器访问控制台: http://localhost:8848/nacos, 默认用户名/密码:nacos/nacos
## Nacos 控制台配置
* 先到 命名空间/namspace 创建 namespace

* 命名空间ID尽量固定一个值,因为这个值需要配置到项目的 bottstrap.yml 文件中, 如果不设置,系统会默认随机生成一个

* 然后设置命名空间名,这个也需要统一, 如 server1
* 确定后,则会创建一个新的命名空间,如果未设置命名空间ID,则会随机生成一个,这个ID用于每一个项目的 bootstrap.yml 里的nacos namespace 配置

* 进入 Nacos 控制台 > 配置管理 > 配置列表, 选择上一步创建的命名空间 server1

* 创建页面里面有个 Data ID 和 Group, 需要参照各项目的 src/main/resources/bootstrap.yml 文件中的 data-id 和 group 来设置, 参看各项目的 nacos 目录中的相关说明
* 配置格式 需要选择 YAML

* 配置内容各不相同, 按照项目需求来配置,如
myconfig:value: "Hello Nacos Config!"
## Nacos 作为注册中心
* pom.xml 添加依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2022.0.0.0</version></dependency>
* 配置 application.yml
spring:application:name: nacos-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848namespace: {namespaceID}config:server-addr: 127.0.0.1:8848namespace: {namespaceID}
* 开启注册, 在 SpringBootApplication 类上添加:
@EnableDiscoveryClient@SpringBootApplicationpublic class NacosApplication {public static void main(String[] args) {SpringApplication.run(NacosApplication.class, args);}}
* 运行后可在 Nacos 控制台 看到 nacos-service 已注册
## Nacos 作为配置中心
* pom.xml 添加依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2022.0.0.0</version></dependency>
* 配置 bootstrap.yml
spring:application:name: nacos-config-servicecloud:nacos:config:server-addr: 127.0.0.1:8848namespace: {namespaceID}file-extension: yaml
* Spring Boot 读取配置
@RestController@RefreshScope // 实时刷新配置public class ConfigController {@Value("${myconfig.value}")private String value;@GetMapping("/config")public String getConfig() {return value;}}
* 访问 http://localhost:8080/config,返回 "Hello Nacos Config!"
* nacos 的 docker-compose 编排简单示例:
nacos:image: nacos/nacos-server:v2.5.0links:- redis:redis- mysql:mysqlenvironment:- PREFER_HOST_MODE=hostname- MODE=standalone- NACOS_AUTH_IDENTITY_KEY=serverIdentity- NACOS_AUTH_IDENTITY_VALUE=security- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789# 权限#- NACOS_AUTH_ENABLE=true#- NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000volumes:- ./data/nacos:/home/nacos/data- ./data/logs/nacos:/home/nacos/logsports:- "8848:8848"- "9848:9848"