simplicity is prerequisite for reliability

前些天和同事探讨一个系统该如何设计,有些心得记录一下。同事想要设计一个任务执行系统,其中有一个核心驱动部件,以有向无环图的形式来描述任务之间的依赖关系,使得没有前后依赖的任务可以并发执行。任务的实际执行发生在多个外部系统,任务执行系统主要负责任务调度以及状态更新、进度展示等。

同事找我探讨的原因是他发现「如何简单地发现一个任务所依赖的任务已经执行成功」越发成为一个困难的事情,比如任务 C 依赖任务 A、B 先执行成功,那么需要为 C 分配一个线程,定期去询问 A 和 B 的执行进展,一旦系统中同时存在的任务数量增多,系统就显得越发复杂和脆弱。

Read More...