Nacos学习

2,101 阅读2分钟

什么是Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

NACOS解决两个核心问题:动态配置管理,服务注册发现

几天使用下来,Nacos动态配置挺方便的,有自己的控制台,而且还支持不同namespace切换,已经可以考虑上生产,服务注册方面支持spring cloud、dubbo等,切换过去十分方便
体验是基本上可以替代spring-cloud-config + Eureka

本文使用版本Nacos: 1.0.1

Nacos启动

启动很简单

wget https://github.com/alibaba/nacos/releases/download/1.0.1/nacos-server-1.0.1.tar.gz
tar -zxvf nacos-server-1.0.1.tar.gz
#进入目录下的bin(这里单机启动) 执行shell 
sh startup.sh -m standalone

输入 http://ip:8848/nacos
账号、密码:nacos
进入就是nacos的控制台

动态配置管理

以spring boot为例,新建一个web项目nacos-sb(不演示)

这里先介绍几个概念

最外层的namespace是可以用于区分部署环境的,比如dev,uat,product等,其它两个领域模型不用多解释了,见名知意。其目的也非常明显,就是为了能够逻辑上区分两个目标对象

简单配置

在启动类加上注解

@NacosPropertySource指定的dataId,最终会对应到配置文件,autoRefreshed=true代表配置改变时会自动刷新

@EnableNacosConfig 配置开启nacosConfig功能,globalProperties是强制要求要输入,但其实我并没有为它赋值,只是用它默认的@NacosProperties,注解会指定许多值从自动从配置文件里取,例如String namespace() default "${nacos.namespace:}";

@NacosValue 类似spring boot的@Value

ok,现在我们启动项目
进入http://localhost:8080/get

由于还没配置dataId 所以str没有拿到值为默认值,那么现在创建一个配置

再次进入http://localhost:8080/get

根据profile和namespace实现多种环境切换

首先创建多个namespace

配置profile 这里由于生产测试环境用的nacos都是同一个 所以就直接配在这里了
增加application-prod.properties

注意这里的namespace用的是namespace的id

接着增加prod的配置

启动项目 可以查看到

就这样环境已经被切换到prod这个namespace了

注册中心Nacos