前言
相信搜到这篇文章的同学都知道TCC的大概由来,就不累述了。简单说:为了解决微服务所带来的事务问题而产生的一种设计思想。本文不重复和copy一些理论概念,只从本人的理解出发,从一个微服务爱好者的角度出发,分析这种设计思想。
基础概念
TCC : try,confirm,cancel,就那么简单的三个字。
try: 进行业务的检查和预操作。
confirm: 将try中的预操作落实,进行的确认操作。
cancel: 如果try失败了,进行回滚,也算是一种补偿处理。
如果对tcc不是特别了解的同学,看到上面其实还是一篇模糊,不知道这个框架到底想干什么。下面我们具体实例看下,他是怎么应用的。
实例理解
实例:用大家最容易理解的下单功能来讲。用户下单后,要执行3个内容:
- 生成订单-OrderService
- 扣减库存-StockService
- 生成会员积分-MembershipService
我们假设这三个service都是独立的三个微服务。
我们分成三个阶段来看:
Try:
OrderService:生成订单,并给订单一个初始状态:pending
StockService:冻结库存(预操作)。库存一