A. 系统架构概要 --- 分布式系统 --- 任务调度
基本问题
资源异质性和工作负载异质性
数据局部性
节点局部性
机架局部性
全局局部性
抢占式调度和非抢占式调度
资源分配粒度:作业级和任务级
全分或者全不分
增量满足式分配
资源储备 策略
饿死和死锁问题
资源隔离方法
资源管理与调度系统范型
集中式调度器
两级调度器
共享调度器
资源调度策略
FIFO调度策略
公平调度器
能力调度器
延迟调度策略
主资源公平调度策略
项目
Mesos
yarn
定时任务 --- google cron
复杂度
功能点
如何处理Cron崩溃导致错过的任务,或者状态丢失导致有可能同一个任务执行两次
周期性任务的任务描述,比如说每天执行一次。
部分启动:一个任务由多个服务组成,其中有部分任务启动失败(比如说发送RPC本身的任务崩溃)
非公能点
可靠性
任务类型
垃圾回收类任务
周期性的数据分析任务
等等
Cron任务和幂等性
问题:周期性任务多种多样,如果完全满足几乎是不可能,会导致Cron复杂无比,影响到可靠性
任务分类
幂等性:频繁的垃圾回收任务,可以允许偶尔跳过
非幂等性:发送邮件
周期长短:长周期任务,不允许被跳过,比如说每个月执行一次的工资计算任务。
等等
设计要点
在最差情况下,跳过某个任务不执行,通过人工干预。因为修复执行两次产生的问题,比修复某个任务美欧执行的问题难得多
对Cron做主备设计(热备),应对延时要求高的任务
对于状态存储,可以采用分布式系统(GFS等)
系统设计
跟踪Cron任务的状态
设计方案
将数据存放在外部分布式存储上
系统内部自行存储一些(很小量)的状态信息
google cron:选用自定存储
分布式文件爱呢系统:延迟高,文件系统主要适用于非常大的文件
基础服务应该依赖越少越好
基于Paxos算法做主从设计
在任务名中加入预计启动时间作为任务名的一部分,主要处理高频任务
保存日志
日志需要定期压缩,以防无限增长:快照
日志必须要存储在某个地方
快照存放在分布式系统
还没有形成快照的,存放在系统内部
防止“惊群效用”:在添加一个周期任务的同时,创建一堆任务出来,或者说同一个时间点,很多任务同时启动
Cron会根据用户约定的时间,自行调整,防止惊群效用
A. 系统架构概要 --- 分布式系统 --- 任务调度
猜你喜欢
转载自blog.csdn.net/micklongen/article/details/89743459
今日推荐
周排行