simplicity is prerequisite for reliability

在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为

最近打算把 Java 9 用在生产系统上,用模块化系统裁剪出一个极小的运行时,配合羽量级的 RESTful 框架 Restlet 和 新语言 Kotlin,做一些之前一般用 Python 来做的事情。

Read More...

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

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

Read More...