Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理
| 微服务组件 | 文章地址 |
|---|---|
| spring cloud alibaba全家桶集合 | https://people.blog.csdn.net/article/details/123729595 |
| nacos注册中心、配置中心 | https://people.blog.csdn.net/article/details/123706688 |
一、搭建整合nacos二、 整合nacos 注册中心三、 整合nacos 配置中心
一、搭建整合nacosdocker-compose.yaml安装nacos
version: '3'
services:
nacos:
# 注意 2.0 不需要额外安装数据库了,docker run --name nacos-standalone -e MODE=standalone -d -p 8848:8848 -p 9848:9848 -p 9849:9849 nacos/nacos-server:2.0.3
image: 'nacos/nacos-server:2.0.3'
restart: always
container_name: nacos
environment:
# 启动模式 单机
MODE: 'standalone'
# nacos默认端口号
NACOS_SERVER_PORT: 8848
# # 是否开启权限系统
# NACOS_AUTH_ENABLE: 'true'
ports:
- '8848:8848'
- '9848:9848'
- '9849:9849'
#在当前目录打开终端,使用命令 docker-compose up -d 即可运行;
#在当前目录打开终端,使用命令 docker-compose down 即可运行;
安装完成后 http://127.0.0.1:8848/nacos/ 默认用户名和密码都是 nacos 进入后台管理页面
cloud-system模块中pom.xml添加nacos依赖
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery
配置文件中添加配置:
# nacos 地址
spring
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 应用
application:
# 应用名称
name: cloud-system-service
启动类上加上注解开启 @EnableDiscoveryClient 开启服务注册
发现服务已经注册上来了:
@RequiredArgsConstructor
@RequestMapping("/v1/nacos")
@RestController
public class NacosController {
private final DiscoveryClient discoveryClient;
@GetMapping("/get")
public R get(){
List instances = discoveryClient.getInstances("cloud-system-service");
ServiceInstance serviceInstance = instances.get(0);
// 获取到nacos注册中心上的服务ip以及端口
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
return R.data(host+":"+port);
}
}
测试发送get请求获取信息:
{
"code": 200,
"success": true,
"data": "10.113.229.45:8000",
"msg": "操作成功"
}
三、 整合nacos 配置中心
现在微服务存在的问题
配置文件增多,不好维护修改配置文件需要重新发布
统一管理配置, 快速切换各个环境的配置
相关产品:
百度的disconf 地址:https://github.com/knightliao/disconf
阿里的diamand 地址:https://github.com/takeseem/diamond
springcloud的configs-server: 地址:http://cloud.spring.io/spring-cloud-config/
阿里的Nacos:既可以当服务治理,又可以当配置中心,Nacos = Eureka + Config
官方文档
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
添加依赖:
com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config
注意配置文件加载优先级
不能使用原先的application.yml, 需要使用bootstrap.yml作为配置文件
配置读取优先级 bootstrap.yml > application.yml
bootstrap.yml
spring:
profiles:
# 使用 dev 分支配置
active: dev
application:
# 应用名称
name: cloud-gateway-service
cloud:
nacos:
config:
server-addr: 81.69.43.78:8848 #Nacos配置中心地址
file-extension: yaml #文件拓展格式
server:
port: 8002
将原来application.yml 注释,将原来application-dev.yml 拷贝到nacos中,将原来代码中的 应用名-dev.yml注释
nacos动态刷新配置:
我们修改了配置,程序不能自动更新,动态刷新就可以解决这个问题
@RefreshScope 动态刷新
在nacos中配置 useLocalCache 的值,然后再代码中动态获取
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}



