SpirngCloud:Nacos服务发现与动态配置

发布时间:2024年01月14日

Nacos

nacos是阿里的一个开源产品,提供服务发现,动态配置等功能

服务发现

介绍

服务发现流程:

请添加图片描述

与Eureka对比:

请添加图片描述

快速入门

  1. 安装

? https://github.com/alibaba/nacos/releases

  1. windows启动
\#启动命令:
startup.cmd -m standalone
\#双击startup.cmd运行文件。
  1. 导入依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring‐cloud‐starter‐alibaba‐nacos‐discovery
  </artifactId>
</dependency>
  1. 服务注册
spring:
 application: 
  name: user-service
 cloud: 
  nacos: 
   discovery: 
    server‐addr: 127.0.0.1:8848
    cluster-name: FZ  # 配置集群名称
  1. 启动服务

请添加图片描述

可在服务中设置权重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秒内健康检查失败则剔除实例。(默认所有服务都为临时服务,若设置成长期服务则不会被剔除)

请添加图片描述

动态配置

在不关闭服务的情况下导入配置,实现热更新

快速入门

  1. 导入依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config
    </artifactId>
</dependency>
  1. 创建一个bootstrap.yml文件,其优先级高于application.yml
spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        file-extension: yaml
  1. 在nacos上添加配置

请添加图片描述

  1. 通过@Value和@RefreshScope注解获取配置
@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);
    }

}
  1. 结果

请添加图片描述

原理图

请添加图片描述

文章来源:https://blog.csdn.net/weixin_74144099/article/details/135489323
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。