Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
注册中心
之前写了关于SpringCloud的服务注册与发现组件Eureka组件,但是Eureka现在停更了,所以阿里爸爸给我们提供了一个更好用,功能更齐全,配置更加简便的组件—Nacos
Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,简单的说,它既是服务注册发现中心,也可以进行配置管理,将SpringCloud的Eureka和Config两个合成一个,使用起来更简的简单;官方文档对于它的描述很详细,今天就重点聊聊在SpringCloud中使用阿里巴巴的Nacos组件进行服务注册与发现
1. 安装Nacos
Nacos支持Linux、Mac、Windows,我主要是使用Linux系统,并且我的服务都是安装在docker中,所以我就是用docker一步式安装了
# Nacos的默认端口是8848,启动单机模式,至于集群,以后再说吧
docker run -itd -p 8848:8848 --env MODE=standalone --restart=always --name nacos nacos/nacos-server
容器启动后,通过 “ip:8848/nacos” 访问Nacos的控制台页面,默认用户名和密码为nacos
2. 导入依赖
在你的微服务的父工程或者公共模块或者需要被注册到注册中心的微服务模块中导入阿里巴巴的管理模块和Nacos的依赖,我喜欢用最新版的,出bug了在降级,不要怂;
<dependencies>
<!-- Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3. 配置Nacos配置
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.0.109:8848 # 服务注册地址
application:
name: gulimall-coupon # 服务名
4. 启动类中开启服务注册发现功能
@SpringBootApplication
@EnableDiscoveryClient //开启服务注册发现功能
public class GulimallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallCouponApplication.class, args);
}
}
5. 启动测试
启动微服务,在Nacos的控制台页面可以看到我们注册的服务
配置中心
之前使用了SpringCloud默认的配置中心,今天就来聊聊阿里巴巴提供的Nacos配置中心,讲真的用起来是真的简单(官方文档)
1. 导入依赖
<!-- nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 编写bootstrap.yaml文件
注意,必需要配置 spring.application.name ,它是构成 Nacos 配置管理 dataId字段的一部分;Nacos配置中心默认读取properties文件,你想使用yaml,需要配置file-exetension,目前Nacos仅支持yaml和properties格式
spring:
application:
name: gulimall-coupon # 服务名
cloud:
nacos:
config:
server-addr: 192.168.0.109:8848 # 配置中心地址
file-extension: yaml # 默认使用properties
3. 编写控制类进行测试
通过 @RefreshScope 实现配置自动更新
@RefreshScope //配置自动更新
@RestController
@RequestMapping("/coupon")
public class CouponTestApi {
@Value("${coupon.name}")
private String name;
/**
* nacos 配置中心测试
*/
@GetMapping("/nacos/config")
public R nacosConfigTest() {
return R.ok().put("name", name);
}
}
4. 在Nacos控制台增加配置
5. 启动测试
可以实现配置动态更新