Netflix Eureka
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netflix Eureka相关的知识,希望对你有一定的参考价值。
参考技术A Netflix Eureka是spring cloud的服务发现模块。一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
客户端启动后,jar中的定时任务会自动启动,定时向注册中心发送,客户端信息。
注册中心也会通过定时任务查询各个客户端,查询没有反应,则会从服务器的注册列表中删除。
Spring Cloud源码解析:一个注解加载Eureka client
Spring-cloud & Netflix 源码解析:Eureka client 到Server的调用过程
Spring-cloud & Netflix 源码解析:Eureka client 注册过程
Spring-cloud & Netflix 源码解析:Eureka 服务注册发现接口
如何使用 Netflix/Eureka 执行故障转移?
【中文标题】如何使用 Netflix/Eureka 执行故障转移?【英文标题】:How to perform a failover with Netflix/Eureka? 【发布时间】:2016-10-20 11:56:17 【问题描述】:我使用 Eureka 作为我的服务发现和负载均衡器,当有两个服务“A”实例时它工作正常,但是当我停止其中一个实例时,Eureka 无法识别其中一个实例已关闭,并且每次负载均衡器尝试使用死实例时都会显示错误页面。
我已将 enableSelfPreservation
设置为 false
以防止这种情况发生,但 Eureka 最多需要 3 到 5 分钟才能取消注册该服务,但是我希望我的服务具有高可用性,并且我想立即执行故障转移几秒钟的事。这是否可能使用 Eureka,如果不是,我如何才能在其他人死亡时仅使用活着的实例。
我使用的是spring boot,这是我对Eureka服务器的配置。
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://$eureka.instance.hostname:$server.port/eureka/
server:
enableSelfPreservation: false
【问题讨论】:
【参考方案1】:您应该将功能区配置添加到您的 application.yml。还建议将 hystrix 隔离级别设置为 THREAD 并设置超时。
注意:这个配置应该在 client 端(这通常意味着你的网关服务器),因为 Ribbon(和一般的 Spring Cloud)是客户端负载平衡的一种形式。 p>
这是我使用的一个例子:
hystrix:
command:
default:
execution:
isolation:
strategy: THREAD
thread:
timeoutInMilliseconds: 40000 #Timeout after this time in milliseconds
ribbon:
ConnectTimeout: 5000 #try to connect to the endpoint for 5 seconds.
ReadTimeout: 5000 #try to get a response after successfull connection for 5 seconds
# Max number of retries on the same server (excluding the first try)
maxAutoRetries: 1
# Max number of next servers to retry (excluding the first server)
MaxAutoRetriesNextServer: 2
【讨论】:
以上是关于Netflix Eureka的主要内容,如果未能解决你的问题,请参考以下文章
在没有 Netflix 帐户的情况下将 Netflix 视频投射到电视上[关闭]
适用于 Netflix Android TV 应用程序 (com.netflix.ninja) 的电影 Deeplink