美文网首页
Eureka Server与Eureka Client的契约(L

Eureka Server与Eureka Client的契约(L

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-08-23 18:06 被阅读0次

    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服务的开源框架。

    相关文章

      网友评论

          本文标题:Eureka Server与Eureka Client的契约(L

          本文链接:https://www.haomeiwen.com/subject/rpotectx.html