状态机
1 项目概述
1.1 背景介绍及目标
1.1.1 背景
1.1.2 场景
例子:
> 实例的部署状态
+-------------------add-----------------------+ +-recover-+
| V V |
none—>allocated—>deployed—>installed—>ready->running---->dead---->removed
| ^ | ^
+--kill--+ +--delete--+
备注:这里的 dead 状态指与上下游实例已解除关系,非停止实例
(1) 触发 event(unit delete)
(2) 状态机 State1(dead) 转变为 State2(removed)
(3) 触发相关 action(下发 task 将实例删除)
> 实例的运行状态(比如 redis)
状态有 pfail,fail 等
> 容器的运行状态
* created
* running
* stopped
* paused
* deleted1.2 名词说明
1.3 Roadmap
2 需求分析
2.1 功能需求
2.2.1 有限状态机一般都有以下特点:
2.2.2 这里需要注意的两个问题:
2.2 非功能需求
2.3 调研
2.3.1 状态机
2.3.2 可视化
3 总体设计
3.1 系统架构
3.2 模块简介
3.3 设计与折衷
3.4 潜在风险
4 详细设计
4.1 模块 xx
4.1.1 交互流程
4.1.2 数据库设计
4.1.3 接口形式
5 状态机
5.1 状态机使用
5.1.1 创建状态机
5.1.2 获取当前状态机实例的状态
5.1.3 触发动作
5.2 持久化到数据库
5.2.1 简单例子
5.2.2 持久化到 MySQL
5.3 Callbacks
5.3.1 Callbacks when running events
5.3.2 callback when entering/exiting states
5.3.3 Callback 之间的关系
5.3.4 callback 异常对状态变更的影响
6 状态机实践
6.1 状态机
定义数据库字段
使用
6.2 状态机在后端架构中位置 -- 个人理解
建表
接口
类比一下
6.3 常见问题处理
触发动作时,上一个状态的 exit 检查
7 传送门
Last updated