SpringCloud(二.2)Nacos服务的搭建与使用(更常用)

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

优势:Eureka只能当注册中心,Nacos还能当配置中心。

详细请见:Nacos安装

 

父工程配置

pom

<!--nacos的管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
父工程nacos的管理依赖

 

客户端(微服务)配置:

pom

<!-- nacos客户端依赖包 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
nacos客户端依赖包

yml

 

效果展示:

 

客户端(微服务)Nacos集群配置:

 

客户端(微服务)之间的远程调用优先选择同集群配置: 

备注:A服务调B服务 在A服务的yml中配置,这里的userservice是B服务yml配置文件中的application name值

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡规则
yml

 

 

Nacos 根据权重负载均衡 配置: 

 

如果权重调成0后,则不会被调用。(版本升级时可以这样配置)

 

 

Nacos 环境隔离 配置:

 创建后会自动生成命令空间的ID

 yml配置

 效果展示:

备注:不在同一命令空间的微服务实例无法互相远程调用。

 

Nacos 非临时实例 配置:

Nacos默认为临时实例

临时实例(更推荐):采用心跳监测是否正常,如果不正常则服务会被踢除。

非临时实例:nacos主动询问,如果不正常服务不会被踢除。缺点:会给服务器造成一定压力。

 

 

 

Nacos 配置管理 --- 配置

 

 

 


微服务获取Nacos中的配置信息

<!--nacos的配置管理依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
Nacos配置管理依赖
spring:
  application:
    name: userservice
  profiles:
    active: dev # 环境
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos地址
      config:
        file-extension: yaml # 文件后缀名
bootstrap.yml

配置好以后我们可以测试一下看是否能读取到Nacos中的配置文件

我们在Nacos中配置内容中写了一个日期格式dateformat,我们可以写个接口获取一下,看能否得到。

@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
    public String now(){
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }

 

Nacos 配置管理 --- 配置自动刷新 

微服务获取Nacos中的配置信息,当Nacos中的配置信息发生变更时会发现页面刷新后并不能获取到,只能是停掉重新项目。这时就需要配置自动刷新。

拿上面的案例来讲,Nacos中配置的dateformat日期格式发生变动后,页面刷新并不能及时变更。

 

方式一:在@Value注入变量所在类上添加注解@RefreshScope

 

 方式二:使用@ConfigurationProperties注解

1、新建一个类PatternProperties专门完成属性的加载 

prefix=“前缀”,Nacos中配置的前缀为pattern。

 

 2、在相关类中注入PatternProperties然后获取相关配置

 

 

Nacos 配置管理 --- 多环境配置共享 

 

 1、在Nacos中新增共享属性配置userservice.yaml

 

 

2、在配置类中新增配置属性名

 测试查看是否能读取到共享配置内容

@GetMapping("prop")
        @GetMapping("prop")
    public PatternProperties properties(){
        return properties;
    }

 效果如图:

 

优先级:

 

 

 

Nacos集群搭建

链接:https://pan.baidu.com/s/1SSsmtCtl80HlPIDGa0hzYg
提取码:vjx9

 

posted @ 2024-03-19 22:35  一介桃白白  阅读(76)  评论(0编辑  收藏  举报