SpringCloud 系列 --Eureka 常用配置

本贴最后更新于 1700 天前,其中的信息可能已经水流花落

1. 心跳检测配置

 客户端的实例会向服务器发送周期性的心跳,默认30s一次,可以通过修改eureka.instance.leaseRenewalIntervalInSeconds属性来改变这个时间。

 服务端接收心跳请求,如果在一定期限内没有接收到服务实例的心跳,那么会将该实例从注册表中清理掉,其他的客户端无法访问这个实例。这个期限默认值是90s, 可以通过修改客户端的 eureka.instance.leaseExpirationDurationInSeconds属性来改变这个值, 需要注意清理注册表是定时器执行(默认每隔60s一次),如果将 leaseExpirationDurationInSeconds设置为小于60s,虽然符合删除的条件,但是定时器还没到时间执行,所以这个实例仍然存在于注册表,可以修改服务器端定时清理注册表的时间间隔  eureka.server.eviction-interval-timer-in-ms 单位是毫秒。

 另外,如果开启了自我保护模式,则实例不会被踢除,在测试时,为避免自我保护模式的干扰,可以先关闭自我保护  eureka.server.enable-self-preservation=false

2. 注册表抓取间隔

默认情况下,客户端每隔30s去服务器端抓取注册表(可用的服务列表),并且将服务器端的注册表保存在缓存中,可以通过修改eureka.client.registryFetch-IntervalSeconds配置来改变注册表抓取间隔,但仍需要考虑性能。

3. 配置与使用元数据

框架自带的元数据包括实例 id, 主机名称, ip 地址, 如果需要自定义元数据,并提供给其他客户端使用,可以配置 eureka.instance.metadata-map 属性来指定,例如:
eureka :
instance:
hostname: localhost
metadata-map:
company-name: crazyit
配置了一个名为 company-name 的元数据,值为 crazyit.使用的一方可以调用 discoveryClient 的方法获取元数据,
代码如下:
image.png

4.自我保护模式

之前文章中的红色字体提醒意味着 eureka 进入了自我保护模式,客户端发送给服务器端的心跳失败率超过一定比例,服务会将这些实例保护起来,并不会马上剔除,此时另外的客户端可能会拿到一些无法使用的实例,这种情况可能导致灾难的"蔓延",可以使用容错机制解决,后续讲解,可以关闭自我保护模式,当时关闭自我保护后出现网络或者其他问题时候,将不会保护过期的实例。

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1459 回帖 • 31 关注
  • 自我保护
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...