【问题标题】:What is Eureka service, Eureka Client, Eureka instance and Eureka server什么是尤里卡服务、尤里卡客户端、尤里卡实例和尤里卡服务器
【发布时间】:2016-08-02 03:26:42
【问题描述】:

我正在通过阅读this article 学习 Spring Cloud Netflix,但是我开始对本文中的不同术语感到困惑,它们是:

  1. Eureka 服务。 据我了解,这是一个在唯一 uri 上运行的普通服务(特别是微服务)(即每个 uri 一个服务)。说localhost:12000。可以在Eureka服务器上注册。

  2. Eureka 客户端。 与 Eureka 服务相同???

  3. Eureka 服务器。据我了解,它是我们可以检查、发现和管理我们构建的一堆微服务的服务器,通常运行在 localhost:8761

  4. Eureka 实例。我很困惑它指的是什么,和 Eureka 客户端一样吗?

同样在这篇文章中,它在配置中提到了eureka.client,在 Netflix API 中提到了EurekaClient,它们指的是同一个东西吗?

请告诉我这四个术语是什么意思,如果我错了,请纠正我。谢谢!

====================================更新============ =======================

在文章中说:

@EnableEurekaClient 使应用程序成为 Eureka “实例”(即 它自己注册)和一个“客户端”(即它可以查询注册表以 找到其他服务)。

所以看起来 Eureka 实例与 Eureka 服务相同。而 Eureka Client 是一个特殊的实例,可以查询其他实例/服务。

【问题讨论】:

标签: spring spring-cloud netflix-eureka


【解决方案1】:

定义


尤里卡服务器

发现服务器。它包含一个服务注册表和一个 REST 可用于注册服务、取消注册服务和 发现其他服务的位置。

尤里卡服务

任何可以在 Eureka Server 的注册表中找到并且是 可以被别人发现。服务有时具有逻辑标识符 称为 VIP,有时称为“服务 ID”,可以指代一个或 同一应用程序的更多实例。

尤里卡实例

任何向 Eureka Server 注册自己的应用程序 被别人发现

尤里卡客户端

任何可以发现服务的应用程序

问题


应用程序如何既是 Eureka 实例又是 Eureka 客户端?

应用程序通常需要让自己可供他人使用(因此它们是实例),同时它们需要发现其他服务(因此它们是客户端)。

Eureka 客户端必须是 Eureka 实例吗?

没有。有时,应用程序没有提供任何东西,只是其他服务的调用者。通过配置(eureka.client.register-with-eureka=false),您可以告诉它不要将自己注册为实例。因此它只是一个 Eureka 客户端,因为它只发现其他服务。

【讨论】:

  • 但是为什么这个配置属性 (eureka.client.register-with-eureka=false) 是 eureka.client.* 而不是 eureka.instance.* 的一部分?
  • 可能是因为客户是做注册的人
  • 现在 Spring 有了 Eureka Server 和 Eureka Discovery。它们有什么区别?
【解决方案2】:

我会说这些术语的使用有点模棱两可,这是我认为它们在文章中的含义:

  • Eureka 客户端:它可以是一个准备好工作的微服务,因此它将自己注册到 Eureka 服务器,例如某个应用的 API,或者某个应用到服务器并询问特定微服务的方向。

  • Eureka 实例:微服务的单个实例(随着负载的增长,您可以添加更多相同微服务的实例,即水平扩展)。

  • Eureka Service:看起来当你将微服务注册为 Eureka Client 时,你会获得一个通过 ID 注册的 Eureka Service。

  • Eureka Server:微服务可以在其中注册自己以便其他人发现它们的服务器。


关于您添加的更新:

Eureka Instance 不应与 Eureka Service 混淆。 Eureka Service 是指注册到 Eureka Server 并提供相同服务的一组微服务instances

关于 @EnableEurekaClient 注释,它告诉框架以下内容:你好 Spring,我是微服务 X 的一个实例,所以请将我注册到 Eureka 服务器(带有eureka.instance.* 属性),我也想要发现其他服务,所以为我创建必要的发现客户端 bean(带有eureka.client.* 属性)。

总而言之,这个名为@EnableEurekaClient 的注解可以同时做这两件事,也许这就是混淆的来源。但是 InstanceClient 确实是不同的概念,尽管它们在文章中有些互换使用。

【讨论】:

  • 那么 Eureka Service ID 是和 Eureka Instance 还是 Eureka Client 关联的?
  • ID与微服务关联,不要与实例混淆。据我了解,每个实例都使用相同的 ID(例如应用程序名称)注册,以便 Eureka Server 知道哪些客户端属于每个微服务。
  • 这是有道理的。我更新了我原来的po,希望它可以帮助一点:)
  • 我完全同意 Esala。最令人困惑的部分是因为有两种场景,单个微服务可以在 Eureka Server 中注册自己的实例(顺便说一下,这也是一个微服务..)以供其他人(客户端)访问,第二种情况是微服务想要与另一个微服务进行通信,基本上既可以被其他人访问,又可以充当客户端(使用通过 Eureka Server 发现的另一个微服务)。
  • 带有服务 ID 的概念是为了更容易访问(使用特殊的 Eureka-aware Ribbon 您不需要知道服务 URL,只需要知道 ID)和负载平衡,您只需指定 ID,然后获取“你想要的最好的”微服务实例。
【解决方案3】:

我觉得他们看起来像这张照片。

  1. Eureka 客户端注册到 Eureka Server。
  2. 因为一个 Eureka Instance 注册到 Eureka Server,所以它是一个客户端。
  3. 因为一个Eureka Service给别人提供了api,所以它可以被别人发现,所以它是一个Instance。

【讨论】:

  • 现在 Spring 有了 Eureka Server 和 Eureka Discovery。它们有什么区别?
  • 尤里卡客户端是尤里卡发现
【解决方案4】:

让我们举个例子。

Spring-cloud-netflix-turbine 使用 Eureka 聚合来自各个微服务的指标。它需要知道在云中随时运行的每个微服务实例的地址。实例数量可以上下浮动。

尤里卡服务器: Turbine 查询 Eureka 服务器以访问注册表。它使用注册表确定所有参与的微服务、它们要到达的终点等等。

尤里卡服务: Euerka 服务器提供给涡轮机的信息(参与者微服务列表)就是服务。一个服务器可以提供多种服务。

尤里卡实例 所有希望聚合其指标的微服务都是 Eureka 实例。实例不仅可以查询注册,还可以注册、注销、提供心跳保持注册等。

尤里卡客户端 涡轮机是客户。它仅查询注册表以确定正在运行的微服务实例。

【讨论】:

    【解决方案5】:

    来自官方documentation

    Eureka 带有两个组件 - Eureka Client 和 Eureka Server。您使用 Eureka 的架构通常会有两个应用程序

    1. 应用程序客户端使用 Eureka 客户端向 应用服务。
    2. 从应用程序客户端接收请求的应用程序服务 并返回响应。

    设置涉及以下内容

    1. Eureka 服务器 - 这会记录所有已注册的服务。
    2. 应用程序客户端的 Eureka 客户端
    3. 应用服务的 Eureka 客户端

    Eureka Instance是指Application客户端的单个节点。

    【讨论】:

      猜你喜欢
      • 2019-11-16
      • 2018-05-12
      • 2018-04-15
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2017-03-26
      相关资源
      最近更新 更多