A. 系统架构概要 --- 分布式系统 --- 任务调度

A. 系统架构概要 — 分布式系统 — 任务调度

基本问题

  • 资源异质性和工作负载异质性
  • 数据局部性
    • 节点局部性
    • 机架局部性
    • 全局局部性
  • 抢占式调度和非抢占式调度
  • 资源分配粒度:作业级和任务级
    • 全分或者全不分
    • 增量满足式分配
    • 资源储备 策略
  • 饿死和死锁问题
  • 资源隔离方法

资源管理与调度系统范型

  • 集中式调度器
  • 两级调度器
  • 共享调度器

资源调度策略

  • FIFO调度策略
  • 公平调度器
  • 能力调度器
  • 延迟调度策略
  • 主资源公平调度策略

项目

  • Mesos
  • yarn

定时任务 — google cron

  • 复杂度
    • 功能点
      • 如何处理Cron崩溃导致错过的任务,或者状态丢失导致有可能同一个任务执行两次
      • 周期性任务的任务描述,比如说每天执行一次。
      • 部分启动:一个任务由多个服务组成,其中有部分任务启动失败(比如说发送RPC本身的任务崩溃)
    • 非公能点
      • 可靠性
  • 任务类型
    • 垃圾回收类任务
    • 周期性的数据分析任务
    • 等等
  • Cron任务和幂等性
    • 问题:周期性任务多种多样,如果完全满足几乎是不可能,会导致Cron复杂无比,影响到可靠性
    • 任务分类
      • 幂等性:频繁的垃圾回收任务,可以允许偶尔跳过
      • 非幂等性:发送邮件
      • 周期长短:长周期任务,不允许被跳过,比如说每个月执行一次的工资计算任务。
      • 等等
    • 设计要点
      • 在最差情况下,跳过某个任务不执行,通过人工干预。因为修复执行两次产生的问题,比修复某个任务美欧执行的问题难得多
      • 对Cron做主备设计(热备),应对延时要求高的任务
      • 对于状态存储,可以采用分布式系统(GFS等)
  • 系统设计
    • 跟踪Cron任务的状态
      • 设计方案
        • 将数据存放在外部分布式存储上
        • 系统内部自行存储一些(很小量)的状态信息
      • google cron:选用自定存储
        • 分布式文件爱呢系统:延迟高,文件系统主要适用于非常大的文件
        • 基础服务应该依赖越少越好
    • 基于Paxos算法做主从设计
    • 在任务名中加入预计启动时间作为任务名的一部分,主要处理高频任务
    • 保存日志
      • 日志需要定期压缩,以防无限增长:快照
      • 日志必须要存储在某个地方
        • 快照存放在分布式系统
        • 还没有形成快照的,存放在系统内部
    • 防止“惊群效用”:在添加一个周期任务的同时,创建一堆任务出来,或者说同一个时间点,很多任务同时启动
      • Cron会根据用户约定的时间,自行调整,防止惊群效用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值