在实际项目中 , 我们可能会做延迟撤销:try阶段预留资源失败后,并不马上修改订单、合同和库存状态,而是通过定时任务扫描异常单或者超时处理等方式来达到最终一致性 。举个例子:在try阶段订单和合同创建成功,达到带创建状态 , 而库存锁定失败;这是可以不必马上做cacel操作,可以业务上规定订单30分钟不进入正常状态即认为操作失败,系统可以通过跑定时任务来扫描这些异常单并作出相应的处理(定时补偿机制) 。
思考
TCC在某种意义上来说和两阶段(2PC)提交非常类似,Try和prepare类似 , confirm相当于commit,cancel和rollback一样都是回滚动作,只不过TCC的两阶段提交是在业务层面的(需要开发者根据各自业务的特点来实现try-confirm-cancel),2PC则更多用在数据库事务处理上,倾向于底层的实现和具体业务无关 。
最后来思考一个问题,TCC是否适用于所有的业务场景?答案一定是否定的,没有一种方案是万能的 。
【TCC的中文含义 tcc是什么意思】首先,TCC事务机制要求必须实现Try confirm cancel3个接口,所以需要额外的开发资源;
其次,由于TCC的关键在于Try阶段的资源预留,当业务复杂度比较高的时候,就会产生很多的中间状态,预留的资源的成本会比较高,倍数增加了业务的复杂度,对性能也会有影响 。
所以,在处理分布式事务的时候,还是具体情况具体分析 , 根据业务场景选择不同的事务处理机制,也可以多种机制混合使用(2PC,TCC , 事务型消息队列,事务补偿等等) , 毕竟适合自己的才是最好的 。
推荐阅读
- 0月份可以做香肠
- 梦洁家纺好不好
- 家纺知识大全
- 江西省余干县瑞洪镇
- 感情一旦超过四个月 爱情经历的六个阶段
- 三星s8是什么屏幕
- 素包子馅怎么做好吃又简单 素包子馅怎么做好吃
- 考研苏大软件工程
- 物候现象是什么 物候现象介绍