8

I am new in

  • Apache ZooKeeper : ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

  • Apache Mesos : Apache Mesos is a cluster manager that simplifies the complexity of running applications on a shared pool of servers.

  • Apache Helix : Apache Helix is a generic cluster management framework used for the automatic management of partitioned, replicated and distributed resources hosted on a cluster of nodes.

  • Erlang Langauge : Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability.

It sounds to me that Helix and Mesos both are useful for Clustering management System. How they are related to ZooKeeper? It'd better if someone give me a real world example for their usage.

I am curious to know How [BOINC][1] are distributing tasks to their clients? Are they using any of the above technologies? (Forget about Erlang).

I just need a brief view on it :)

4

3 回答 3

1

Erlang 由 Ericsson 构建,旨在用于电话系统。按照设计,它运行数百、数千甚至数十万个小进程,通过在它们之间发送信息而不是共享内存或状态来处理任务。这启用了各种有趣的功能,这些功能非常适合高可用性分布式系统,例如:

  • 热代码重载。每个进程都被暂停,相关的模块代码被换出,并从中断的地方恢复,因此可以在不重新启动或造成重大中断的情况下进行部署。
  • 简单的分布式消息传递和集群。在大多数情况下,向本地进程或远程进程发送消息是相当无缝的。
  • 处理本地 GC。垃圾收集在每个进程中独立发生,而不是像 java 那样全局停止世界,有助于低延迟结果。
  • 监督树和复杂的流程层次结构和监控/管理。

一些充分利用 Erlang 的具体实际示例是:

  • MongooseIM一个高性能且可扩展的分布式 XMPP / 聊天服务器
  • Riak分布式键/值存储。

另一方面,您可以将 Mesos 视为一个有效地将服务器数据中心转变为团队和开发人员平台的平台。假设我作为一家公司,拥有一个拥有 10,000 台物理服务器的数据中心,并且我有 1,000 名工程师开发数百种服务,这是一种允许工程师跨硬件部署和管理服务而无需直接担心服务器的好方法. 它是物理服务器之上的抽象层,允许您共享和智能分配资源。

作为 Mesos 的用户,我可能会说我有 Service X。它是一个位于 Y 位置的可执行包。Service X 的每个实例都需要 4 GB 的 RAM 和 2 个内核。我需要 8 个实例,它们将连接到负载均衡器。您可以在配置中指定它并基于该配置进行部署。Mesos 将找到具有足够内存和 CPU 容量的硬件来处理该服务的每个实例,并在每个位置启动它。

它也可以处理许多其他更复杂的关于它们的编排的主题,但这可能有点深入:)


Zookeepers 最常见的用例是服务发现和配置管理。从根本上讲,你可以把它想象成一个嵌套的键值存储,其中服务可以查看预定义的路径以查看其他服务当前所在的位置。

一个简单的例子是我有一个使用共享数据库集群的 Web 服务。我知道该数据库集群的简单名称以及它的配置位于 zookeeper 中的位置。我可以在 zookeeper 中查找(或反复轮询)该路径以检查活动数据库主机的地址是什么。另一方面,如果我将一个数据库节点从轮换中取出并用一个新节点替换它,zookeeper 中的配置会使用新地址进行更新,任何持续查看它的东西都会检测到这种变化并改变它连接到的位置.

zookeeper 的一个更复杂的用例是 Kafka 如何使用它(或者在我上次使用 Kafka 时使用它)。Kafka 有流,流有很多分片。每个流的每个消费者在读取并处理到流中的某个点后,都使用 zookeeper 将检查点保存在每个分片中。这样,如果消费者崩溃或重新启动,它就知道在流中的哪个位置拾取。

于 2019-09-26T03:28:21.980 回答
0

我不了解 Meos 和 Earlang 语言。但是这篇文章可能会对 Helix 和 Zookeeper 有所帮助。

这篇文章告诉我们:

Zookeeper 负责将所有部分粘合在一起,其中 Helix 是注册所有集群详细信息(集群本身、节点、资源)的集群管理组件。

这篇文章是关于在 JBPM 中使用 helix 和 zookeeper 进行集群的。但是通过这篇文章,您将对 helix 和 zookeeper 的用途有一个基本的了解。

从我在网上阅读的大多数文章来看,zookeeper 和 helix 似乎是一起使用的。

于 2019-07-19T07:37:42.680 回答
-1

Apache Zookeeper 可以安装在单机或集群上。它可用于跟踪日志。它可以在分布式平台上提供各种服务。

Storm 和 Kafka 依赖 Zookeeper。

Storm 使用 Zookeeper 存储所有状态,以便它可以从任何(分布式)组件服务的中断中恢复。

Kafka 队列消费者可以使用 Zookeeper 来存储队列中已消费内容的信息。

于 2015-03-02T07:10:08.423 回答