Eureka介绍

什么是Eureka

Eureka是一种基于REST(Representational State Transfer)的服务,主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移。我们将此服务称为Eureka Server。Eureka还附带了一个基于Java的客户端组件Eureka Client,它使与服务的交互变得更加容易。客户端还有一个内置的负载均衡器,可以进行基本的循环负载均衡。在Netflix,一个更复杂的负载均衡器包含Eureka基于流量,资源使用,错误条件等多种因素提供加权负载平衡,以提供卓越的弹性。

Eureka能做什么

在AWS云中,由于其固有的特性,服务器来来去去。与使用具有众所周知的IP地址和主机名的服务器的传统负载均衡器不同,在AWS中,负载均衡在使用负载均衡器注册和取消注册服务器时需要更加复杂。由于AWS尚未提供中间层负载均衡器,因此Eureka填补了中间层负载均衡领域的巨大空白。

Eureka与AWS ELB有何不同?

AWS Elastic Load Balancer是面向最终用户Web流量的边缘服务的负载平衡解决方案。Eureka满足了中层负载平衡的需求。虽然理论上您可以将您的中间层服务置于AWS ELB之后,但在EC2 classic中,您会将它们暴露给外部世界,从而失去AWS安全组的所有实用性。AWS ELB也是传统的基于代理的负载平衡解决方案,而使用Eureka则不同之处在于负载平衡发生在实例/服务器/主机级别。客户端实例知道他们需要与哪些服务器通信的所有信息。这是一种祝福或诅咒,取决于你看待它的方式。如果您正在寻找AWS现在提供的基于粘性用户会话的负载平衡,Eureka不提供开箱即用的解决方案。在Netflix,我们更喜欢我们的服务是无状态(非粘性)。这有助于实现更好的可扩展性模型,Eureka非常适合解决这个问题。使用Eureka将基于代理的负载平衡与负载平衡区分开来的另一个重要方面是,您的应用程序可以适应负载均衡器的中断,因为有关可用服务器的信息会缓存在客户端上。这确实需要少量内存,但可以获得更好的弹性。

Eureka与Route 53有何不同?

Route 53是一个命名服务,Eureka可以为中间层服务器提供相同的服务,但相似性在那里停止。Route 53是一种DNS服务,即使对于非AWS数据中心,它也可以托管您的DNS记录。Route 53还可以跨AWS区域执行基于延迟的路由。Eureka类似于内部DNS,与世界各地的DNS服务器无关。Eureka也是区域隔离的,因为它不了解其他AWS区域中的服务器。保存信息的主要目的是在区域内进行负载平衡。虽然您可以使用Route 53注册中间层服务器并依赖AWS安全组来保护您的服务器免受公共访问,但您的中间层服务器身份仍然会暴露给外部世界。它还具有传统的基于DNS的负载平衡解决方案的缺点,其中流量仍然可以路由到可能不健康或甚至不存在的服务器(在AWS云的情况下,服务器可以随时消失)。

Eureka如何在Netflix上使用?

在Netflix,除了在中间层负载平衡中起关键作用之外,Eureka还用于以下目的。使用Netflix Asgard进行红/黑部署 - 一种开源服务,可以更轻松地部署云。Eureka与Asgard进行交互,以便在出现问题时快速无缝地在旧版/新版本的服务部署之间进行切换 - 特别是考虑到启动100个实例来部署版本可能需要很长时间。对于我们的cassandra部署,将实例从流量中取出进行维护。对于我们的memcached缓存服务来识别环中的节点列表。用于出于各种其他原因携带有关服务的其他特定应用程序元数据。

我什么时候应该使用Eureka?

您通常在AWS云中运行,并且您有许多中间层服务,您不希望向AWS ELB注册或暴露来自外部世界的流量。您要么寻找一个简单的循环负载平衡解决方案,要么愿意根据您的负载平衡需求在Eureka周围编写自己的包装器。您不需要粘性会话并在外部缓存(例如memcached)中加载会话数据。更重要的是,如果您的架构适合基于客户端的负载均衡器的模型,Eureka可以很好地适应这种用途。

应用程序客户端和应用程序服务器如何通信?

通信技术可以是你喜欢的任何东西。Eureka可帮助您查找有关您希望与之通信的服务的信息,但不会对协议或通信方法施加任何限制。例如,您可以使用Eureka获取目标服务器地址并使用诸如thrift,http(s)或任何其他RPC机制之类的协议。

HA架构

 Eureka High level Architecture

上面的架构描述了如何在Netflix上部署Eureka,这就是您通常如何运行它。每个地区只有一个Eureka,它只知道该地区的实例。每个区域至少有一个eureka服务器来处理区域故障。服务在Eureka注册,然后发送心跳每30秒更新一次租约。如果客户端无法续订租约几次,则会在大约90秒内将其从服务器注册表中删除。注册信息和续订将复制到群集中的所有eureka节点。来自任何区域的客户端都可以查找注册表信息(每30秒发生一次)以查找其服务(可能位于任何区域中)并进行远程调用。 

非Java服务和客户端

对于非基于Java的服务,您可以选择以服务语言实现eureka的客户端部分,或者您可以运行“side car”,它本质上是一个Java应用程序,具有处理注册的嵌入式eureka客户端和心跳。对于Eureka客户端支持的所有操作,也会公开基于REST的端点。非Java客户端可以使用REST端点来查询有关其他服务的信息。

可配置使用Eureka

您可以动态添加或删除群集节点。您可以将内部配置从超时调整到线程池。Eureka使用archaius,如果你有一个配置源实现,很多这些配置可以动态调整。

弹性

在AWS云中,很难不考虑我们构建的所有内容的弹性。Eureka受益于我们获得的这种体验,其中弹性内置于客户端和服务器中。Eureka客户端旨在处理一台或多台Eureka服务器的故障。由于Eureka客户端中包含注册表缓存信息,因此即使所有eureka服务器都关闭,它们也可以运行得相当好。Eureka服务器可以抵御其他同类产品。即使在客户端和服务器之间的网络分区期间,服务器也具有内置的弹性以防止大规模中断。

多个区域

在多个AWS区域部署Eureka是一项相当简单的任务。区域之间的尤里卡群集不会彼此通信。

监控

Eureka使用伺服来跟踪客户端和服务器中的大量信息,以进行性能,监控和警报。数据通常在JMX注册表中提供,并可导出到Amazon Cloud Watch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值