Nacos服务注册发现
引入依赖
<dependencyManagement>
<dependencies>
<!-- nacos管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
application.yml
spring:
application: #配置服务名称
name: userservice
cloud:
nacos:
server-addr: localhost:8848 #配置nacos服务地址
登录Nacos查看服务
- 官网地址:https://nacos.io/zh-cn/docs/quick-start.html
- 启动成功后,访问:http://192.168.0.6:8848/nacos/index.html
- 账号,密码都是 nacos
Nacos配置管理
快速入门
引入依赖
<!--配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
添加bootstrap.yaml
spring:
application:
name: userservice # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
这里会根据spring.cloud.nacos.server-addr获取nacos地址,再根据
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
作为文件id,来读取配置。
本例中,就是去读取userservice-dev.yaml
:
在Nacos配置管理中添加配置文件
服务中读取配置,以及配置热更新
controller
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public ResModel list(){
return userService.getList();
}
@GetMapping("/{id}")
public User selectById(@PathVariable Integer id){
return userService.selectById(id);
}
//测试配置文件
@GetMapping("/config")
public ResModel testConfig(){
return userService.testConfig();
}
}
service
@Service
@RefreshScope//配置热更新
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Value("${user.username}")
private String username;
@Value("${user.address}")
private String address;
@Override
public ResModel getList() {
return ResModel.success(Code.SUCCESS,list());
}
@Override
public User selectById(Integer id) {
User user = getById(id);
return user;
}
@Override
public ResModel testConfig() {
return ResModel.success(Code.SUCCESS,new User(username,address));
}
}
测试结果
配置细节
配置共享
其实微服务启动时,会去nacos读取多个配置文件,例如:
-
[spring.application.name]-[spring.profiles.active].yaml
,例如:userservice-dev.yaml -
[spring.application.name].yaml
,例如:userservice.yaml
而[spring.application.name].yaml
不包含环境,因此可以被多个环境共享。
命名空间
默认:public(保留空间);默认新增的所有配置都在public空间。
- 开发,测试,生产:利用命名空间来做环境隔离。
- 每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置
配置分组
默认所有的配置集都属于:DEFAULT_GROUP;
- 每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod。
bootstrap.yaml
spring:
application:
name: userservice # 服务名称
profiles:
active: dev #开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
namespace: 65a133f1-60b2-4bab-bfca-02a624ff27d3
#命名空间id
group: dev #配置分组