什么是TCC
TCC是一种分布式事务解决方案,用于解决数据一致性问题。TCC包括Try、Confirm、Cancel三部分。
- Try尝试操作是第一阶段,进行资源的检查和预留。
- Confirm确认操作是第二阶段,执行提交操作。
- Cancel取消操作,并且取消预留的资源。
TCC的设计与实现
TCC分布式服务算法简单,设计和实现中需要考虑实际的场景,做出适当改进和对可能出现的错误进行考量。与2PC和3PC类似,可先参考分布式一致性——2PC和3PC。
- 事务操作划分为两阶段执行
在提交事务之前,需要先执行第一阶段Try,尝试对申请的资源进行检查和预留。之后第二阶段提交执行事务。这两阶段与2PC类似,同样要考虑到2PC协议可能产生的问题。 - 操作信息乱序
Try操作因为网络问题丢失,或者在延迟,最终Confirm操作或Cancel操作提前到达。这时执行事务的TCC服务应该支持拒绝操作,并且之后如果到来迟到的Try操作也应该一起拒绝。另外,因为网络原因,Confirm操作或Cancel操作未到达,Try操作应该设置超时时间,适当的时候释放资源。 - 考虑事务操作的幂等性
在分布式系统中网络可能出现不稳定,尤其使用中间件作为媒介,要考虑Try、Confirm、Cancel操作可能会被重复发送,实现幂等性系统是一种解决方式。 - 可能的并发控制
在预留资源之后,可能会有其他事务需要访问预留的资源,这时的资源状态处于中间的未知状态。要考虑并发控制,保证给其他事务展示到正确的数据状态。并且在多事务同时访问相同资源时,也要考虑分布式锁的问题,尝试减小锁的粒度可以提高系统执行效率。
网友评论