9 OTP设计原则——第一部分
9.1 概述
OTP设计原则用于指导以进程、模块和目录的形式组织Erlang代码的规范。
9.1.1 Supervision树——进程管理树(监控树)
Erlang/OTP最基本的概念是监控树,由workers进程和supervisors进程组成。workers是真正执行任务的进程,我们在这里实现自己的功能;supervisors是监控进程,用于监视worker进程的行为,当worker进程异常时可以重启它。通过这种设计,worker进程可以专注工作,而supervisor监控进程尽量少的做事——它只负责监视自己负责的进程,可能是worker进程,也可能是次级监控进程。监控树按照层级组织代码,由顶层监控进程、次级监控进程和工作进程组成,很容易设计高容错系统。
9.1.2 行为模式(behaviours)
在监控树中,许多进程有类似的结构和模式。例如,supervisors进程结构上类似,区别就是监控的子进程不一样。workers进程几乎都是客户端-服务端架构、有限状态机模型,以及拥有类似的事件处理机制,比如异常日志。