《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——二、Dataphin 演进之路:产品大图及核心功能详解——(二)研发:集成、建模、发布、运维(6) https://developer.aliyun.com/article/1229658?groupCode=dataphin
c) 如何快速定位问题?
介绍完监控告警,我们再来看看如何处理收到的告警任务吧。
Dataphin 提供了实例运行诊断的能力,从上游依赖、定时时间、限流规则、调度资源及实例执行 5 个阶段分析实例运行过程中可能产生的异常:
• 上游依赖
上游依赖诊断为您展示实例最近 1 次运行诊断结果及上游实例当前最新的状态。上游实例运行失败将阻塞当前实例的运行,您可以通过查看上游依赖诊断结果进一步排查失败原因并一键定位到需要直接处理的其实异常实例。
• 定时时间
检查是否已到达任务设置的定时运行时间,只有上游全部运行成功且到达了的定时调度时间的实例才会继续下发,否则为“等待调度时间”状态。
• 限流规则
所有实例运行都需要进行限流规则的诊断,上游依赖及定时时间诊断通过后,需要同时满足所有命中的限流规则才会下发到资源调度系统,否则为“限流中”状态。您可以查看当前实例命中的限流规则以及当前队列中已下发的实例列表。
• 调度资源
实例有足够可分配的空闲调度资源才会开始运行,否则为“等待调度资源”状态。您可以查看实例已等待调度资源的时长、以及当前占用所在资源组资源的全量实例列表,并根据诊断建议执行对应的操作。
• 实例执行
Dataphin 提供单个任务每次运行的执行日志以及面向部署运维人员的全链路分析日志。执行日志中会将出错原因及建议打印出来,如:缺少某张表的权限、查询的字段不存在、内存不足、数据源链接报错等等,运维人员可以基于此处的原因分析联系对应的开发或数据库管理员及时处理。
d) 如何高效恢复数据?
面向不同的场景,Dataphin 提供灵活、可配置的重跑、强制重跑等功能,并提供基于列表的批量操作能力,可以帮助您快速执行相关操作,大大减少人工操作成本,快速恢复调度。
• 重跑/重跑下游
运行成功或失败状态的实例支持重跑。重跑时会按照最新发布的代码版本执行。对于任务配置问题或网络环境问题导致的的运行失败,可以通过重跑恢复数据。dataphin 支持针对单个实例进行重跑、或选中一个起点及其下游,按照依赖关系进行批量重跑(如整条链路计算逻辑修改等场景),以实现全链路数据更新。
• 强制重跑/强制重跑下游
重跑操作要求依赖的所有上游实例运行成功并到达当前实例的定时调度时间,某些场景下,可以忽略上游实例的运行状态(一般是无数据依赖,仅调度依赖,或者对数据实效性要求不高的情况),这时可以使用强制重跑功能来恢复运行。
另一种场景,已经运行到中间链路的任务,发现来源数据错误需要及时止损,此时可以使用强制重跑下游功能来解决,系统会先将所有选中的任务批量终止,再从最上游实例按照依赖关系依次向下运行,避免新老代码并存产生的数据错乱。
e) 如何进行有效的并发控制?
当计算引擎出现性能瓶颈、资源分配不足或需控制任务下发时间和顺序等场景时,通过配置开发或生产环境任务的限流规则,保障系统的稳定性以及业务数据按序及时产出。
Datatphin 支持基于业务视角的调度限流功能,支持根据任务优先级和资源空闲情况,控制不同时间段内不同任务的下发数量。基于限流能力,不仅可以减少对底层计算引擎和上下游数据源的并发压力,保证高优任务优先分配调度及计算资源,任务能按序产出;同时也能实现故障异常场景下的快速止血,避免产生因为无法干预或介入较晚而产生严重的问题,增强整体稳定性。
例如:更换底层引擎的场景下,我们可以通过配置全局限流来阻断任务的下发;迁移完成后,需要优先对核心任务进行补数据操作,再逐步恢复对日常任务的运行,则可以通过“所属项目”圈选出日常任务并将其并发度设置为 1而核心任务不设置并发限制,来保障资源优先分配给核心任务。