Zookeeper vs Eureka 对于微服务的作用是什么?

What is the role of Zookeeper vs Eureka for microservices?

我将在我的应用程序中实现一组微服务的编排。我发现 Apache Zookeeper and Netflix Eureka.

两个广泛使用的工具

谁能根据根本的区别来比较一下,这两个服务有吗?

还有其他强大的工具吗?

另一个工具可能是 Consul

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

Zookeeper 是一个通用的分布式 key/value 存储,可与 curator-x-discovery framework

一起用于服务发现

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

您还可以在此处找到 Consul vs Eureka vs Zookeeper 的比较。

尽管 Consul 和 zookeeper 一样 - 不仅可以用于发现,还可以用作 key/value 存储,但 Consul 的优点是开箱即用的很酷的服务发现功能

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

另外consul的分布式特性更强:agents安装在所有的service VM上,因此系统的可用性比zookeeper高。 请注意,consul 系统有 low coupling between datacenters.

Zookeeper 很成熟,但是太笼统了。因此,您不仅可以将 zookeeper 用于服务发现,还可以用于存储配置、分布式锁、通知等。同样,将所有这些功能与 Curator Framework / Curator Recipes 一起使用很方便。

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

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

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

I am going to implement the orchestration of a set of microservices in my application.

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

Is there any other powerful tool?

你应该研究一下 kubernetes,这似乎是当今编排的标准。它有许多额外的好处(支持可扩展性、自我修复等),并且在当今的生产中得到广泛使用。请参阅以下 links:

关于比较 zookeeper、eureka 和 kubernetes:

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