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:心跳续约。



二,法院-契约管理者


这个契约管理者就是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拉取服务列表。



四,Eureka Server与Eureka Client的通信方式


Eureka Server与Eureka Client之间使用Jersey客户端来进行通信,具体的逻辑封装在EurekaTransport.class中,EurekaTransport.class是DiscoveryClient.class的内部类,里面封装了通信的具体参数。

什么是Jersey呢?引用维基百科的介绍 :Jersey RESTful Web Services框架是一个用Java开发RESTful Web服务的开源框架。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容