eureka 自定义defaultZone无效问题_eureka defaultzone-程序员宅基地

eureka.client.service-url.defaultZone为什么自定义地址失效?
累计花费三四个小时,甚至clone了spring-cloud-netflix项目源码,终于被我发现了!

serviceUrl本身是个hashmap,初始化的时候会默认8761端口。
在这里插入图片描述
之后会读取yml(或properties)里serviceUrl下面的所有字段(键值对) 存到这个map里。
在这里插入图片描述
因为是存的是键值对,所以它并不能帮你检查拼写错误。
在这里插入图片描述
就算你在里面写了阿猫阿狗,都不会有任何错误提示(在其他对象里写了错误的属性,idea会有淡黄色背景色提醒)
在这里插入图片描述
接下来就很好解释为什么serviceUrl和service-url能通用,而defaultZone不能写成default-zone了。
首先要获得一个AwsEndpoint实例,它继承了DefaultEndpoint.
在这里插入图片描述
它的serviceURI是在这里得到的:
在这里插入图片描述
这个方法点进去看,发现它是根据zone去serviceUrl map里取值,而zone的值(即要查的map的key)就是defaultZone
在这里插入图片描述
假使zone字符串是个空值,或者在map里查到空值,也会默认去查defaultZone。所以这个属性必须写成 “defaultZone: xxxx " 差一个字符都不行。
在这里插入图片描述
补充一下,为什么zone会是 “defaultZone”?
zone是从availZones里拿的。availZones会从config的availabilityZones里拿,按逗号分隔;如果没有,就返回 “defaultZone” (这点在getAvailabilityZones方法和getAvailabilityZones下面的if语句中都有保证)。
我这里没有配置availabilityZones,所以availZones就只能拿到defaultZone。
在这里插入图片描述
在这里插入图片描述
getZoneOffset方法是遍历availZones数组,查询instanceZone在数组中的位置,如果查不到,就返回下标0(相当于缺省值)。这里的instanceZone的值是"defaultZone"这也是为什么最后zone会得到"defaultZone”。instanceZone的值是方法调用的时候传进来的。
在这里插入图片描述
接下来看为什么instanceZone是"defaultZone"
首先是getAvailabilityZones方法,之前已经分析过了,因为没有配置availabilityZones,所以会拿到一个只有"defaultZone的数组"
instanceZone
getZone方法会返回availZone的第一个值(如果没有,返回"default")。下面的判断条件只有在name=Amazon的时候才会成立,所以可以忽略。根据上文,我们的availZone只有一个值{“defaultZone”},这就是instanceZone的值为"defaultZone"的原因
在这里插入图片描述

最后补充一下,读取eureka endpoints有DNS和config两种方式。上面所说的都是在选择config的情况下。在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shine_guo_star/article/details/103418188

智能推荐

容斥原理_msk&1==0-程序员宅基地

文章浏览阅读634次。转自于:http://www.cppblog.com/vici/archive/2011/09/05/155103.html这篇文章发表于http://e-maxx.ru/algo/inclusion_exclusion_principle,原文是俄语的。由于文章确实很实用,而且鉴于国内俄文资料翻译的匮乏,我下决心将其翻译之。由于俄语对我来说如同乱码,而用Google直接翻译中文的话又变得面目_msk&1==0

linux dev/shm,巧用linux服务器下的/dev/shm/,避开磁盘IO不给力!-程序员宅基地

文章浏览阅读280次。巧用linux服务器的/dev/shm/,如果合理使用,可以避开磁盘IO不给力,提高网站访问速度。首先让我们认识一下,什么是tmpfs和/dev/shm/?tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。它有如下2个优势 : 1. 动态文件系统的大小。2. tmpfs 的另一个主要的好处是它..._linux 把缓存目录放入 /dev/shm

直播回顾|大规模点云显示技术-程序员宅基地

