**常见问题**

1. 先主动写缓存，再入DB

2. 性能问题：批量处理

3. 逻辑问题：事务是保证一致性

**强一致性**

回滚的成本有点高



**逻辑简单：异步处理**

保证服务接口的幂等性，消息日志可以存储到本地文本、数据库或消息队列，再通过业务规则自动或人工发起重试



**多个事务：分布式事务转换为多个本地事务，然后依靠重试等方式达到最终一致性**

业务逻辑无法保证幂等，则要增加一个去重表或者类似的实现：发消息的时候消息并不立即发出，而是向消息库插入一条消息记录，然后在事务提交的时候再异步将消息发出，发送消息如果成功则将消息库里的消息删除

补偿机制：重试 或 回滚



方案

流程和事务别搞混，可以强一致，可以弱一致。



**脚本注意点**

重试机制

异常处理

人工干预机制

故障恢复