最近使用Nacos的一些问题

Nacos是什么这里就不做过多介绍了,可以看看我之前的文章:

最近一个新的产品在使用Nacos做注册中心和配置中心,在使用的过程中也发生了一些小问题,在此记录下。

 

使用版本:

 

<dependency>  <groupId>com.alibaba.boot</groupId>  <artifactId>nacos-config-spring-boot-starter</artifactId>  <version>0.2.2</version></dependency>

配置不刷新

比如我们在启动类上通过@NacosPropertySource指定了dataId,然后也配置了自动刷新,配置如下:

 

@NacosPropertySource(dataId = "application", autoRefreshed = true, type = ConfigType.YAML)

在具体使用的时候也没太去注意,直接就用了@NacosValue去获取对应的配置内容。刚开始没注意到说在后台改了配置,应用中居然没生效,后面是因为需要修改一个配置内容,发现改了之后没效果,才发现这个问题。

 

解决也非常简单,在@NacosValue中也将autoRefreshed设置为true就可以了,默认值是false。也就是说@NacosPropertySource和@NacosValue中都要配置才行。

 

我个人感觉这个不是很方便,大部分人都会认为@NacosPropertySource设置了应该就是这个对应的dataId里面的都可以自动刷新,最重要的是自动刷新是配置中心最基本的功能,我没搞明白为什么默认要关闭,直接默认开启多友好。

 

还有就是推荐大家都用@Value的方式进行配置的注入,这样做的好处在于当配置中心切换成其他的,比如Apollo的时候,不用改任何代码,如果用的是@NacosValue的话,那么就得改代码了。

 

但是@Value的弊端在Spring Boot中目前是无法动态更新的,只能依赖@RefreshScope才可以,但@RefreshScope这玩意是Spring Cloud中的,如果你没用Spring Cloud就尴尬了。。。

 

不知道有没有其他方式能实现,但在Apollo中@Value是支持动态刷新的,点赞点赞。

日志狂输出

由于Nacos naming模块中输出了很多info级别的日志,刚好项目中也设置了info级别,这个时候就会疯狂输出下面的日志,一天下来99%的日志都是无用的,浪费磁盘....

com.alibaba.nacos.client.naming -227843770 [com.alibaba.nacos.client.
naming.updater] INFO  ....

 

在Nacos的文档中有提到了日志级别的调整,如下图:

 

             

 

如果你用的log4j的换,自己将对应的配置级别调高就行,比如:

 

<logger name="com.alibaba.nacos.client.naming" additivity="false">  <level value="warn"/>  <appender-ref ref="FileAppender" />  <appender-ref ref="ConsoleAppender" /></logger>

以上两个问题并不是功能有问题,而是在刚开始使用的过程中,由于不是很熟悉,会出现的问题。

使用Nacos的Go客户端可以在Go语言中使用Nacos进行服务配置和发现。下面是一个使用Nacos的Go客户端的示例代码: ```go package main import ( "fmt" "github.com/nacos-group/nacos-sdk-go/clients" "github.com/nacos-group/nacos-sdk-go/clients/naming_client" "github.com/nacos-group/nacos-sdk-go/common/constant" "github.com/nacos-group/nacos-sdk-go/vo" ) func main() { // 创建Nacos客户端配置 clientConfig := constant.ClientConfig{ NamespaceId: "your_namespace_id", TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "/tmp/nacos/log", CacheDir: "/tmp/nacos/cache", RotateTime: "1h", MaxAge: 3, LogLevel: "debug", } // 创建Nacos服务器配置 serverConfigs := []constant.ServerConfig{ { IpAddr: "your_nacos_server_ip", Port: 8848, }, } // 创建Nacos客户端 nacosClient, err := clients.CreateNamingClient(map[string]interface{}{ "clientConfig": clientConfig, "serverConfigs": serverConfigs, }) if err != nil { fmt.Println("Failed to create Nacos client:", err) return } // 注册服务 serviceName := "your_service_name" ip := "your_service_ip" port := uint64(your_service_port) err = nacosClient.RegisterInstance(vo.RegisterInstanceParam{ Ip: ip, Port: port, ServiceName: serviceName, }) if err != nil { fmt.Println("Failed to register service:", err) return } // 发现服务 service, err := nacosClient.GetService(vo.GetServiceParam{ ServiceName: serviceName, }) if err != nil { fmt.Println("Failed to get service:", err) return } // 打印服务信息 fmt.Println("Service:", service) } ``` 请注意,上述代码中的"your_namespace_id"、"your_nacos_server_ip"、"your_service_name"、"your_service_ip"和"your_service_port"需要替换为实际的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值