分布式理论之调度架构

写在前面

分布式理论之体系结构 一文中我们提到了分布式的体系架构中有一种是集中式架构,在这种架构中由主来负责数据的存储和任务的分配,注意这里的任务分配,该怎么分呢?这里其实就是调度的问题了,在分布式中解决这类问题的架构我们叫做是调度架构,主要有单体调度和和两层调度,本文分别来看下。在正式开始之前我们先来看几个概念:

作业和任务:作业就是要执行的具体操作,包含多个任务。
资源:就是可供使用的从节点
调度器:负责调度任务到可用资源的组件
资源收集器:负责收集各个从节点信息的组件,供调度器任务匹配资源时使用

1:单体调度

单体调度就是在主中有一个调度器,一个资源收集器,从节点会定期上报资源信息到资源收集器中,当有任务需要分配时,会通过主的调度器分配到某个从节点,如下图:

在这里插入图片描述

其中k8s使用的调度架构就是单体调度,其中的kube scheduler就是这里的调度器角色,负责将POD分配到某个worker节点,如下图:

在这里插入图片描述

单体调度的优点是实现简单,缺点是存在单点性能瓶颈和单点故障问题。

2:两层调度

当任务的类型变多之后,不同任务的调度逻辑是不同的,如果是所有的调度策略都在一个调度器中完成的话,势必会使得调度器变得非常复杂,难以维护,那怎么办呢?分,分成多个调度器,但这多个调度器在哪里实现呢?还是要看下问题的根源,根源是多种的任务类型,而多种的任务类型是由各种不同的计算框架产生的,那么很自然的,不同的计算框架就要负责提供不用的调度器实现。此时,主只负责维护资源信息,然后,将这些信息分配给不同计算框架的调度器就行,这就是两层调度,如下图:

在这里插入图片描述

scheduler 1就是主,其负责维护资源信息,scheduler 2们就是不同的资源调度器。工作过程如下:

1:计算框架注册自己的信息到主
2:任务到主后,根据任务类型分配给具体的任务调度器
3:任务调度器匹配任务到资源后,调用主,主将任务交给具体的资源执行

其中,apache mesos采用的就是两层调度架构,因此其可以对接各种不同的计算框架。

这种架构的优点是解决了单点性能瓶颈和单点故障问题,缺点是对用户的使用门槛要求比较高。

写在后面

小结

本文看了调度架构的单体调度,和两层调度,并给出了具体的应用案例。希望本文能够帮助到你。

参考文章列表

k8s之工作机制

分布式理论之体系结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值