在实际项目中 , 我们可能会做延迟撤销: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 , 事务型消息队列,事务补偿等等) , 毕竟适合自己的才是最好的 。
- 螃蟹脚的功效与作用
- 凯旋门是什么牌子的包包 圣罗兰的包包辨别真假
- 百度地图如何开启自动省电模式?百度地图开启自动省电模式的方法
- 海底的生物有什么
- 微光怎么看自己的视频播放 微光怎么看自己的视频
- wps中怎么使用自带论文查重功能?wps中使用自带论文查重功能的方法
- 怎样挑选石斛最好?
- 西凤酒是哪个省的
- 日本人的英文 怎么造句呢
- 颜色的名称
