领域事件——使用单个事务vs最终一致性

使用原子事务

传统的模式,客户端执行一个命令,使用一个数据库事务,服务端返回结果,要么操作全部成功,要么全部失败

优点:实现方式简单清晰

缺点:操作较多时,对数据库锁定时间可能较长

 

最终一致性

客户端发起命令后,一部分操作在一个事务中完成,剩余部分在另一个事务中完成,最终数据达成一致

优点:事务越细化,对数据库锁定的影响越小

缺点:需实现补偿机制,在部分操作失败后及时执行补偿操作。

 

在某些场景下可考虑使用最终一致性,例如有两个操作A、B

  1. B操作很耗时
  2. B操作是异步的
  3. B与A属于不同的聚合根,但同属于一个上下文
  4. B与A处于不同的上下文

 

posted @ 2020-12-01 17:29  冰山雪梨  阅读(146)  评论(0编辑  收藏  举报