Eureka群集无法同步注册的服务今天正在学习Eureka配置服务,但无论如何,每个Eureka节点都发现了无法同步注册的服务
在网上搜索也找不到结果,以后直接复制别人的配置发现就可以了
比较我的构成就知道问题了。 eureka配置无法使用yaml语法“-”配置服务- URL
必须用“、”进行分割
可以用:替换此配置
eureka : client 3360 service-URL : default zone :-http://localhost 33608761/eureka-http://localhost 33608762/eureka eureka :客户端:服务- URL : default zone :3358 localhost 33608761/eureka,http://localhost:8762/eureka
然后,我们找到了一个名为eureka.client.service-url配置类EurekaClientConfigBean的配置bean
找到serviceUrl后,发现它是MapString、String型。 因为映射值类型不是列表,所以使用yaml中的’-’不会在列表中分析
那个被解析为什么? 激发了好奇心,决定看debug
私有映射,字符串服务=new hashmap (; 找到serviceUrl的set方法并打上断点,了解传入的map是什么样的
debug已启动此服务
发现传递的映射分别为defaultZone、defaultZone.0和defaultZone.1。
我知道默认区域。 defaultZone.0都是第一个值,defaultZone.1是第二个值
如果使用正确的配置
只有一个key defaultZone,value是我们配置的两个地址
请参阅如何将map中以逗号分隔的地址解析为每个eureka服务器的地址。 可以看到EurekaClientConfigBean中存在getEurekaServerServiceUrls的方法。 请参照有名的知识获取eureka服务器的urls
试着在这个方法上加个断点吧
现在获取serviceUrl是我们配置的,根据参数myZone提取结果,如果没有,就使用DEFAULT_ZONE
其实myZone和DEFAULT_ZONE都是defaultZone
获取后,可以看到调用了对serviceUrls进行逗号分割以获取数组
到此为止,一切都可以说,如果我用yaml的“-”配置在名为service-url、serviceUrl的地图上的话
与keydefaultZone对应的value为http://localhost:8761/eureka。 用逗号分割的话果然是这个
时,’拆分的服务URL可以在此获得这两个地址