状态机幂等

何为状态幂等?


先了解何为幂等。

幂等大家应该都知道。

在针对数据更新操作的幂等中,有一个实现方案是基于版本号的数据库乐观锁。
在账户记账业务中,我们通常会使用这种方式。

具体的姿势是下面2步(前提是表里有version):

  1. 查询数据,然后执行业务逻辑处理
  2. 执行完业务逻辑,在更新数据时,将数据中的version作为update语句的where条件

有了这些知识,我们再来理解状态幂等,就比较容易了。 数据状态就是数据的流转状态,并且每个流转都涉及到前置状态和目标状态。

状态机幂等,就是在更新状态时,将前置状态作为update语句的where条件。


与版本号乐观锁相比,有所不同的是,使用状态机幂等,可以不用事先查询数据。只要程序中定义了状态流转规则(状态机),那么,在执行update操作时,直接加上前置状态条件即可。