一、分布式结构体系 - 集中式
把多个服务器管理起来,作为一个统一的资源提供服务,即主从结构。
1、Borg:Google内部使用的集群管理系统,负责提交、调度、开始、重启等。闭源,单层调度框架,基本调度单元是Job,基本操作单元是Task。客户有Google。
2、Kubernetes:用于自动部署、扩展、容器管理。开源,单层调度框架,基于Borg实现。消除编排计算、网路和存储设施负担。基本调度单元是Pod,基本操作单元是Service。客户有网易云、华为等
3、Mesos:Apache旗下开源分布式资源管理框架,被称为分布式系统内核。开源,双层调度框架。为用户的数据中心提供动态的资源分配。基本调度单元是容器、Jon,基本操作单元是Task。客户有Twitter、Apple、爱奇艺等

二、分布式结构体系 - 非集中式
服务的执行和数据的存储被分散到不同的服务器集群,集群间通过消息通信。没有中央服务器和节点服务器之分,所有服务器地位平等。
1、Akka:完全去中心化的集群管理系统,每个节点进行数据处理和任务执行,节点间可通信。使用Gossip协议,成员之间P2P结构的网络拓扑。需要选主。
2、Redis集群:使用Gossip协议,基于哈希槽的网络拓扑。需要选主。为高可用每个节点都需要有一个从库。
3、Cassandra:一致性哈希的P2P结构,使用Gossip协议,不需要选主。

三、分布式调度 - 单体调度
一个集群中只有一个节点运行调度进程,该节点可访问其他节点,搜集其他节点的资源信息和状态。根据用户下发的任务需求选择最合适的节点执行。单体调度器拥有全局资源视图和全局任务,可以很容易地实现对任务的约束并实施全局性的调度策略。如Borg、Kubernetes等。
调度设计:以任务为单位调度。
调度算法:

  • 筛选可行:如某任务指定在1、3、5节点执行,并需要内存多少CPU多少。
  • 评分取优,包括最差匹配:选择资源最宽松的节点,但会导致每个节点都有无法满足其他任务的资源碎片;最优匹配:先把一个节点的资源用满,在选择其他节点。

四、分布式调度 - 两层调度
解决单体调度的性能瓶颈,部署在节点集群中的一层负责收集资源信息,并同步给二层,二层和业务部署在一起,二层来根据资源和任务进行节点选择,选择的节点和任务再下发给一层,由一层下发给执行节点。
1、Apache Mesos:每个集群只有一个Master节点,用于管理Slave节点。并对接上层框架(如Hadoop)。

  • Master进程收集所有节点信息并上报给注册的上层框架,上层框架进行任务调度,并将匹配结果下发给Master,由Master转发给执行器。
  • 调度算法:最大最小公平算法:兼顾公平的同时尽可能让更多人满足资源分配。主导资源公平算法:考虑公平性的前提下考虑任务具体需求(CPU密集任务主要用CPU,内存密集型任务主要用内存)

五、分布式调度 - 共享状态调度
基于单体调度模式,分解为多个调度器,每个调度器都有全局的资源信息。解决了单体调度的瓶颈问题,解决了两层调度的无法匹配最优解,但存在资源冲突的问题且实现复杂。如Google Omega。

标签: 分布式

添加新评论