Spring Cloud Netflix Eureka官方WIKI翻译之 Eureka初印象

Eureka是什么?

Eureka是一种基于REST(具像状态传输)的服务,主要用于AWS云中定位服务,以实现中间层服务器的负载平衡和故障转移。我们将此服务称为Eureka服务器。Eureka还附带了一个基于java的客户端组件——Eureka客户端,它使与服务的交互更加容易。客户端还有一个内置的负载均衡器,它执行基本的循环负载平衡。在Netflix,一个更加复杂的负载均衡器封装了Eureka,根据流量、资源使用、错误条件等因素提供加权负载平衡,从而提供更好的弹性。

Eureka的必要性是什么?

在AWS云中,由于其固有的特性,服务器来来往往。与传统的负载均衡器不同,传统的负载均衡器使用已知IP地址和主机名的服务器,而在AWS中,负载均衡器要求在动态地使用负载均衡器注册和注销服务器时更加复杂。由于AWS还没有提供中间层负载平衡器,Eureka填补了中间层负载平衡领域的空白。

Eureka与AWS ELB有何不同?

AWS弹性负载均衡器是面向最终用户web流量的边缘服务的负载平衡解决方案。Eureka满足了中间层负载平衡的需要。虽然理论上您可以将中间层服务置于AWS ELB之后,但在EC2经典中,您将通过失去AWS安全组的所有有用性而将它们公开给外部世界。

AWS ELB也是一种传统的基于代理的负载平衡解决方案,而与Eureka不同的是,负载平衡发生在实例/服务器/主机级别。客户机实例知道它们需要与哪些服务器通信的所有信息。这是福是祸,取决于你怎么看。如果您正在寻找AWS现在提供的基于用户会话的负载平衡,Eureka不会提供开箱即用的解决方案。在Netflix,我们希望我们的服务是无状态的(非粘性的)。这有助于更好的可伸缩性模型,Eureka非常适合解决这个问题。

使用Eureka实现基于代理的负载平衡与负载平衡的另一个重要区别在于,您的应用程序可以适应负载平衡器的中断,因为关于可用服务器的信息缓存在客户机上。这确实需要少量内存,但是可以获得更好的弹性。

Eureka 和Route 53有什么不同?

Route 53是一种命名服务,Eureka可以为中间层服务器提供相同的命名服务,但相似之处仅限于此。路由53是一个DNS服务,它甚至可以为非aws数据中心托管您的DNS记录。路由53还可以跨AWS区域执行基于延迟的路由。Eureka类似于内部DNS,与世界各地的DNS服务器无关。Eureka也是区域隔离的,因为它不知道其他AWS区域中的服务器。它保存信息的主要目的是为了在一个区域内实现负载平衡。

虽然您可以使用Route 53注册中间层服务器,并依赖AWS安全组保护服务器不受公共访问,但是中间层服务器标识仍然对外公开。它还具有传统的基于DNS的负载平衡解决方案的缺点,在该解决方案中,流量仍然可以路由到可能不健康或甚至不存在的服务器(在AWS cloud中,服务器可以随时消失)。

Eureka 在Netflix是如何使用的?

在Netflix, Eureka除了在中间层负载平衡中扮演关键角色外,还用于以下目的。

  • 红/黑部署与Netflix Asgard-一个开放源代码服务,使云部署更容易。Eureka与Asgard进行交互,以便在服务部署的旧/新版本之间进行切换,在出现问题时能够快速无缝地进行切换——特别是考虑到启动100个实例来部署一个版本可能需要很长时间。
  • 用于我们的cassandra部署,以便从通信中取出实例进行维护。
  • 用于我们的memcached缓存服务来标识环中的节点列表。
  • 用于由于各种其他原因携带关于服务的其他特定于应用程序的元数据。

 我应该在什么时候使用Eureka?

您通常在AWS云中运行,并且您拥有许多中间层服务,这些服务不希望注册到AWS ELB或公开来自外部世界的流量。您要么正在寻找一个简单的循环负载平衡解决方案,要么愿意根据负载平衡的需要编写自己的Eureka包装器。您不需要粘性会话,也不需要在外部缓存(如memcached)中加载会话数据。更重要的是,如果您的体系结构适合基于客户机的负载均衡器受到青睐的模型,那么Eureka非常适合这种使用。

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

通信技术可以是你喜欢的任何东西。Eureka帮助您找到关于您想要通信的服务的信息,但不限制协议或通信方法。例如,您可以使用Eureka获取目标服务器地址,并使用协议,如thrift、http(s)或任何其他RPC机制。

高级体系结构

Eureka High level Architecture

上面的架构描述了Eureka是如何部署在Netflix上的,这是您通常运行它的方式。每个区域有一个eureka集群,它只知道该区域中的实例。每个区域至少有一个eureka服务器来处理区域故障。

服务在Eureka注册,然后每30秒发送一次心跳更新租约。如果客户端有几次不能续签租约,它将在大约90秒内从服务器注册表中取出。注册信息和更新将复制到集群中的所有eureka节点。来自任何区域的客户端都可以查找注册表信息(每30秒发生一次)来定位他们的服务(可能在任何区域)并进行远程调用。

非java服务和客户端

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

可配置性

使用Eureka,您可以动态添加或删除集群节点。您可以从超时到线程池调优内部配置。Eureka使用了archaius,如果您有一个配置源实现,那么许多配置都可以动态调优。

弹性

身处AWS云环境中,我们很难不考虑我们所构建的一切的弹性。Eureka 从我们获得的经验中获益,客户端和服务器都内置了弹性。

Eureka客户端用于处理一个或多个Eureka服务器的故障。因为Eureka客户机中有注册表缓存信息,所以即使所有的Eureka服务器都宕机了,它们也可以正常运行。

Eureka服务器能够抵御其他Eureka服务器的崩溃。即使在客户机和服务器之间的网络分区期间,服务器也具有内置的弹性,以防止大规模停机。

多个区域

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

监控

Eureka使用伺服系统来跟踪客户端和服务器中的大量信息,以实现性能、监视和警报。数据通常在JMX注册中心中可用,可以导出到Amazon Cloud Watch。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值