Apache Helix,Zookeeper,Mesos和Erlang的真实例子?

时间:2014-07-11 09:39:10

标签: apache erlang distributed-computing apache-zookeeper boinc

我是

的新人
  • Apache ZooKeeper:ZooKeeper是一个集中服务,用于维护配置信息,命名,提供分布式同步和提供组服务。

  • Apache Mesos:Apache Mesos是一个集群管理器,可以简化在共享服务器池上运行应用程序的复杂性。

  • Apache Helix:Apache Helix是一个通用的集群管理框架,用于自动管理托管在节点集群上的分区,复制和分布式资源。

  • Erlang Langauge:Erlang是一种编程语言,用于构建具有高可用性要求的大规模可扩展软实时系统。

我觉得HelixMesosClustering管理系统都很有用。它们与ZooKeeper的关系如何?如果有人给我一个真实世界的例子,它会更好用。

我很想知道[BOINC][1]如何向客户分发任务?他们使用上述任何技术吗? (忘了Erlang)。

我只需要简要介绍一下:)

3 个答案:

答案 0 :(得分:1)

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

  • 热代码重装。每个进程都将暂停,将其相关的模块代码换出,然后在中断的地方恢复,因此部署可以在不重启或不会造成重大中断的情况下进行。
  • 轻松的分布式消息传递和群集。在大多数情况下,将消息发送到本地进程或远程进程是非常无缝的。
  • 本地过程GC。垃圾收集在每个进程中独立发生,而不是像Java这样的全局停止运行(在世界范围内停止),以帮助实现低延迟结果。
  • 监督树和复杂的流程层次结构以及监视/管理。

一些实际使用Erlang的具体示例如下:

  • MongooseIM高性能和令人难以置信的可扩展分布式XMPP /聊天服务器
  • Riak分布式键/值存储。

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

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

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


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

一个简单的例子是我有一个使用共享数据库集群的Web服务。我知道该数据库群集的简单名称,并且知道它的配置在zookeeper中的位置。我可以在zookeeper中查找(或反复轮询)该路径,以检查活动数据库主机的地址。另一方面,如果我停止旋转数据库节点并将其替换为新节点,则zookeeper中的配置将使用新地址进行更新,并且任何持续查看该节点的内容都将检测到此更改并更改其连接位置

Zookeeper的一个更复杂的用例是Kafka的使用方式(或我上次使用Kafka时的使用方式)。卡夫卡有溪流,溪流有很多碎片。每个流的每个使用者在读取并处理到流中的特定点之后,都使用Zookeeper在每个分片中保存检查点。这样,如果使用者崩溃或重新启动,它就会知道在流中提取的位置。

答案 1 :(得分:0)

我不了解Meos和Earlang语言。但是this文章可能会帮助您使用Helix和Zookeeper。

本文告诉我们:

  

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

本文与在JBPM中使用helix和zookeeper进行集群有关。但是,您将基本了解helix和zookeeper的用途。

在我在线阅读的大多数文章中,似乎Zookeeper和helix一起使用了。

答案 2 :(得分:-1)

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

Storm和Kafka依赖Zookeeper。

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

Kafka队列消费者可以使用Zookeeper存储有关队列消耗内容的信息。