Eureka-01丨Eureka简介

Posted by jiefang on December 6, 2019

Eureka简介

认识Eureka

这段话来自Netflix/eureka在Github的Wiki。

What is Eureka?
Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers. We call this service, the Eureka Server. Eureka also comes with a Java-based client component,the Eureka Client, which makes interactions with the service much easier. The client also has a built-in load balancer that does basic round-robin load balancing. At Netflix, a much more sophisticated load balancer wraps Eureka to provide weighted load balancing based on several factors like traffic, resource usage, error conditions etc to provide superior resiliency.

翻译:

Eureka是基于REST(代表状态转移)的服务,主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移。我们呼叫此服务,Eureka服务器。Eureka还附带了基于Java的客户端组件,Eureka客户端,这使得与服务的交互更容易。客户端还具有内置负载平衡器,该负载平衡器执行基本的循环负载平衡。在Netflix,一个更复杂的负载平衡器使用Eureka来提供基于多个因素(如流量、资源使用、错误条件等)的加权负载均衡,以提供卓越的弹性。

通俗来说Eureka就是Netflix的服务注册和服务发现框架。

Eureka整体架构

image

  • Eureka Server
    • 注册中心集群,提供服务注册和发现
  • Service Provider
    • 服务提供者
    • 将自身服务注册到Eureka,从而使服务消费方能够找到
  • Service Consumer
    • 服务消费者
    • 从Eureka获取注册服务列表,从而能够消费服务
  • Eureka Client
    • Eureka客户端

功能

Eureka提供如下功能:

  • 服务注册
  • 服务发现
  • 服务健康状况监控

概念

  • Register:服务注册
    当Eureka客户端向Eureka Server注册时,它提供自身的元数据,比如IP地址、端口、运行状况、URL等。

  • Renew:服务续约
    Eureka客户会每隔30秒发送一次心跳来续约。 通过续约来告知Eureka Server该Eureka客户仍然存在,没有出现问题。

  • Fetch Registries:获取注册列表信息
    Eureka客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与Eureka客户端的缓存信息不同, Eureka客户端自动处理。如果由于某种原因导致注册列表信息不能及时匹配,Eureka客户端则会重新获取整个注册表信息。

  • Cancel:服务下线
    Eureka客户端在程序关闭时向Eureka服务器发送取消请求。发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getInstance().shutdownComponent();

  • Eviction:服务剔除
    在默认的情况下,当Eureka客户端连续90秒没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。