携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
一、文档
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
二、如何配置
安装文档见 Nacos 快速开始
1. 依赖文件
<spring-cloud.version>2021.0.3</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.3</version>
</dependency>
2. bootstrap.yaml
spring:
application:
name: csd-project-template
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: http://localhost:8848
namespace: 9a8c7db0-35ba-472a-a5af-3f3c3cd56030
config:
server-addr: http://localhost:8848
namespace: 9a8c7db0-35ba-472a-a5af-3f3c3cd56030
file-extension: yaml
group: csd
3. 启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4. Demo
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
5. 结果验证
- 服务启动获取到 Nacos 配置 :
- Nacos 管理界面注册成功:
三、问题汇总
1. Java 版本问题
推荐使用 Java17,如果有Java11项目建议升级
2. 如果使用 namespace
-
当您在应用中需要配置指定的 namespace 时,填入的是命名空间 ID
-
当您在应用中需要配置指定的 namespace 时,填入的是命名空间 ID
-
当您在应用中需要配置指定的 namespace 时,填入的是命名空间 ID
3. file-extension 文件类型应该与配置页面一致
4. 启动报错
- The request was rejected because the URL was not normalized
注意注册中心的地址不能以斜杠结尾
-
Param ‘serviceName‘ is illegal, serviceName is blank
原因:spring-cloud-dependencies 2020.0.0 版本不在默认加载bootstrap 文件,如果需要加载bootstrap 文件需要手动添加依赖。
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>3.1.3</version>
5. bootstrap.yml
-
bootstrap.yml 用来在程序引导时执行,应用于更加早期配置信息读取,可以使用来配置application.yml 中使用到参数
-
application.yml 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数
6. 版本关系
一定要注意版本关系,奇奇怪怪的问题就源于版本问题。
一定要注意版本关系,奇奇怪怪的问题就源于版本问题。
一定要注意版本关系,奇奇怪怪的问题就源于版本问题。