Eureka服务详解

1、服务注册

在Eureka Client启动的时候,将自身的服务的信息发送到Eureka Server,包括比如IP地址、端口,运行状况指示符URL,主页等。
在DiscoveryClient类有一个服务注册的方法register(),该方法是通过Http请求向Eureka Client注册。 
如果需要向Eureka Server注册,则开启注册,同时开启了定时向Eureka Server服务续约的定时任务,

2、服务续约 

Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。 正常情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。 建议不要更改续约间隔。

eureka.instance.lease-renewal-interval-in-seconds:10    #客户端配置 ,eureka客户端需要向eureka服务器发送心跳的频率  (Spring Cloud默认该配置是 30s)

eureka.instance.lease-expiration-duration-in-seconds:30   # 客户端配置,eureka服务器在接收到最后一个心跳之后等待的时间,然后才能从列表中删除此实例 (Spring Cloud默认该配置是 90s)
 

3、客户端从服务器获取注册列表信息 

Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。
该注册列表信息定期(每30秒钟)更新一次(从服务端查询)。
每次返回注册列表信息可能与Eureka客户端的缓存信息不同, Eureka客户端自动处理。
如果由于某种原因导致注册列表信息不能及时匹配,Eureka客户端则会重新获取整个注册表信息。

4、客户端服务下线
Eureka客户端在程序关闭时向Eureka服务器发送取消请求。 发送请求后,该客户端实例信息将从服务器的实例注册表中删除。

5、服务端 剔除客户端服务

在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。

6、自我保护

自我保护机制的工作机制是如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时会出现以下几种情况:
1、Eureka Server不再从注册列表中移除因为长时间没收到心跳而应该过期的服务。
2、Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可用。
3、当网络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中。

4、服务器开启自我保护模式,即不再剔除注册列表的信息。

5、如果是Eureka Server自身的网络问题,导致Eureka Client的续约不上,Eureka Client的注册列表信息不再被删除,

6、直到心跳回复正常后退出自我保护模式

7、Eureka宁可保留也许已经宕机了的client端 , 也不愿意将可以用的client端一起剔除。
自我保护机制下错误

eureka.server.enable-self-preservation:false   #服务端配置关闭自我保护模式,默认为true。

eureka.server.eviction-interval-timer-in-ms :10000     # 服务端配置每隔10s扫描服务列表,移除失效服务,默认60秒

7、eureka默认使用Ribbon做负载均衡

你可能感兴趣的:(springcloud)