nacos是阿里的一个开源产品,提供服务发现,动态配置等功能
服务发现流程:
与Eureka对比:
? https://github.com/alibaba/nacos/releases
\#启动命令:
startup.cmd -m standalone
\#双击startup.cmd运行文件。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery
</artifactId>
</dependency>
spring:
application:
name: user-service
cloud:
nacos:
discovery:
server‐addr: 127.0.0.1:8848
cluster-name: FZ # 配置集群名称
可在服务中设置权重0-1
需导入负载均衡配置器:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer
</artifactId>
</dependency>
配置规则:
user-service:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息。同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。(默认所有服务都为临时服务,若设置成长期服务则不会被剔除)
在不关闭服务的情况下导入配置,实现热更新
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config
</artifactId>
</dependency>
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
@RestController
@RequestMapping("user")
@RefreshScope
public class UserController{
@Autowired
private UserService userService;
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String noew(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
@GetMapping("{id}")
public User getOrder(@PathVariable("id") Long id){
return userService.getById(id);
}
}