代码之家  ›  专栏  ›  技术社区  ›  Supun Wijerathne

Zookeeper和Eureka在微服务中扮演什么角色?

  •  43
  • Supun Wijerathne  · 技术社区  · 6 年前

    我将在我的应用程序中实现一组微服务的编排。我发现了两个广泛使用的工具Apache Zookeeper 和Netflix Eureka .

    有人能根据这两种服务的根本区别进行比较吗?

    还有其他强大的工具吗?

    2 回复  |  直到 3 年前
        1
  •  39
  •   Oswin Noetzelmann    5 年前

    我将在我的应用程序中实现一组微服务的编排。

    这是一个很难自己解决的问题。您最好使用现有的编排系统(见下文)。

    还有其他强大的工具吗?

    您应该研究kubernetes,这似乎是当今编排的标准。它还有许多其他好处(支持可扩展性、自我修复等),目前已广泛用于生产中。请参阅以下链接:

    关于比较zookeeper、eureka和kubernetes:

    • Zookeeper 是分布式键值存储。它可以作为实现服务发现的基础(类似于etcd)。
    • Eureka 主要是作为Netflix负载平衡器和故障切换的一部分使用的服务定位器(允许找到正确的服务目标,以便将客户端调用分发给应用程序集群的成员)。
    • Kubernetes 是一种容器编排解决方案,包括服务的部署、发现和自我修复。有关功能的完整列表,请查看上面的链接。kubernetes中的服务发现基于它所跨越并构建在etcd上的虚拟网络中的dns。
    • Consul (在另一个答案中提到)是一个服务发现框架,具有REST接口和一些附加功能(健康检查、服务分段等)。它有自己的内部分布式键值存储,也可以使用。
        2
  •  21
  •   Alex M981    6 年前

    另一个工具可能是 Consul .

    Eureka主要是一种服务发现工具,主要设计用于AWS基础设施内部。

    Zookeeper是一种通用的分布式密钥/值存储,可与 curator-x-discovery framework

    这里有一个简短的 overview of service-discovery solutions

    您还可以找到 Consul vs Eureka vs Zookeeper 在这里

    尽管Concur与zookeeper一样,不仅可以用于发现,还可以作为密钥/价值存储,但Concur的优势在于其提供的超酷的服务发现功能

    1. DNS开箱即用
    2. 方便的RESTful API
    3. HealthCheck API开箱即用

    此外,consur还具有更多的分布式特性:代理安装在所有服务虚拟机上,因此该系统比zookeeper具有更高的可用性。 请注意,领事系统 low coupling between datacenters .

    Zookeeper很成熟,但太普通了。因此,您不仅可以将zookeeper用于服务发现,还可以用于存储配置、分布式锁、通知等。同样,在Curator框架/Curator配方中使用所有这些功能也很方便。

    Zookeeper正在集群中的节点之间使用主/从通信模式。Master由集群成员选出。请注意,当集群中出现多个主机时,可能会出现边缘情况(例如,由于网络问题)。在这种情况下,重启集群会有所帮助。

    Eureka与Zookeeper和Concur的区别在于,Eureka是一个狭义的系统——服务发现和负载平衡系统。

    所有3个系统都可以与Spring集成。