中间件——Nacos
介绍
1. 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
2.Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
3.Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
服务管理(注册中心)
1.Nacos注册分级存储模型
- 一级是服务,例如userservice
- 二级是集群,例如湖北或湖南
- 三级是实例,例如湖北集群中某一服务器(每个实例端口号均不同)
2.根据集群负载均衡(业务模块与业务模块之间远程调用)
1.修改application.yml配置文件中spring☁️nacos:server-addr:localhost:8848(设置nacos 服务端地址),及nacos:discovery:cluster-name:HB(设置集群名称)将业务模块注册到Nacos注册中心中。
2.修改application.yml配置文件中NFLoadBalancerRuleClassName:com.alibaba.cloud.nacos.ribbon.NacosRule。优先会寻找与自己通集群的服务。
配置管理(配置中心)
1.统一配置管理
- 配置热更新:
导入依赖
<!-- nacos的配置管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
在bootstrap.yml中添加,并删除application.yml中重复的内容
spring:
application:
name: userservice
profiles:
active: dev #环境
cloud:
nacos:
server-addr: localhost:8848 # nacos 地址
config:
file-extension: yaml # 文件后缀名
测试nacos中创建的配置信息是否生效
方法一:
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
Controller类上添加@RefreshScope注解
方法二:
创建一个配置类,将类注入到IOC容器中 并实现热更新
@Component
@Data
@ConfigurationProperties(value = "pattern")
public class PatternProperties {
private String dateformat;
}
在Controller方法中 通过@Autowired获取IOC容器中的Bean
@Autowired
private PatternProperties properties;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()));
}