楔子:
去年参与的项目,在业务代码已经开发完成时,接到了需求“要求系统达到在重启/升级后,业务能够接着重启前/升级前的状态继续运转”。
直白点就是“恢复业务流程”。
场景分析:
1. 系统启动,包括第一次启动、异常重启、手动重启、升级后重启
2. 进程启动,进程Core了 (ps:在这个项目中,每个模块都是独立的进程)
系统分析:
(ps: 因为不是日记形式的,就不再描述分析过程了。 -_-||| )
分析的对象包括系统和进程,系统由互相协作的进程构成,如果进程能达到启动恢复业务,那么系统就能支持。
系统由互相协作的进程构成,业务承载在进程上,进程间可以描述成依赖链,良好的设计不允许进程间双向依赖,只允许是单向依赖。
(ps:依赖的进程和被依赖的进程为了方便记忆,被称为Client和Server。)
可以将系统理解成由业务数据驱动的进程依赖链,和用户(UI)直接打交道的模块作为依赖链的首模块。
项目中约定 单向依赖的两个模块间的数据由Client保存,所以在启动时,由Client请求Server的数据再请求一次,即可理解成恢复业务了。