Eureka简介

Eureka是一种基于REST的服务,主要用于AWS云中实现服务发现、中间层服务器的负载平衡和故障转移。它支持加权负载均衡,适用于服务频繁增删的云环境,与AWSELB和Route53相比,专注于中层服务的负载均衡。Eureka在Netflix中扮演关键角色,用于红黑部署、服务维护和元数据管理。

eureka wiki address

https://github.com/Netflix/eureka/wiki

eureka 是什么?

  • 基于rest的服务
  • 主要用于AWS云,用于定位服务,实现中间层服务器的负载平衡和故障转移, Eureka server
  • 基于Java的客户端 Eureka Client. 内置一个负载均衡器,进行基本的负载均衡。
  • 加权负载均衡,基于流量,资源使用,错误条件等多种因素,提供加权负载均衡。

为什么要用 eureka?

  • AWS云上服务的增删频繁,传统的IP地址和hostname的服务器。
  • 在注册和取消的时候,负载均衡需要调整。AWS云没有提供,EUREKA提供了中间层负载均衡。

Eureka 和 AWS ELB(AWS Elastic Load balance) 有何不同?

  • AWS ELB 面向最终用户 WEB 流量的边缘服务的负载均衡方案。
  • Eureka 面向中层负载均衡的需求。
    理论上可以把中间层服务放在 AWS ELB 之后,但在EC2 classic中,您会将它们暴露给外部世界,从而失去AWS安全组的所有实用性。

服务对象不同

  • AWS ELB 是传统的基于代理的负载均衡
  • Eureka 是实例/服务器/主机 级别实体之间发生的负载均衡。 Eureka 将基于代理的平衡和 负载平衡区分开, 有关可用服务器的信息会缓存在客户端上。您的应用程序可以适应负载均衡器的中断。

Route 53 和 Eureka 不同?

  • Eureka 无中间层服务器提供相同服务, 类似内部的DNS, 与外部世界的DNS服务器无关。 Eureka是区域隔离的,只负责区域内的负载均衡。
  • Route 53 是DNS服务, Route 53 可以跨ASW区域执行基于延迟的路由。

虽然您可以使用Route 53注册中间层服务器并依赖AWS安全组来保护您的服务器免受公共访问,但您的中间层服务器身份仍然会暴露给外部世界。
它还具有传统的基于DNS的负载平衡解决方案的缺点,其中流量仍然可以路由到可能不健康或甚至不存在的服务器(在AWS云的情况下,服务器可以随时消失)。

Eureka如何在Netflix上使用?

在Netflix,除了在中间层负载平衡中起关键作用之外,Eureka还用于以下目的。

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

什么时候用?

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

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

协议无限制,可以使用Eureka获取目标服务器地址并使用诸如thrift,http(s)或任何其他RPC机制之类的协议。

高级架构

[外链图片转存失败(img-yrpxZOJN-1568278744114)(./images/eureka_architecture.png)]

上面的架构描述了如何在Netflix上部署Eureka,这就是您通常运行它的方式。有 一个每尤里卡集群区域哪知道只有在其区域内的情况。
每个区域至少有一个 eureka服务器来处理区域故障。

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

非Java服务和客户端

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

可配置

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

弹性

其中弹性内置于客户端和服务器中。

Eureka客户端旨在处理一台或多台Eureka服务器的故障。由于Eureka客户端中包含注册表缓存信息,因此即使所有eureka服务器都出现故障,它们也可以运行良好。

Eureka服务器可以抵御其他同类产品。即使在客户端和服务器之间的网络分区期间,服务器也具有内置的弹性以防止大规模中断。

多个区域

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

监控

servo : https://github.com/Netflix/servo/wiki

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值