Spring Cloud Alibaba Nacos 实战
一、简介
Nacos 提供了一组简单易用的特性集,实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 支持几乎所有主流类型的服务发现、配置和管理。
二、主要功能
2.1 服务发现与健康检测
2.2 动态配置
2.3 动态代理、负载均衡
2.4 服务及元数据管理
三、实例
3.1 下载安装 nacos
ps:如果使用 mysql 做数据存储,则需要在 nacos 第一次启动前运行 mysql.sql 地址如下:nacos 配置数据库初始化脚本
3.2 创建 nacos client
- pom.xml
<!-- nacos 做配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- nacos 做注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- application.yml
spring:
profiles:
active: dev # 开发环境
- bootstrap.yml
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 # 注册中心地址
config:
server-addr: localhost:8848 # 配置中心地址
file-extension: yml # 配置文件类型
group: dev # 配置文件所在分组
namespace: aa671604-4bf3-40ce-a1d0-7625d18b1f6e # 配置文件所在命名空间
# 配置文件命名格式
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yml
- application
@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
- controller
// 用于测试配置中心已经配置好了
@RestController
@RefreshScope
public class ConfigController {
@Value("${config.info}")
private String configInfo;
@Value("${server.port}")
private String port;
@GetMapping("/configInfo")
public String getConfigInfo() {
return port + ":\t" + configInfo;
}
}
四、nacos 持久化配置
单机模式:nacos 默认内嵌了derby 数据库,如果要使用mysql 则需先跑 mysql.sql 脚本
集群模式:nacos集群 + 外接 mysql 集群
4.1 linux 部署 nacos 集群
-
部署 mysql
nacos 配置数据库初始化脚本,初始化数据库
-
部署 nacos
修改 nacos/conf 下的 application.properties,设置 mysql 连接配置
修改 cluster.conf:设置 IP:PORT
修改 nacos 启动脚本:增加 -p 参数,修改启动后的实例名称
-
配置 nginx
配置 upstream cluster 用于负载均衡,将流量转发到 nacos 集群
-
启动
mysql
nginx
nacos 集群
-
微服务修改配置
配置中心地址改为 nginx 地址