大话微服务配置中心:Eureka Server与Eureka Client的契约(Lease.class)

Eureka Server与Eureka Client之间签订了一个契约(Lease.class),这是它们之间正常运转的根基。
寒来暑往,年复一年,由于契约的存在,微服务系统得以提供稳定的发现注册服务。
以心跳续约为例,Eureka Client每隔30秒发送一次心跳续约。Eureka Server收到客户端发来的请求后,会重新计算租期。


一,一纸契约

 

Eureka Server与Eureka Client之间签订了一个契约。这个契约就是Lease.class。
这个契约维护着各个约定的到期时间,Eureka Server开启定时任务,一旦到了履行契约条款的时候,就去执行一段逻辑,用实际行动捍卫契约。
这个契约还定义了三项具体的承诺:
register:服务注册。
cancel:服务下线。
renew:心跳续约。

 

二,法院-契约管理者

 

契约定好了,但是如果没有管理者,这个契约还是一纸空文。
Eureka Server与Eureka Client之间的契约管理者就是LeaseManager.class。
LeaseManager.class定义了契约的行为方法,一共有4个方法。
register:处理Eureka Client发送过来的服务注册请求。
cancel:处理Eureka Client发送过来的服务下线请求。
renew:处理Eureka Client发送过来的心跳续约请求。
evict:Eureka Server主动发起的定时任务,定期清理无效节点。默认执行周期是60秒。


三,用行动兑现契约

 

有了契约,还要有具体行动。
LeaseManager.class的具体实现类是InstanceRegistry.class。这个类是Spring Cloud包下面的,其实就是对netflix的实现进行了一层包装,最终还是调用了netflix实现类PeerAwareInstanceRegistryImpl.class。

Eureka server端契约的核心处理类:
PeerAwareInstanceRegistryImpl.class
Eureka client端契约的核心处理类:
DiscoveryClient.class

DiscoveryClient.class主要功能如下:
1,注册服务到Eureka server。
2,下线服务,并从Eureka server服务列表删除服务该服务。
3,发送心跳续约到Eureka server。
4,从Eureka server拉取服务列表。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章