《Spring Cloud与Docker微服务架构实战》周立 --笔记
服务发现简介
前面我们知道硬编码提供者地址存在许多问题,在微服务架构中,服务发现组件可以解决这些问题,让服务消费者无需修改配置就可动态获取服务提供者网络信息。
提供这种能力,服务发现组件的架构图为:
服务发现组件,服务提供者,服务消费者三者之间的关系为:
(1) 所有微服务启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件存储这些信息。–服务注册,服务注册表
(2) 服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务发现者的接口。–服务发现
(3) 微服务与服务发现组件之间使用一定机制通信,服务发现组件若长时间无法与某微服务实例通信,则注销该实例。–服务检查
(4) 微服务网络地址发生变更时,会重新注册到服务发现组件。
Spring Cloud提供了多种服务发现组件支持,例如,Euraka,Consul,ZooKeeper。下面介绍服务发现组件Euraka。
Eureka原理
Eureka是基于REST的服务,包含Client和Server两部分,集成在Spring Cloud Netflix中,实现微服务注册与发现。
Region和Availability Zone
Region和Availability Zone都是AWS的概念,Region表示AWS中的地理位置,一个Region中有多个Availability Zone,各个Region之间隔离,如下图:
Application Service:相当于服务提供者
Application Client:相当于服务消费者
Make Remote Call:可理解为调用REST API的行为
us-east-1x:都是Zone,属于us-east-1这个Region。
Eureka Server:提供服务发现能力。
Eureka Client:用于简化与Eureka的交互。
微服务启动后,会周期地向Eureka Server发送心跳已续约“租期”;
如果Eureka Server在一定时间内未收到某个微服务实例的心跳,Eureka Server将注销该实例;
多个Eureka Server实例之间通过复制的方式实现服务注册表中数据的同步;
Eureka Client会缓存服务注册表中的信息:(1)微服务无需每次都请求Eureka Server,降低了Eureka的压力;(2)即使Eureka Server都宕掉,缓存服务注册表可以继续给微服务提供信息。