SpringCloudAlibaba——Nacos注册中心、配置中心的使用

一、注册中心介绍

1.1 什么是注册中心

注册中心在微服务项目中扮演着非常重要的角色,是微服务架构中的纽带,类似于通讯录,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。

1.2 为什么要使用注册中心

注册中心解决了服务发现的问题。在没有注册中心时候,服务间调用需要知道被调方的地址或者代理地址。当服务更换部署地址,就不得不修改调用当中指定的地址或者修改代理配置。而有了注册中心之后,每个服务在调用别人的时候只需要知道服务名称就好,继续地址都会通过注册中心同步过来。

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
在这里插入图片描述

二、环境准备

Nacos Githup : https://github.com/alibaba/nacos

2.1 拉取项目

git clone https://github.com/alibaba/nacos.git

2.2 配置ry_config数据库

conf目录下的application.properties文件配置数据库信息:
在这里插入图片描述

运行nacos数据库sql:

在这里插入图片描述

2.3 打包

#  进入Nacos 目录下
cd nacos/
#  进行打包
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 
# 打包后的文件在distribution/target/目录下
ls -al distribution/target/
# 进入到nacos/distribution/target/nacos-server-1.4.2/nacos/bin目录下
# 启动
./startup.sh  -m standalone
# 停止
./shutdown.sh

在这里插入图片描述
在这里插入图片描述
进入到nacos/distribution/target/nacos-server-1.4.2/nacos/bin目录下:
在这里插入图片描述
编辑启动脚本为单机模式。export MODE="standalone"
在这里插入图片描述

/bin目录下有启动和停止脚本。
执行 ./startup.sh 或者 ./startup.sh -m standalone
在浏览器中输入(http://localhost:8848/nacos)就可以访问了,默认的用户名和密码都是nacos
在这里插入图片描述
登陆上之后可以看到若依的各个微服务的配置文件已经自动显示出来了。
在这里插入图片描述

三、服务注册

新建一个Test服务:
在这里插入图片描述

3.1 pom依赖

在pom文件中添加依赖

<!-- springcloud alibaba nacos discovery -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- SpringBoot Web -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

3.2 添加bootstrap.yml配置

# Spring
spring:
  application:
    # 应用名称
    name: ruoyi-test
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

Application启动类加入注解@SpringBootApplication

@SpringBootApplication
public class RuoYiTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(RuoYiTestApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  Test启动成功   ლ(´ڡ`ლ)゙  \n" +
                " .-------.       ____     __        \n" +
                " |  _ _   \\      \\   \\   /  /    \n" +
                " | ( ' )  |       \\  _. /  '       \n" +
                " |(_ o _) /        _( )_ .'         \n" +
                " | (_,_).' __  ___(_ o _)'          \n" +
                " |  |\\ \\  |  ||   |(_,_)'         \n" +
                " |  | \\ `'   /|   `-'  /           \n" +
                " |  |  \\    /  \\      /           \n" +
                " ''-'   `'-'    `-..-'              ");
    }
}

3.3 测试验证 示例

@RequestMapping("/test")
@RestController
public class DemoController {
    @Autowired
    private RestTemplate restTemplate;

    // 新增restTemplate对象注入方法,注意,此处LoadBalanced注解一定要加上,否则无法远程调用
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @GetMapping("/user")
    public String get() {
        return restTemplate.getForObject("http://ruoyi-system/user/info/admin", String.class);
    }
}

浏览器地址访问:http://localhost:8080/test/user
服务调用成功:(通过test服务调用system服务)
在这里插入图片描述

四、配置中心介绍

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余,如下图:
在这里插入图片描述
总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件。

4.1 为什么要使用配置中心?

配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。

4.2 Nacos 配置中心

Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
在这里插入图片描述
配置中心的服务流程如下:

1、用户在配置中心更新配置信息。
2、服务A和服务B及时得到配置更新通知,从配置中心获取配置。

4.3添加pom依赖

 <!-- springcloud alibaba nacos config -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

4.2 Nacos配置

(注意:)
再给给配置中心默认添加一个数据集 (Data Id)的时候:

在这里插入图片描述

注意此处的Data ID
数据集(Data Id) 的配置完整格式如下:${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension},通俗一点就是: 前缀-环境.扩展名
注意:如果spring.cloud.nacos.config.prefix没有配置,则使用默认的spring.application.name
在这里插入图片描述

在这里插入图片描述

4.4 动态获得配置文件的值


@RestController
@RequestMapping("/test")
public class TestController {
     //@Value 将外部的配置项值动态注入到该 Bean 中。通过冒号语法,可以给配置项指定一个默认值。
    @Value("${ruoyi.name:default}")
    private String name;

    @Value("${ruoyi.version:default}")
    private String version;

    @GetMapping("/info")
    public String getInfo() {
        return name + version ;
    }
}

访问http://localhost:8080/test/info,返回正确数据表示测试通过。
在这里插入图片描述

动态刷新

通常会在Controller里边用@Value取出使用,但是你要是想改变他,就要重新改代码,打包,部署,十分麻烦,我们需要让配置文件的值变得动起来,Nacos也采用了Spring Cloud原生注解@RefreshScope实现配置自动更新。
在这里插入图片描述

修改前:
在这里插入图片描述
修改Nacos配置文件:
在这里插入图片描述
在这里插入图片描述

成功动态获取到修改后的值。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liu_Shihao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值