Eureka的一下概念
- Register-服务注册
服务提供者在启动的时候会通过发送REST请求将自己注册到Eureka Server上,同时还携带了自身服务的一些元数据信息。Eureka Server在接收到这个REST请求之后,将元数据信息存储在一个双层结构的Map集合中,第一层的key是服务名,第二层的key是具体服务的实例名,
- Renew-服务续约
在注册完服务之后,服务提供者会维护一个心跳来不停的告诉Eureka Server:“我还在运行”,以防止Eureka Server将该服务实例从服务列表中剔除,这个动作称之为服务续约,和服务续约相关的属性有两个,如下:
//配置用来定义服务失效时间,默认为90秒
eureka.instance.lease-expiration-duration-in-seconds=90
//用来定义服务续约的间隔时间,默认为30秒。
eureka.instance.lease-renewal-interval-in-seconds=30
- 获取服务注册列表信息
Eureka Client 从Eureka Server 获取服务注册表信息,并将其缓存到本地。
默认情况下 Client使用Server来获取服务注册列表信息
- 服务下线
服务提供者在运行的过程中可能会发生关闭或者重启,当服务进行 正常 关闭时,它会触发一个服务下线的REST请求给Eureka Server,告诉服务注册中心我要下线了,服务注册中心收到请求之后,将该服务状态置为DOWN,表示服务已下线,并将该事件传播出去,这样就可以避免服务消费者调用了一个已经下线的服务提供者了。
DiscoveryManager .getinstance() .shutdownComponent();
- 服务剔除
上面我们说到了服务下线问题,正常的服务下线发生流程有一个前提那就是服务 正常 关闭,但是在实际运行中服务有可能没有正常关闭,比如系统故障、网络故障等原因导致服务提供者非正常下线,那么这个时候对于已经下线的服务Eureka采用了定时清除:Eureka Server在启动的时候会创建一个定时任务,每隔60秒就去将当前服务提供者列表中超过90秒还没续约的服务剔除出去,通过这种方式来避免服务消费者调用了一个无效的服务。