文章浏览阅读70次。点击上方“计算机视觉工坊”,选择“星标”干货第一时间送达大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间(bilibili号:3D视觉工坊:https://space.bili..._点云显示技术

【phpBB 】style button dose not show on Admin control panel-程序员宅基地

文章浏览阅读484次。Could not get style shows in Administrator Control panel , 登陆到PHPBB的管理员后台之后, 无法安装和检测到任何的style, 但是事实上已经上传style包。

yum install dockers 20 依赖_docker 20依赖-程序员宅基地

文章浏览阅读436次。执行:执行yum install docker-ce docker-ce-cli containerd.io报错解决报错container-selinux 」= 2:2.74 ; slirp4netns >= 0.4 ; fuse-overlayfs >= 0.7错误:软件包:3:docker-ce-19.03.12-3.el7.x86_64 (docker-ce-stable) 需要:container-selinux >= 2:2.74错误:软件包:dock_docker 20依赖

GDB调试:教你简单了解并使用GDB调试程序-程序员宅基地

文章浏览阅读3.1k次。(GNU symbolic debugger) 是由 GNU 软件系统社区提供的。当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序,同 GCC 配套组成了一套完整的开发环境。何谓调试?就是让代码一步一步慢慢执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数据;也可以让程序一次只执行一条或者几条语句,看看程序到底执行了哪些代码。_gdb调试程序

随便推点

通过dba_hist_*来进行诊断-程序员宅基地

文章浏览阅读94次。在Oracle10g中增加了dba_his_*类统计信息表,在瓶颈时间过时了的时候,可以参考这些表来诊断瓶颈来源。 1、确定时间段:select * fromdba_hist_snapshot ..._dba_hist_proc

(续)linux SD卡初始化---mmc_sd_init_card函数-程序员宅基地

文章浏览阅读168次。mmc_sd_init_card剩下的关于UHS-I的分支结构。uhs-I的初始化流程图如图:红线标出的部分是已经做了的事,与上一篇那个流程图是一致的,之后就是if分支中做的事。if分支中的函数mmc_sd_init_uhs_card:/* * UHS-I specific initialization procedure */static int mmc_sd..._mmc/sd controller initialization. mmc/sd card: mid: 0x70 read block: 512 byt

CodeForces - 998D - Roman Digits(打表 找规律)(本来应该是推公式的题吧)_let's introduce a number system which is based on -程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏2次。题目链接:http://codeforces.com/problemset/problem/998/D题目:Let's introduce a number system which is based on a roman digits. There are digits I, V, X, L which correspond to the numbers 1, 5, 10 and 5..._let's introduce a number system which is based on a roman digits. there are

Android应用程序自适应屏幕大小的解决办法_<application android:screenorientation="landscape-程序员宅基地

文章浏览阅读1.4k次。android应用自适应多分辨率的解决方法 1. 首先是建立多个layout文件夹(drawable也一样)。在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等。需要适应那种分辨率就写成什么。注意: a. 较大的数字要写在前面:比如layout-854x480而不能写layout-480x854._

XPATH如何选择不包含某一个属性的节点?_xpath筛选不包含的节点-程序员宅基地

文章浏览阅读3.3w次,点赞4次,收藏12次。XPATH如何选择不包含某一个属性的节点?今天博主在写一个xpath的时候就碰到了这个问题。我们知道选择包含某一特定属性的节点,可以使用例如//tbody/tr[@class]来选择。那么不含某属性的节点如何用xpath取得呢?这里可以用到not。例如排除一个属性的节点可以使用//tbody/tr[not(@class)]来写,排除一个或者两个属性可以使用//tbody/tr[no_xpath筛选不包含的节点

IP端口扫描工具(Tenable Nessus)的简介-程序员宅基地

文章浏览阅读2.2k次。Tenable Nessus是一款使用方便的 IP、端口扫描工具。 利用它可以获得被扫描计算机的 ping 响应时间、主机名称、计算机名称、工作组、登录用户名、MAC地址、TTL、NetBios 信息等;您也可以指定扫描端口,查看目标计算机开放端口的情况。Nessus是一个顶级的漏洞扫描程序,它由Tenable Network SecurityNessus 被认为是目前全世界最..._tenable nessus