【问题标题】:What is a 'Partition' in Apache Helix什么是 Apache Helix 中的“分区”
【发布时间】:2015-03-31 14:23:16
【问题描述】:

我正在学习 Apache Helix。我遇到了关键字“分区”。
根据http://helix.apache.org/Concepts.html这里提到的定义,每个子任务(一个主任务的)在Helix中被称为一个分区。
当我完成了这个秘籍 - 分布式锁管理器时,分区只不过是资源的实例。 (增加 numOfPartitions,增加锁的数量)。

final int numPartitions = 12;
admin.addResource(clusterName, lockGroupName, numPartitions, "OnlineOffline",
          RebalanceMode.FULL_AUTO.toString());

谁能用简单的例子解释一下,Apache Helix 中的分区到底是什么?

【问题讨论】:

    标签: apache distributed-computing high-availability helix


    【解决方案1】:

    我认为你是对的,分区本质上是资源的一个实例。与其他分布式系统的情况一样,分区用于实现并行性。只有一个实例的资源只能在一台机器上运行。分区只是通过对资源进行分区来提供在多台机器之间拆分单个资源所必需的构造。

    这是一种存在于大部分分布式系统中的模式。但是,不同之处在于,例如分布式数据库基本上将分区明确定义为可以放在单个节点上的一些更大数据集的子集,Helix 更通用,因为分区没有明确的含义或用例,但有许多潜在的含义和潜在的用例。

    我非常熟悉的系统中的其中一个用例是 Apache Kafka 的主题分区。在 Kafka 中,每个主题 - 本质上是一个分布式日志 - 被分成多个分区。虽然主题数据可以分布在集群中的许多节点上,但每个分区都被限制为单个节点上的单个日志。 Kafka 通过向新节点添加新分区来提供可扩展性。当消息生成到 Kafka 主题时,它们在内部被散列到某个特定节点上的某个特定分区。当从某个主题消费消息时,消费者会在从该主题消费时在分区之间切换,从而在节点之间切换。

    这种模式通常适用于许多可扩展性问题,几乎可以在任何 HA 分布式数据库(例如 DynamoDB、Hazelcast)、map/reduce(例如 Hadoop、Spark)和其他数据或任务驱动的系统中找到。

    LinkedIn blog post about Helix 实际上也提供了许多有用的资源和分区之间关系的示例。

    【讨论】:

    • 谢谢@kuujo,你的回答很有帮助。我忘记将其标记为已接受,所以我现在才这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多