java进阶(3)之Eureka注册中心原理以及性能调优

图解原理

在这里插入图片描述
看图说明:
1. 应用server的服务实例一上线,就会将自己注册到Eureka Server的注册表中;
2. 服务注册表一旦检测到有更新,就会将实例同步到读写缓存表;
3. 读写缓存表每隔30s,就会将实例信息同步给读缓存表;
4. 应用Client的服务,每隔30s,就会去Eureka Server的读缓存拉取所有的服务实例,这时候通信已经建立起来;
5. 服务注册表每隔60s,会自检测服务状态是否有更新,如果有不可用的服务,及时剔除掉;
6. 如果在90s这段时间内,服务实例还没发送心跳给Eureka ServerEureka Server就会认为该实例的服务已经挂掉了,就会将其从注册表中剔除,并立马同步给读写缓存。

默认参数弊端

从上图可看出:
一个服务感知另一个服务上线的最久时间是: 步骤3步骤4,也就是60s
一个服务感知另一个服务下线的最久时间是:步骤3步骤4步骤6,也就是150s

稍微对时间敏感一点的项目,等这么久,是很难受的,需要进行调优。

Eureka参数调优

Eureka Server

responseCacheUpdateIntervalMs

读写缓存同步给读缓存,默认是30s,将其改为3s

eureka.server.responseCacheUpdateIntervalMs = 3000

evictionIntervalTimerInMs

线程自检测时间默认是60s,将其改为6s

eureka.server.evictionIntervalTimerInMs = 6000

leaseExpirationDurationInSeconds

client心跳过期时间默认是90s,将其改为6s

eureka.instance.leaseExpirationDurationInSeconds = 6

应用实例

registryFetchIntervalSeconds

去Eureka Server拉取的时间默认是30s,将其改为3s:

eureka.client.registryFetchIntervalSeconds = 3

leaseRenewalIntervalInSeconds

发送给Eureka Server的心跳时间,默认是30s,将其改为3s:

eureka.client.leaseRenewalIntervalInSeconds = 3

调优结果

一个服务感知另一个服务上线的最久时间是: 步骤3步骤4,也就是6s
一个服务感知另一个服务下线的最久时间是:步骤3步骤4步骤6,也就是12s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值