Spring Cloud中,Eureka常见问题总结
来源:互联网 发布:php开发微信公众平台 编辑:程序博客网 时间:2024/06/14 01:41
Spring Cloud中,Eureka常见问题总结。
指定Eureka的Environment
eureka.environment: 指定环境
参考文档:https://github.com/Netflix/eureka/wiki/Configuring-Eureka
指定Eureka的DataCenter
eureka.datacenter: 指定数据中心
参考文档:https://github.com/Netflix/eureka/wiki/Configuring-Eureka
文中指出,配置-Deureka.datacenter=cloud,这样eureka将会知道是在AWS云上。
如何解决Eureka注册服务慢的问题
使用配置项:
eureka.instance.leaseRenewalIntervalInSeconds
参考文档:
http://cloud.spring.io/spring-cloud-static/Camden.SR1/#_why_is_it_so_slow_to_register_a_service
原文:
Why is it so Slow to Register a Service?Being an instance also involves a periodic heartbeat to the registry (via the client’s serviceUrl) with default duration 30 seconds. A service is not available for discovery by clients until the instance, the server and the client all have the same metadata in their local cache (so it could take 3 heartbeats). You can change the period using eureka.instance.leaseRenewalIntervalInSeconds and this will speed up the process of getting clients connected to other services. In production it’s probably better to stick with the default because there are some computations internally in the server that make assumptions about the lease renewal period.
翻译:
作为实例还涉及到与注册中心的周期性心跳,默认持续时间为30秒(通过serviceUrl)。在实例、服务器、客户端都在本地缓存中具有相同的元数据之前,服务不可用于客户端发现(所以可能需要3次心跳)。你可以使用eureka.instance.leaseRenewalIntervalInSeconds 配置,这将加快客户端连接到其他服务的过程。在生产中,最好坚持使用默认值,因为在服务器内部有一些计算,他们对续约做出假设。
Eureka的自我保护模式
如果在Eureka Server的首页看到以下这段提示,则说明Eureka已经进入了保护模式。
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。
详见:https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication
如何解决Eureka Server不踢出已关停的节点的问题
在开发过程中,我们常常希望Eureka Server能够迅速有效地踢出已关停的节点,但是新手由于Eureka自我保护模式,以及心跳周期长的原因,常常会遇到Eureka Server不踢出已关停的节点的问题。解决方法如下:
(1) Eureka Server端:配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔。
eureka.server.enable-self-preservation # 设为false,关闭自我保护eureka.server.eviction-interval-timer-in-ms # 清理间隔(单位毫秒,默认是60*1000)
(2) Eureka Client端:配置开启健康检查,并按需配置续约更新时间和到期时间。
eureka.client.healthcheck.enabled # 开启健康检查(需要spring-boot-starter-actuator依赖)eureka.instance.lease-renewal-interval-in-seconds # 续约更新时间间隔(默认30秒)eureka.instance.lease-expiration-duration-in-seconds # 续约到期时间(默认90秒)
示例:
服务器端配置:
eureka: server: enable-self-preservation: false eviction-interval-timer-in-ms: 4000
客户端配置:
eureka: client: healthcheck: enabled: true instance: lease-expiration-duration-in-seconds: 30 lease-renewal-interval-in-seconds: 10
注意:
更改Eureka更新频率将打破服务器的自我保护功能,生产环境下不建议自定义这些配置。
详见:https://github.com/spring-cloud/spring-cloud-netflix/issues/373
自定义Eureka的Instance ID
在Spring Cloud中,服务的Instance ID的默认值是
示例:
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: preferIpAddress: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} # 将Instance ID设置成IP:端口的形式
Eureka配置最佳实践参考
https://github.com/spring-cloud/spring-cloud-netflix/issues/203
注意点:eureka.client.healthcheck.enabled=true配置项必须设置在application.yml中
eureka.client.healthcheck.enabled=true 只应该在application.yml中设置。如果设置在bootstrap.yml中将会导致一些不良的副作用,例如在Eureka中注册的应用名称是UNKNOWN等。
- Spring Cloud中,Eureka常见问题总结
- Spring Cloud中,Eureka常见问题总结
- Spring Cloud中,Eureka常见问题总结
- Spring Cloud中,Eureka常见问题总结
- Spring Cloud中,Eureka常见问题总结
- Spring Cloud中,Eureka常见问题总结。
- Spring Cloud中,Feign常见问题总结
- Spring Cloud中,Feign常见问题总结
- spring cloud中启动Eureka Server
- Spring Cloud中Eureka开启密码认证
- spring-cloud中eureka进行服务治理
- spring cloud-eureka
- Spring-cloud Eureka 集群
- spring cloud eureka
- Spring Cloud Eureka
- Spring Cloud Netflix Eureka
- Spring Cloud Eureka详解
- Spring Cloud Eureka
- 为什么模板不支持分离编译
- 关于微信小程序拒绝授权后,重新授权并获取用户信息
- hdu 6156 Palindrome Function(数位dp)
- Hadoop集群环境搭建
- python2 python3使用pickle不兼容
- Spring Cloud中,Eureka常见问题总结
- BuildError: Could not build url for endpoint 'main.index'. Did you mean 'main.indexs' instead?
- angularjs 动态添加输入控件并绑定数据
- CentOS搭建PHP+Apache环境+apache虚拟主机配置+apache非停状态删日志后异常+php开启openssl+php日志记录
- 为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
- 关于 expect 脚本
- GeoServer基础教程(三):部署发布Shapefile地图数据
- fabirc1.0商业正式版本源码解析7——peer的ChaincodeSupport服务
- 一个字符串的最大回文前缀长度(搜狗2017秋招真题)