《重新定义Spring Cloud实战》——3.3.4 Zone及Region设计
3.3.4 Zone及Region设计
由于Netflix的服务大部分在Amazon上,因此Eureka的设计有一部分也是基于Amazon的Zone及Region的基础设施之上。
在Amazon EC2托管在全球的各个地方,它用Region来代表一个独立的地理区域,比如Eureka Server默认设置了4个Region:us-east-1、us-west-1、us-west-2、eu-west-1。Amazon的部分Region代码及名称列表如表3-4所示。
表3-4 Amazon云Region代码及名称列表
在每个Region下面,还分了多个AvailabilityZone,一个Region对应多个AvailabilityZone。每个Region之间是相互独立及隔离的,默认情况下资源只在单个Region之间的Availability-Zone进行复制,跨Region之间不会进行资源复制。Region与AvailabilityZone之间的关系图3-1所示。
图3-1 Region与AvailabilityZone之间的关系图
AvailabilityZone就类似Region下面的子Region,比如us-east-1的Region可分为us-east-1a、us-east-1c、us-east-1d、us-east-1e这几个AvailabilityZone。AvailabilityZone可看作Region下面的一个个机房,各个机房相对独立,主要是为了Region的高可用设计,当同一个Region下面的AvailabilityZone不可用时,还有其他AvailabilityZone可用。
Eureka Server原生支持了Region及AvailabilityZone,由于资源在Region之间默认是不会复制的,因此Eureka Server的高可用主要就在于Region下面的AvailabilityZone。
Eureka Client支持preferSameZone,也就是获取Eureka Server的serviceUrl优先拉取跟应用实例同处于一个AvailabilityZone的Eureka Server地址列表。一个AvailabilityZone可以设置多个Eureka Server实例,它们之间构成peer节点,然后采用Peer to Peer的复制模式。
Netflix的Ribbon组件针对多个AvailabilityZone提供了ZoneAffinity的支持,允许在客户端路由或网关路由时,优先选取与自身实例处于同一个AvailabilityZone的服务实例。
- 点赞
- 收藏
- 关注作者
评论(0)