架构和设计的原则 - kennethjiang/Wolke GitHub Wiki

定义:

  • 部件(Component):一个可以独立运行的程序。一般表现形式是一个系统进程。例子1:一个可以从命令行启动的Python脚本,包括其依赖的所有模块;例子2:一个运行在Web Server或App Server内的HTTP应用。
  • 模块(Module):有两方面含义:1)一个独立功能块,一般包含数个源代码文件,按文件目录组织。大致对应于Java的Package,Python和Ruby的Module。2)(很重要)依赖关系设计和管理的单位。

架构和设计的原则:

  1. 无共享数据(shared-nothing)原则。任何两个部件之间不能共享状态(后台数据)。这实际上意味着系统是基于Message Bus的架构。
  2. 最小依赖原则。任何两个部件之间原则上不依赖。在部件间建立依赖关系是系统架构师才能做的决定。
  3. 单向依赖原则。模块间可以有单向依赖关系。双向依赖(循环依赖)是不允许的。
  4. 可重入原则。部件的设计必须是可重入的。典型例子:部件C在处理消息M时被系统中断。部件C重启后接受到重发的消息M,必须能够正确处理消息M。
  5. 例外原则。遇到具体的原因导致设计不得不违反以上原则时,必须由架构师决定例外处理。所有的例外必须有文档记录。