知识卡片
批处理实现流程自动化的三大缺陷
内容
批处理作业是开发者最常用的非工作流引擎方案之一,本质是”多个批处理作业交替实现一个流程,但任何单个作业都不了解整个流程”——好比酒店里换乘多部电梯上楼,每部电梯只管把人从一层送到另一层,没有一部电梯知道你最终要去的房间;大多数现实批处理是按固定时间点触发(A作业早8点跑、B作业早9点跑),这意味着整个流程耗时可能很长。批处理与流程正交带来三个具体缺陷:一是拉长流程周期——为了压缩延迟而更频繁触发批处理,甚至在上一批还没跑完就启动下一批,反而引入奇怪的并发问题;二是故障处理困难,具体又分三层——批处理故障往往让整个作业停摆且未必能从中断点重启(导致延迟或重复处理)、故障记录缺乏上下文(看不出这条记录怎么来的、该往哪流转)、清理和恢复失败作业的路径不清楚,运维人员因而无法掌握流程全貌;三是流程本身不可见,隐藏在一个个作业的交替调用里,公司要投入大量精力维护调度顺序,整个架构因此脆弱且难以迭代。值得注意的例外:当处理逻辑本身需要汇总一批记录(如计算总数)时,批处理与流程中的某个具体任务正交,而非与整个流程正交,此时批处理的问题就只是局部小问题。
参考来源
- 位置:《流程自动化实战:系统架构和软件开发视角》第5章《选择工作流引擎和BPMN》"5.1.2 批处理"(源文件:_epub-src/EPUB/xhtml/Section0001_0008.xhtml)
- 结论依据:原文用酒店电梯比喻说明批处理与流程正交的本质,并分别展开延迟拉长、故障处理三层困难、流程不可见三条具体缺陷,同时说明批处理与流程中单个任务正交时问题较小,直接支撑本卡片结论。
- 原始内容:一个批处理作业只专注于流程中的一个任务,整个流程由多个批处理作业交替实现。批处理与真正的流程实际上是正交的……运维人员不知道流程全貌。这使得分析问题、解决问题变得非常困难。