misakacoder

Results 17 comments of misakacoder

@kangzhaok endpoint配置的是地址服务器,client会定时去读地址服务器来获取和维护nacos集群列表,这样比较灵活

@kangzhaok 但是他这个文档说的直接配置serverAddr比endpoint读取nacos地址的优先级高,但是我看代码好像并不是这样

@KomachiSion 如果设置isUseEndpointParsingRule为false,config的ServerListManager的地址优先级就是对的,但是我看默认值是true 我那个pr那行代码那里 ![image](https://github.com/alibaba/nacos/assets/36252937/a10f6441-1d81-4322-a7ea-a672ca33c018) 这里会把serverAddrsStr置空,构造函数又是优先判断serverAddrsStr字段的,这样看isUseEndpointParsingRule也会影响优先级了 ![image](https://github.com/alibaba/nacos/assets/36252937/3a52123b-261b-4d05-b222-99730bd3a280)

@KomachiSion 就是都改成按文档说的serverAddr优先呗,但是这个也受天池大赛的影响吧,比赛可以一起重构了?

@KomachiSion 配置中心parsing=false时,serverAddr优先这个应该是bug吧,parsing应该只影响endpoint才对,不应该影响别的参数。当然代码优先级和文档不符这个,确实endpoint优先好一点,实际上使用endpoint比serverAddr灵活一些。

> 2. parsing=false情况下, 忽略ALIBABA_ALIWARE_ENDPOINT_URL, 其他保持和parsing=true一致, 即 用户传入的`endpoing`或`-Dendpoint` -> 传入的`serverAddr`和`-DserverAddr`. 我理解的parsing就只是用来控制endpoint是否需要当成变量来解析,就算设置成false,环境变量优先级高于命令行参数或者Properties还是应该存在的吧,而不是忽略环境变量。

**同时设置env和prop** **1. parsing=true,优先读取env** ![image](https://github.com/alibaba/nacos/assets/36252937/d5574fef-b585-405c-9b54-9f193c86448e) --- **2. parsing=false,优先读取prop** ![image](https://github.com/alibaba/nacos/assets/36252937/b0580307-de31-446c-ac34-952458499831) --- **3.parsing=true,env为变量,prop为常量,最终读取了env但是未解析成常量** ![image](https://github.com/alibaba/nacos/assets/36252937/7e0b474e-7e9c-4ec1-8a41-75e152a04a9f) --- **4.parsing=false,env为变量,prop为常量,最终读取了prop** ![image](https://github.com/alibaba/nacos/assets/36252937/627139e9-6ce5-41b5-9c9e-c5ec0cd38ef7) --- **5.parsing=true,env为常量,prop为变量,最终读取了prop并解析成常量** ![image](https://github.com/alibaba/nacos/assets/36252937/ce0a41ac-ac6a-4c89-ae1e-da0a4599237d) --- **6.parsing=false,env为常量,prop为变量,最终读取了prop** ![image](https://github.com/alibaba/nacos/assets/36252937/90429325-e638-41e9-938c-fd9a95da43e8) --- @KomachiSion 以上测试结果3和5和你描述的也还是有些不一样,env和prop都为变量的情况就没测试了,看不出来优先读取的是谁。其实我理解的这个设计,env传参、(-D、prop)传参 **(nacos 这2个类型好像没有优先级区别)** 应该是类似于SpringBoot的配置优先级一样来设计的吧,相同的key的配置,-D > env > yml,但是测试出来又不完全是,不知道是不是按照我想的这样设计的。

> 另外5的话, 确实如果endpoint有变量时,优先级高于ALIBABA_ALIWARE_ENDPOINT_URL, 但是如果两者都没有变量时,ALIBABA_ALIWARE_ENDPOINT_URL优先级更高。 > > 这个部分逻辑反正封装在ParamUtil.parsingEndpointRule中,只要保持这里面逻辑保持一致即可。 嗯,因为我理解的是env > prop,即先从环境变量中找ALIBABA_ALIWARE_ENDPOINT_URL的值,如果值为空,再从prop中找endpoint的值,最后按照parsing的值来确实是否需要解析前面找到的值为最终的endpoint。反正重构寻址保持原来的endpoint解析的逻辑就行了呗。实际上用的话,估计也配不到我上面这么多种复杂的组合。