@WochiB70分部署事务的替代方式 中发帖

场景
两个服务:

A服务,优惠券服务存放着可用的抵扣券
B服务,业务服务如果当前用户不是VIP则需要消耗一张抵扣券才能进行业务

问题
当前系统中只有一个业务存在分布式事务,导致不想引入其他分布式组件,增加系统的部署运维复杂性(非必要不新增)。
要如何设计流程才可以尽可能的完成业务呢?可以接受一定层度的失败
我的思考

如果后续过程允许失败,即失败了算作一次调用。那么就可以直接将其当作普通业务即可,因为后续的业务的失败也被视作调用成功了。
如果后续的过程中不消耗资源,则可以实现一个类似于TCC的模式。A服务给出两个接口(try接口冻结抵扣券,confirm接口实际扣除,cancel使用倒计时如果五分钟内没有实际扣除则取消冻结)

存在的问题:

如果后续流程失败需要回滚
后续过程比较昂贵

这两种情况该如何解决呢?
佬们怎么看这个问题呢?