Netflix开源了他们另一个架构——Eureka,它是一个RESTful服务,用来定位运行在AWS域(Region)中的中间层服务。
Eureka由两个组件组成:Eureka服务器和Eureka客户端。 Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支 持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
除负载均衡外,Netflix中的其他开源工具也使用了Eureka。比如,Asgard是一个云部署管理工具,它使用Eureka来执行回滚和推送操作。Priam使用Eureka在维护期停止Cassandra实例。Evcache使用Eureka识别节点。而Eureka使用Archaius进行配置。
当 一个中间层服务首次启动时,他会将自己注册到Eureka中,以便让客户端找到它,同时每30秒发送一次心跳。如果一个服务在几分钟内没有发送心跳,它将 从所有Eureka节点上注销。一个Amazon域中可以有一个Eureka节点集群,每个可用区(Availability Zone)至少有一个Eureka节点。AWS的域相互之间是隔离的。
对比亚马逊的ELB,Netflix推销Eureka时说:
AWS 弹性负载均衡服务是边界服务的负载均衡解决方案,边界服务是向终端用户访问Web而开放的。Eureka填补了中间层负载均衡的空缺。虽然,理论上可以将 中间层服务直接挂在AWS弹性负载均衡器后面,但这样会将它们直接开放给外部世界,从而失去了AWS安全组的所有好处。
Eureka使用Servo进行性能监控和告警。Netflix表示,将于近期开源其生产环境的负载均衡解决方案,并将更好地集成Eureka和Asgard。
Netflix最近开源了另一个工具,Chaos Monkey。这是一个让服务器下线的“捣蛋鬼”,用来测试AWS云部署方案的弹性。