目录
一、注册中心介绍
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配置文件:
成功动态获取到修改后的值。