知识卡片

层级状态机用父子嵌套复用公共事件处理

专业/工作 · 515

内容

boost::statechart 允许状态带子状态(如 Started 状态默认进入子状态 Start),子状态天然继承父状态定义的事件处理逻辑,只需要为子状态特有的行为单独定义。这解决了传统扁平状态机的一个常见痛点:如果 PG 有几十种状态,很多状态都要响应同一类事件(比如查询当前状态、收到远端消息),扁平状态机必须在每个状态里重复写一遍几乎相同的处理逻辑;层级状态机把这类公共逻辑上提到父状态一次定义,子状态自动继承,只在真正需要不同行为时才覆盖。这是继承复用思想在状态机建模里的应用——用状态间的父子关系表达”这些状态共享大部分行为,只在细节上分叉”。

参考来源

《Ceph源码分析》第10章《Ceph Peering机制》