暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

eureka 设计思想

纯洁的明依 2021-03-05
661

eureka 源码高级结构图

1:eureka client 如何向eurekaServer 注册信息?

在eureka client 启动的时候 通过Http请求方式:源码如下:

eurekaServer 端提供给client注册信息的接口:

@POST
@Consumes({"application/json", "application/xml"})
public Response addInstance(InstanceInfo info,
@HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication) {


...//省略代码
registry.register(info, "true".equals(isReplication));
return Response.status(204).build(); // 204 to be backwards compatible
}

2 服务续约 如何实现?

定时器向server端发送心跳,时间间隔30s,

3 eurekaServer 何时剔除服务?

当90s没有收到服务续约的心跳

以上两个参数均可配置,但是不建议修改。默认分别为30s与90秒

eureka.instance.leaseRenewalIntervalInSeconds
eureka.instance.leaseExpirationDurationInSeconds

4 eureka client 如何获取注册信息列表?

eurekaClient 定时器 每隔30s 向eurekaServer 获取注册信息,将其换存在本地,方便调用其他服务,


5 服务下线

eurekaClient 向eurekaServer 发送下线通知,此后该eurekaClient 注册信息将从eurekaServer注册信息表里删除。下线即将调用:

    DiscoveryManager.getInstance().shutdownComponent();

6 eureka 自我保护机制

这里的保护是指 保护eurekaCLient 实例注册信息。

阀值数据:15分钟 75%。

简单说:eureka server 会统计在15分钟 client 没有续约的client 是否低于85%。如果低于,会将zhe xie 实例保护起来【让这些实例不会过期】

如果将保护机制打开的话 会出现一个问题:如果一个服务提供者 此时挂掉了,但是注册信息没有过期。此时恰好一个服务消费者调用了这个服务,那么将出现调用失败的情况,此时就是断路器发挥作用的时候。

====

如何关闭eurekaServer 自我保护机制【不推荐】

eureka.server.enable-self-preservation=false


7 eureka 自注册模式/

高可用集群搭建原理就是利用了这个。

文章转载自纯洁的明依,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论