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

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

猜你喜欢

转载自blog.csdn.net/micklongen/article/details/89743459