微服务需要一个服务发现组件,来使服务提供者注册自己的信息,服务消费者从服务发现中心获取服务提供者的信息并缓存下来。这里记录下springcloud的eureka的使用。
1.eureka集群配置,保证高可用
#表示表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间
# 在这个时间内若没收到下一次心跳,则将移除该instance,默认为90秒
eureka.instance.lease-expiration-duration-in-seconds=30
#表示eureka client发送心跳给server端的频率
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.instance.prefer-ip-address=true
eureka.instance.metadata-map.weight=11
#健康检查和状态页的url地址信息,面板点击会出来的页面
eureka.instance.statusPageUrlPath=/swagger-ui.html
2.eureka的登录认证,注意密码结尾不能含有@
eureka:
client:
service-url:
defaultZone: http://${eureka.auth.username}:${eureka.auth.password}@localhost:8761/eureka/,http://localhost:8762/eureka/
3.eureka的自我保护模式:如果eureka server在一定时间内没有收到某个微服务的心跳,eureka server就会注销掉该实例,默认90秒。但当如网络分区发生故障时,微服务实例还健康,不应该注销掉该服务实例。因此eureka会默认开启自我保护模式,当某个节点在短时间内丢失过多客户端时,节点会进入自我保护模式。可以使用eureka.server.enable-self-preservation=false来禁用自我保护。
4.eureka的健康检查:默认情况下,服务器端和客户端的心跳机制保持正常,应用程序就会显示“UP”状态。但是当微服务如数据源发生问题时不能正常提供服务时,但与eureka服务端的心跳正常,eureka还会显示UP。因此可以利用spring boot actuator 提供的/health,在客户端开启后应用程序就可以将自己的健康状态传播到eureka server了。
eureka:
client:
healthcheck:
enabled: true
注意idea不会自动提示,但实际可用。