eureka client获取serviceUrls(eureka server地址)列表的过程:

  • 1. 根据use-dns-for-fetching-service-urls属性判断是从dns还是从config获取region和zone以及serviceUrl相关信息
  • 2. 获取过程首先从配置中获取应用所在region,通过region属性设置
  • 3. 根据region获取所有zone信息,dns与config获取方式不一样
    • 3.1. dns会请求dns服务器获取指定region的所有zone列表,如果没有查询到则抛出异常.使用该方式需要设定 eureka-server-d-n-s-name,eureka-server-u-r-l-context,eureka-server-port属性,具体配置可参考另一篇文章《eureka集群基于DNS配置方式》
    • 3.2. config则从配置文件的availabilityZones列表获取,如果没有配置,则返回defaultZone.使用该方式需要配置availability-zones(Map<region:zone>),service-url(Map<zone:serviceUrls>)
  • 4. 获取zone列表成功后需要对列表进行排序,排序根据prefer-same-zone-eureka而不同,该属性意为是否将相同名称的zone作为注册首选
    • 4.0. 这里有一个客户端zone的概念,该zone为availabilityZones的第一个zone,如果没有设置则为defaultZone
    • 4.1. 如果设置true,则查询zone列表,找到与客户端zone同名的元素,并将其之前元素转移到列表最后
    • 4.2. 如果设置false,则查找zone列表,找到第一个与客户端zone不同名的zone,并将其之前的元素转移到列表最后
  • 5. 然后循环获取所有zone对应的serviceUrls并按顺序追加到一个列表中
    • 5.1. 如果是配置方式,获取某个zone的serviceUrls为空则返回defaultZone的serviceUrl,而DNS方式不会进行任何处理

通过以上步骤可以获取到region对应的zone的serviceUrls.

这里出现了region,zone,serviceUrl这几个概念,可以简单理解为region包含多个zone,zone包含多个serviceUrl.但需要注意的是,zone可以出现在多个region中,serviceUrl可以出现在多个zone中,也就是说他们三个概念两两之间的关系是多对多而非一对多.

#基于DNS的配置
eureka:client:#DNS域名,获取其他信息将以该域名为根域名eureka-server-d-n-s-name: relinson.com#开启DNS方式获取serviceUrl,默认为falseuse-dns-for-fetching-service-urls: true#当前应用所在区域,默认为us-east-1region: region1#eureka服务根目录eureka-server-u-r-l-context: eureka#服务所在端口eureka-server-port: 9999#获取serviceUrl时候是否优先获取相同zone的列表(如果获取为空则获取所在region第一个zone),如果为false则优先获取不在相同zone的列表prefer-same-zone-eureka: true#是否获取注册信息到本地fetch-registry: true#是否将自己注册到eurekaregister-with-eureka: true

#基于CONFIG的配置
eureka:client:#开启DNS方式获取serviceUrl,默认为falseuse-dns-for-fetching-service-urls: false#当前应用所在区域,默认为us-east-1region: region1#获取serviceUrl时候是否优先获取相同zone的列表(如果获取为空则获取所在region第一个zone),如果为false则优先获取不在相同zone的列表#client所在zone为availabilityZones的第一个zone,如果未配置,则为defaultZoneprefer-same-zone-eureka: true#是否获取注册信息到本地fetch-registry: true#是否将自己注册到eurekaregister-with-eureka: true#与DNS获取的方式相同,这里需要手工配置包含哪些region以及zone(Map类型),如果没有给相关的region配置zone,则默认返回defaultZoneavailability-zones:region1: zone1-2,zone1-2,zone2-2region2: zone2-2,zone2-2,zone2-3#与DNS获取数据方式类似,这里需要手工配置每个zone包含哪些URL,如果应用所在区域没有zone,则默认返回defaultZone的数据service-url:zone1-1: http://xxx,http://xxx2 zone1-2: http://xxx,http://xxx2zone2-1: http://xxx,http://xxx2zone2-2: http://xxx,http://xxx2

转载于:https://www.cnblogs.com/relinson/p/eureka_ha_config_properties_and_dns.html

