Eureka简介
Eureka是什么?
Eureka是一个基于REST(Representational State Transfer:表述性状态转移)的服务,主要用于对部署在AWS云环境中的服务进行定位、负载均衡和故障转移的中间层服务。我们称这个服务为Eureke Server。Eureka同时提供JAVA客户端组件,Eureka Client,使与eureka服务交互变得更容易。客户端同样内置了基于循环策略(round-robin)的负载均衡。在Netflix,一个更为复杂的负载均衡器封装了Eureka,以提供基于流量,资源使用,错误条件等因子为加权的负载均衡,以提供优越的弹性。
为什么需要Eureka?
在AWS中,由于固有的性质,服务器间交互的负载均衡并不像传统的物理服务器之间那样通过已知的IP地址和主机名,在AWS中,负载均衡需要更为复杂的服务注册和服务发现。由于AWS并没有提供中间层负载均衡,Eureka填补可这一巨大空白。
Eureka和AWS ELB之间有什么区别?
AWS ELB是为终端用户网络流量提供的边缘服务负载均衡解决方案(ELB像通常使用nginx一样,在用户和server之间进行负载均衡)。Eureka填补了中间层负载平衡的需要。理论上,您可以将您的中间层服务放在AWS ELB后面,但在EC2 classic中,您将它们暴露给外部世界,并失去AWS安全组的所有安全控制。
AWS ELB也是一种传统的基于代理的负载均衡解决方案,与之不同的是,Eureka是对实例/服务器/主机级别间进行负载均衡。客户端实例能够感知需要与哪些服务器进行交互的所有信息。这样的好坏取决于你看待它的方式。如果你正在寻找一个基于粘性用户会话的负载均衡,AWS已经提供了,Eureka并没有提供一个解决方案。在Netflix,我们偏向于使用无状态服务。这样有利于可扩展模型并且更加契合Eureka。
另一个eureka和传统的基于代理的负载均衡的区别是,应用在负载均衡服务中断后继续对外提供服务,这是因为可用服务器的相关信息已经缓存在了客户端上。这些缓存只需要占用客户端很小的内存,却能带来非常好的弹性(可用性)。