Eureka源码 扩展讲解— Eureka中Region和Zone概念介绍
2022-04-18 16:12:49 0 举报
Eureka源码 扩展讲解— Eureka中Region和Zone概念介绍
作者其他创作
大纲/内容
region:beijing
Region可理解为是地理上的分区,比如北京,武汉这种Zone可理解为上海下面的机房
服务消费者和服务提供者分别属于哪个zone,均是通过eureka.instance.metadata-map.zone来判定的。服务消费者会先通过ribbon去注册中心拉取一份服务提供者的列表,然后通过eureka.instance.metadata-map.zone指定的zone进行过滤,过滤之后如果同一个zone内的服务提供者有多个实例,则会轮流调用。只有在同一个zone内的所有服务提供者都不可用时,才会调用其它zone内的服务提供者。
Eureka Server-1
Service-1
应用实例3
Service-2
如上图所示,有一个region:beijing,下面有zone-1和zone-2两个分区,每个分区内有一个注册中心Eureka Server和一个服务提供者Service。在zone-1内创建一个Consumer-1服务消费者,其会优先调用同一个zone内的Service-1,当Service-1不可用时,才会去调用zone-2内的Service-2。
配置文件详解
应用实例1
zone-1
Eureka注册中心在远程,俩client在本地应该如何通过eureka来debug?有时候会有这样的场景,俩应用分别是同学A和同学B负责的,通过eureka通信,这时候又想本地debug,此时就得设置下参数,让俩应用在一个单独的zone下面,这时候俩应用通信时,会优先走这个自定义的zone:eureka.instance.metadata-map.zone=zone1eureka.client.preferSameZoneEureka=true
整个分区分为两步:(1)服务注册:要保证服务注册到同一个zone内的注册中心,因为如果注册到别zone的注册中心的话,网络延时比较大,心跳检测很可能出问题。(2)服务调用:要保证优先调用同一个zone内的服务,只有在同一个zone内的服务不可用时,才去调用别zone的服务。
Consumer-1
Eureka注册中心
Zone:机房1
Eureka Server-2
Region:武汉
服务调用的配置文件
配置region和zone的属性参数是:# 生产环境一般是配置eureka集群或者短域名方式eureka.client.service-url.defaultZone=http://localhost:9000/eureka# 当Eureka服务器部署在不同地域时,可设置此参数eureka.client.region=myRegion当配置了zone的话,在相同zone下面的俩应用,会优先取找本zone下面的应用实例并进行通信。
举例
应用实例2
当一个服务(作为一个eureka client)向注册中心(eureka server)注册的时候,会根据eureka.client下的配置来进行注册。这里主要关心有多个注册中心的情况下,服务会注册到哪个注册中心,并且和哪个注册中心来维持心跳检测。注册中心选择逻辑:(1)如果prefer-same-zone-eureka为false,按照service-url下的list取第一个注册中心来注册,并和其维持心跳检测。不会再向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的情况下,才会依次向其它的注册中心注册,总共重试3次,如果3个service-url都没有注册成功,则注册失败。每隔一个心跳时间,会再次尝试。(2)如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,然后通过这个zone取service-url下的list,并向list内的第一个注册中心进行注册和维持心跳,不会再向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的情况下,才会依次向其它的注册中心注册,总共重试3次,如果3个service-url都没有注册成功,则注册失败。每隔一个心跳时间,会再次尝试。所以说,为了保证服务注册到同一个zone的注册中心,一定要注意availability-zones的顺序,必须把同一zone写在前面
服务注册的配置文件
Consrumer-1
0 条评论
回复 删除
下一页