eureka集群的两种配置方式:配置文件方式与DNS方式相关推荐

  1. java reds 集群_java项目中配置redis-cluster集群的两种方式

    本文分两部分: (1)jedisCluster (2)Spring-Data-Redis集群配置和RedisTemplate用法 我这里是在本机上搭建的3主3从6个redis实例. 一,jedisCl ...

  2. Redis集群的三种配置方式案例

    前言 Redis有三种集群模式: 主从复制 哨兵(Sentinel) 集群(Cluster)

  3. eureka 集群失败的原因_Eureka集群的那些坑

    今天遇到一个Eureka集群的一个坑. 问题现场类似是这样的:两台Eureka组成的服务注册中心集群,两台服务提供方server1.server2,两个服务调用方client1.client2. 正常 ...

  4. java 连接mongodb 集群_Java 连接MongoDB集群的几种方式

    先决条件 先运行mongodb肯定是必须的,然后导入以下包: import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; im ...

  5. eureka集群高可用配置

    网上讲这个东西的很多,抄来抄去的,大部分类似,多数没讲明白为什么那么配置. 譬如eureka.client.register-with-eureka和fetch-registry是否要配置,配不配区别 ...

  6. Redis集群两种配置方式

    2019独角兽企业重金招聘Python工程师标准>>> 第一种使用:JedisCluster <bean id="jedisPoolConfig" clas ...

  7. (十六)Alian 的 Spring Cloud Eureka 集群配置(主机名方式)

    目录 一.背景 二.maven依赖 三.主类 四.Eureka服务配置 五.启动服务 5.1 服务1效果图(eureka-server1.com) 5.2 服务2效果图(eureka-server2. ...

  8. eureka集群基于DNS配置方式

    最近在研究spring cloud eureka集群配置的时候碰到问题:多台eureka server如果需要互相注册,需要在配置文件中将其他服务器地址配置写死.同样客户端启用服务发现功能(eurek ...

  9. (十七)Alian 的 Spring Cloud Eureka 集群配置(IP方式)

    目录 一.背景 二.maven依赖 三.Eureka服务主类 四.Eureka服务配置 五.启动服务 5.1 服务1效果图(10.130.3.66) 5.2 服务2效果图(10.130.3.111) ...

  10. eureka配置_F版本SpringCloud 5—Eureka集群和自我保护机制

    源码地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials 前言 上篇文章中,通过代码搭建了Eureka注册中心和客户端,是Eureka的简单应用 ...

最新文章

  1. linux系统安全设置
  2. 单变量线性回归中的梯度下降法求解代价函数的最小值
  3. javascript基础 (2)
  4. 渗透测试入门DVWA 教程1:环境搭建
  5. 构造函数内部原理 包装类
  6. openstack常用运维命令_运维人员常用的Linux命令汇总
  7. linux修改文件打开最大数(ulimit命令)
  8. Python+OpenCV:训练级联分类器(Cascade Classifier Training)
  9. 使用Python解压,对比文件
  10. 传统路径规划算法介绍
  11. 解压缩 tar命令详解
  12. 机器智能-高频问题:一阶逻辑转化合取范式
  13. 机器人专用符文_lol机器人新版符文搭配推荐 s8布里茨新版符文配置攻略
  14. mysql查询学生表年龄语句_表是student表-从学生表tstudent-学生表student
  15. 怎么恢复电脑删除的文件,误删除数据恢复
  16. Jmeter - JMeter监听器 -上篇(详解教程)
  17. mac 开启终端代理
  18. 快排和归并排序哪个更快
  19. 蓝桥5-4史丰收速算
  20. 基于jsp的新闻发布系统(论文)

热门文章

  1. Illustrator 教程,如何在 Illustrator 中描摹对象?
  2. Scrivener for Mac如何自定义快捷键
  3. 2018杭电多校第六场1009(DFS,思维)
  4. Sqoop 使用指南
  5. Android Messenger 跨进程通信
  6. One to One 的数据库模型设计与NHibernate配置
  7. Ext.Net系列:二Event之DirectEvent 示例2(Delay)
  8. 防止 7-Zip 生成的 ZIP 文件在 Mac OS X 下出现乱码
  9. SurfaceView实例
  10. 职场这样发邮件,你死定了!