集群管理和分布式任务 Apache helix 抽象模型

Apache Helix是一个通用的集群管理框架,用于实现分布式任务、存储和服务发现等。其核心概念包括Ideal State、Partition、Replica、State、State Machine和Transitions等。这些抽象模型帮助理解如何在集群中平衡资源并处理状态转换。Helix通过Controller进行状态管理,提供动态IdealState以适应集群变化,并支持Full_Auto、Semi_Auto和Customized三种方式调整资源分配。
摘要由CSDN通过智能技术生成

apache helix是一个通用的集群管理框架,既能做分布式task,也能做分布式存储,还可以做服务发现,分布式锁等,大大简化了你系统的设计,分布式系统开发过程中,一些通用的部分,它全部给你抽象实现,基于zookeeper。

那么既然是通用,那么必须要高度抽象,只有理解了抽象出来的几个概念,我们才能更好地读懂它的实现和设计原理,ok废话不多说了,撸一把。

假如我们要设计分布式task系统,那么对于一个task,有两个基本的属性,一个是位置,一个是状态。同样对于分布式存储,一个partition或者region也有位置和状态,同时,这种有位置和状态属性的东西,可以统一抽象成资源,资源分布式化,因此需要有一种平衡的理想状态。

Ideal State

"TASK_NAME" : {
  "LOCATION" : "STATE"
}

如果你希望在N1上启动myTask,那么理想状态也可以描述成这样:

{
  "id" : "MyTask",
  "mapFields" : {
    "myTask" : {
      "N1" : "ONLINE",
    }
  }
}

Partition

分区,分区概念一般在消息系统上比较常见,比如kafka,每个topic有多个partition;对于分布式task来讲,如果一个task单机单进程搞不定,那么可以映射成子任务,这种子任务,你可以理解成storm作业的spout,bolt task,那么这种东西,统一抽象成partition,代表最小的资源颗粒。

"myTask_0", "myTask_1", "myTask_2" 运行在N1, N2 和 N3 上,那么理想状态描述成下面这样,其实这里helix的理想状态就相当于storm里的每个topology的assignment,即任务分配细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值