博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eureka集群的两种配置方式:配置文件方式与DNS方式
阅读量:4692 次
发布时间:2019-06-09

本文共 2525 字,大约阅读时间需要 8 分钟。

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属性,具体配置可参考另一篇文章《》
    • 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,默认为false    use-dns-for-fetching-service-urls: true    #当前应用所在区域,默认为us-east-1    region: 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    #是否将自己注册到eureka    register-with-eureka: true

 

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

 

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

你可能感兴趣的文章
关于C#堆栈的几点说明
查看>>
我们应该去努力推动每一件有利于这个社会的一些事情
查看>>
flutte项目命令行打包
查看>>
HDU-2577 How to Type(递推,DP)(水)2017寒假集训
查看>>
SQL数据库开发知识总结:提高篇
查看>>
jsp基础语言-jsp注释
查看>>
Cocos2d-x mac下eclipse开发环境的搭建, 创建跨平台的cocos2dx项目
查看>>
Java学习 · 初识 面向对象基础一
查看>>
也谈WebKit、Gecko使用图形库
查看>>
Could not write file: C:\......\.classpath
查看>>
css里关于浏览器的前缀
查看>>
HDU - 1175 连连看 DFS (记录方向)
查看>>
重头开始学23种设计模式:单例模式
查看>>
mepg
查看>>
C primer Plus 作业第四章
查看>>
combobox 下拉框 高度 调节 呵呵
查看>>
数据库监控--12c Enterprise Manager配置
查看>>
webview加载页面为什么在UI线程里面做,难道不是耗时操作么
查看>>
adb server is out of date.killing
查看>>
JS 将json数组转为嵌套层级数组
查看>>