今天来说说Nacos做配置中心经常被问到的问题
加载多个配置文件怎么处理?
配置修改了如何监听?
支持多语言吗?
跟Apollo对比哪个更好?
部署简单吗?
↓↓
-1-
加载多个配置文件怎么处理?
通过@NacosPropertySource可以注入一个配置文件,如果我们需要将配置分类存储或者某些配置需要共用,这种需求场景下,一个项目中需要加载多个配置文件,可以可以直接使用多个@NacosPropertySource注解即可。
@NacosPropertySource
(
dataId
=
"nacos-springboot"
,
autoRefreshed
=
true
)
@NacosPropertySource
(
dataId
=
"redis"
,
autoRefreshed
=
true
)
@SpringBootApplication
public
class
NacosSpringBootApp
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
NacosSpringBootApp
.
class
,
args
);
}
}
或者@NacosPropertySources
@NacosPropertySources
({
@NacosPropertySource
(
dataId
=
"nacos-springboot"
,
autoRefreshed
=
true
),
@NacosPropertySource
(
dataId
=
"redis"
,
autoRefreshed
=
true
)
})
后面我们会讲解在Spring Cloud中使用,可以直接用配置文件的方式指定多个data-id。
-2-
配置修改了如何监听?
先介绍一种比较古老的方式,太繁琐了,如下:
@NacosInjected
private
ConfigService
configService
;
@PostConstruct
public
void
init
()
{
try
{
onMessage
();
}
catch
(
NacosException
e
)
{
e
.
printStackTrace
();
}
}
public
void
onMessage
()
throws
NacosException
{
configService
.
addListener
(
"nacos-springboot"
,
"DEFAULT_GROUP"
,
new
AbstractListener
()
{
public
void
receiveConfigInfo
(
String
config
)
{
System
.
err
.
println
(
config
);
}
});
}
通过ConfigService添加一个监听器,监听具体的配置文件
下面使用注解方式来监听,既简单又方便很直接,如下:
@NacosConfigListener
(
dataId
=
"nacos-springboot"
)
public
void
onMessage
(
String
config
)
{
System
.
out
.
println
(
config
);
}
当然配置监听还支持多类型的转换,上面的示列只是简单的获取整个配置的字符串,关于更多的类型转换后面我们单独讲解。
-3-
支持多语言吗?
Nacos本身是提供Http接口的,通过接口我们可以对配置进行操作。只是目前SDK这块只支持Java,其他语言的后面会支持,只是目前还没开发,通过后台的示列代码我们可以看到有支持多语言的计划。
其他语言目前可以使用API来对接:https://nacos.io/zh-cn/docs/open-api.html
-4-
跟Apollo对比哪个更好?
对比这块大家可以根据自身的需求去做一个比对,只要符合你的需求,那对你来说这个框架就是好的。
如果说你目前已经在使用Apollo,那么我建议还是不要换,太折腾。
如果你还没使用Apollo,在对配置中心做选型,这个时候可以去做下详细的对比。从功能点,稳定性,使用,部署等方面去比较。
如果你公司内部用了dubbo的话,我觉得Nacos可以考虑用起来,这样既然替代ZK,又能增加一个配置中心的功能,可以说是比较好的方式了。
-5-
部署简单吗?
Nacos部署非常简单,可以直接下载官方编译好的包,解压改改配置文件即可启动,集群部署也是一样的,后面我们会单独讲解集群部署。
同时还支持Docker部署,熟悉Docker的朋友就方便了。
-6-
多环境怎么区分?
阿里Nacos-配置-多环境
尹吉欢