nacos的服务注册与配置(一)

本文详细介绍了如何使用Nacos进行服务注册,包括单例模式启动,服务的多级存储模型配置,以及负载均衡和权重设置。此外,还探讨了Nacos的命名空间功能,用于环境隔离。在配置管理方面,添加了配置管理依赖,展示了动态读取和更新配置的方法。

一、nacos服务注册

nacos是阿里巴巴的一个服务注册与配置的组件,它的功能齐全
官网地址:nacos
下载nacos安装包解压使用
这里我使用的1.4的版本windows
在这里插入图片描述先在bin目录进行cmd操作,单例模式启动命令:
"startup.cmd -m standalone"
在这里插入图片描述
默认用户名和密码都是:nacos,默认端口:8848
接下来我们将orderservice和userservice服务注册到nacos
由于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>

然后在userservice和orderservice中添加nacos的依赖

  <!-- nacos-discovery 注册中心 -->
   <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
   </dependency>

创建bootsrtap.yml文件,因为它加载顺序在application.yml之前
添加nacos的配置信息

spring:
  application:
    name: userservice  #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos配置中心     

启动服务,浏览器访问
在这里插入图片描述

nacos服务多级存储模型

为了防止服务不可用之后,导致所有的都受到影响,我们可以配置多级存储模型。
这里我们可以将userservice修改为cd集群,orderservice修改为xa集群
修改userservice配置文件

spring:
  application:
    name: orderservice
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos配置中心
        cluster-name: cd  #服务多级存储配置

orderservice配置同理
启动服务
在这里插入图片描述

nacos负载均衡

nacos同样也可以实现负载均衡,在配置文件里面添加相关配置

spring:
  application:
    name: orderservice
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos配置中心
        cluster-name: xa
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.albaba.cloud.nacos.ribbon.NacosRule #nacos负载均衡配置

nacos权重配置

在实际项目中,我们会考虑服务器的性能之类的,如果服务器的性能
比较高一点,我们可以让它多访问。这里就可以设置权重
当权重为0时,服务不会被访问到。
比如:当我们版本升级时,不用停止服务之类的,我们可以把服务的权重调为0,然后进行升级,慢慢调高权重值。
nacos的权重介入:0~1之间
在这里插入图片描述

nacos命名空间 namespace

命名空间就是将环境进行隔离,不同命名空间之前不能进行访问。新建命名空间
默认是public的命名空间
在这里插入图片描述
在这里插入图片描述
比如我们先将orderservice放在dev环境下,配置如下

spring:
  application:
    name: orderservice
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos配置中心
        cluster-name: xa
        namespace: 35eccc51-fc2f-49e7-aecc-4fbd2944c746  #命名空间的配置,命名id
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.albaba.cloud.nacos.ribbon.NacosRule #nacos负载均衡配置

在这里插入图片描述
此时浏览器访问就会报错,因为不在同一个环境下,环境被隔离了
在这里插入图片描述
我们在将userservice服务也配置到dev环境下,再次访问进行测试
在这里插入图片描述

二、nacos配置管理

这里就需要再添加一个依赖

      <!--nacos-config 配置管理-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

新建配置
在这里插入图片描述

读取配置

先在配置文件中添加相关配置信息

spring:
  application:
    name: orderservice
  profiles:
    active: dev   #激活dev环境
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #nacos配置中心
#        cluster-name: xa
        namespace: 35eccc51-fc2f-49e7-aecc-4fbd2944c746  #命名空间的配置,命名id
      config:
        file-extension: yaml

#userservice:
#  ribbon:
#    NFLoadBalancerRuleClassName: com.albaba.cloud.nacos.ribbon.NacosRule #nacos负载均衡配置

我们在controller层添加一个测试方法,用来获取配置文件

   @GetMapping("/getDate")
    public String getDate(){
        return LocalDate.now().format(DateTimeFormatter.ofPattern(dateFormat));
    }

通过@Value注解来获取信息

@Value(“${pattern.dateFormat}”)
private String dateFormat;

这里在说一个注解 "@RefreshScope" 这是配置热更新,在controller类上添加
浏览器进行测试访问,结果报了这个错误
在这里插入图片描述
查找原因是我把类用错了,应该使用LocalDateTime这个类,不然没有HH这个参数的,改了之后,再次访问就可以啦!!!
在这里插入图片描述

@ConfigurationProperties注解

创建配置类
"@ConfigurationProperties(prefix = "pattern")" 通过前缀来读取配置文件

package cn.itcast.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author Administrator
 */

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class DateProperties {
    private String dateFormat;
}

修改controller层的代码
注释掉之前的读取配置的方法
在这里插入图片描述
启动服务,再来测试
这次改下日期格式
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值