(二)Spring Cloud: Eureka服务交互

(二)Eureka服务交互

Eureka Server

提供的功能

  1. 服务注册,所有的服务都注册到Eureka Server上面来
  2. 提供服务注册表,注册表就是所有注册上来服务的一个列表,Eureka Client在调用服务时,需要获取这个注册表,一般来说这个注册表会缓存下来,如果缓存失效,则直接获取最新的注册表
  3. 同步状态,Eureka Client通过注册、心跳等机制,和Eureka Server同步当前客户端的状态

Eureka Client

Eureka Client主要是用来简化每一个服务和Eureka Server之间的交互,Eureka Client会自动拉取、更新以及缓存Eureka Server中的信息,这样,即使Eureka Server所有节点都宕机,Eureka Client依然能够获取到想要调用的服务地址(地址可能不准确)。

服务注册

服务提供者(生产者)将自己注册到注册中心(Eureka Server),生产者与消费者的划分,只是根据业务功能的不同来进行定义,两者并不存在技术分类上的不同,所以两者均为Eureka Client,Client向Server注册时,需要向Server提供自身的IP、端口、名称、运行状态等。

所谓的业务划分生产者与消费者,实则是根据模块的功能类型不同来对服务定义生产/消费者,举个例子,A服务要调用B服务的接口,那么B就是生产者,A就是消费者,这两者都是Client。假如在多个模块中,有一个模块中专门负责与数据库交互、持久化,那么别的服务需要持久化时,就需要调用此模块,那么该模块就算是一个生产者。

服务续约

Eureka Client注册完成后,Client默认每30S向Server发送心跳消息来告诉Server自身状态。连续90S未收到Client消息,则Client进入掉线状态,Server将该服务移除。

#服务续约配置
#服务失效判定时间,默认90S
eureka.instance.lease-renewal-interval-in-seconds=90
#服务续约时间:多久一次向Server发送一次心跳,默认30S
eureka.instance.lease-expiration-duration-in-seconds=30

服务下线

当Eureka Client下线时,会主动向Server发送一条下线信息。

获取注册表信息

Eureka Client从Eureka Server上获取服务的注册信息,并将其缓存在本地,本地客户端在需要调用远程服务时,会从该信息中查找远程服务所对应的IP地址、端口等信息,Eureka Client上缓存的服务注册信息会定期更新,如果Eureka Server返回的注册信表信息与本地缓存的注册表信息不同的话,Eureka Client会自动处理。

Eureka集群原理

多个Eureka Server组成集群,不同的Eureka Server不区分主从节点,集群间不同Server通过Replicate进行数据同步,节点之间通过serviceUrl来相互注册,形成一个集群,集群中如果有一个节点宕机,那么Client会自动切换到其他节点。

eureka.client.service-url.defaultZone=http://eurekaA:1111/eureka,http://eurekaB:1112/eureka

你可能感兴趣的:(Spring,Cloud,java,分布式)