eureka原理简介

eureka原理简介,第1张

现在由于eureka服务越来越多,发现服务提供者在停掉很久之后,服务调用者很长时间并没有感知到变化,依旧还在持续调用下线的服务,导致长时间后才能返回错误,因此需要调整eureka服务和客户端的配置,以便实现服务下线后快速感知。

需要调整服务注册中心、服务提供者和服务消费者三个配置。

先上要更改的配置:

1先要关闭自我保护 enable-self-preservation: false

2eviction-interval-timer-in-ms 启用主动失效,并且每次主动失效检测间隔为5s

Eureka Server会定时(间隔值是eurekaservereviction-interval-timer-in-ms,默认值为0,默认情况不删除实例)进行检查,如果发现实例在在一定时间(此值由客户端设置的eurekainstancelease-expiration-duration-in-seconds定义,默认值为90s)内没有收到心跳,则会注销此实例。

有些文档指出还需要设置下面的两个参数(上下两种写法),但都测试后暂时没发现什么强关联性,这里暂时先不设置。

客户端通过eurekainstancelease-renewal-interval-in-seconds 每隔这个时间会主动心跳一次,默认值为30s,更新自己的状态。Eureka Server收到心跳后,会通知集群里的其它Eureka Server更新此实例的状态。

lease-expiration-duration-in-seconds 设置服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除,一般是lease-renewal-interval-in-seconds的3倍。

Eureka Server会定时(间隔值是eurekaservereviction-interval-timer-in-ms,默认值为0,默认情况不删除实例)进行检查,如果发现实例在在一定时间(此值由eurekainstancelease-expiration-duration-in-seconds定义,默认值为90s)内没有收到心跳,则会注销此实例。

经过测试设置4s上报一次心跳,12s内无跳就让注册中心剔除服务比较合理,上报时间若为2s,1000个服务会造成对注册中心请求的压力,且2s有可能网络抖动,整个时长6s无响应就判为下线会造成并发压力。

消费端为了能快速响应服务请求会从Eureka Server拉取服务地址清单后缓存到本地(后面会增量获取),fetch-registry要设置为true,定期的更新客户端的服务清单时间 registry-fetch-interval-seconds: 8,这是消费端的设置。

只设置服务端Eureka Server的配置是无效的,还需要设置客户端来配合。

调用方访问一个在注册中心不存在服务ID响应是非常快的,但如果访问一个ID还存在,但对应ip服务已经挂了的服务就是404,长时间无响应。

服务提供者进程意外退出或服务完全卡住(是整个服务无法响应)情况是一样的,都是在指定服务的lease-expiration-duration-in-seconds时间内无心跳就会从注册中心剔除。

注册中心把服务剔除后,调用方还需要时间刷新到本地缓存。

在多机器上docker部署Spring Cloud发现有一个问题,即在docker容器内部,Spring Cloud eureka实例只能获取到docker内部网络的IP,如172xxx,并将其注册到注册中心,此时其他服务通过该IP在docker外部无法访问该服务。以下有两种解决方法:

启动容器时将宿主机的IP加到容器环境变量中然后在Spring Boot applicationyml 中使用该环境变量。

applicationyml

启动docker时加入 HOST 环境变量:

或使用docker-compose:

将容器以host模式运行

在Spring Cloud中配置IP访问

多网卡的情况

指定IP在某些场景下很有用,如某台服务器有eth0、eth1和eth2三块网卡,但是eth1可以被其它的服务器访问;如果Eureka Client将eth0或者eth2注册到Eureka Server上,其它微服务就无法通过这个IP调用该微服务的接口。

若在生产环境中使用,一般就不会直接使用IP注册到eureka注册中心了,由于生产环境通常由k8s集群或其他类似docker集群进行管理,因此一般会使用服务名等进行注册,由k8s再转发到具体的服务上。

参考链接:

以上就是关于eureka原理简介全部的内容,包括:eureka原理简介、Eureka(三)eureka集群的实现原理、Eureka服务下线后快速感知配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9599481.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存