美文网首页
tcc事务实战学习过程

tcc事务实战学习过程

作者: wine_5664 | 来源:发表于2018-06-19 17:44 被阅读0次
  • 学习项目:https://github.com/14251104246/spring-cloud-rest-tcc
  • 下载源码,进入源码目录运行:mvn clean package
  • Docker Compose运行
    • docker-compose -f infrastructure-compose.yml up -d
    • docker-compose -f basic-ms-compose.yml up -d
    • docker-compose -f monitor-ms-compose.yml up -d
    • docker-compose -f business-ms-compose.yml up -d
  • 全部运行后发现内存不够(电脑没超过16g内存的就可以放弃了)
  • 只用docker-compose运行前两个,剩下选择性通过源码启动
    • 发现mysql没启动成功,改用本地mysql
    • 本地数据库执行如下脚本
      CREATE USER 'chris'
        IDENTIFIED BY '123123';
      CREATE SCHEMA IF NOT EXISTS `account`
        DEFAULT CHARACTER SET utf8;
      CREATE SCHEMA IF NOT EXISTS `product`
        DEFAULT CHARACTER SET utf8;
      CREATE SCHEMA IF NOT EXISTS `order`
        DEFAULT CHARACTER SET utf8;
      CREATE SCHEMA IF NOT EXISTS `membership`
        DEFAULT CHARACTER SET utf8;
      
      GRANT ALL ON `account`.* TO 'chris';
      GRANT ALL ON `product`.* TO 'chris';
      GRANT ALL ON `order`.* TO 'chris';
      GRANT ALL ON `membership`.* TO 'chris';
    
  • 首先添加host
## solar
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 rabbitmq
127.0.0.1 zipkin_server
127.0.0.1 solar_mysql
127.0.0.1 gitlab
  • 进入源码启动ZipkinMsApplication
  • 进入源码启动OrderMsApplication
    • 发现控制台只输出banner,且没注册到eureka
    • 修改spring cloud配置中心的eureka配置(已上传到示例项目)
    • 关闭加密(已上传到示例项目)
  • 进入源码启动
  • 进入源码启动
  • 打开订单服务的swagger测试api

深入了解

  • 示例项目中子项目间依赖(使用网关的情况):
image.png
  • Try Confirm Cancel 补偿模式在示例项目中的应用

    • RESTful TCC模式分3个阶段执行
    graph LR
    try阶段-->Confirm阶段
    Confirm阶段-->Cancel阶段-失败时才有
    
    • 示例项目中的RESTful TCC模式
      • order订单对accountproduct发起尝试,再向tcc协调器发起确认;
      • tcc协调器对accountproduct进行确认
      • 如果失败则进入cancel阶段
    • 示例项目中的RESTful TCC模式图例
    image.png
    • 示例项目整体架构
    image.png

各服务解析

首次启动时通过Flyway自动初始化数据库。

对spring cloud config server采用fail fast策略,一旦远程配置服务无法连接则无法启动业务服务。

account

用于获取用户信息,用户注册,修改用户余额,预留余额资源,确认预留余额,撤销预留余额。

product

用于获取产品信息,变更商品库存,预留库存资源,确认预留库存,撤销预留库存。

tcc coordinator

TCC资源协调器,其职责如下:

  • 对所有参与者发起Confirm请求。
  • 无论是协调器发生的错误还是调用参与者所产生的错误,协调器都必须有自动恢复重试功能,尤其是在确认的阶段,以防止网络抖动的情况。

order

order服务是本项目的入口,尽管所提供的功能很简单:

  • 下单. 即生成预订单,为了更好地测试TCC功能,在下单时就通过Feign向服务accountproduct发起预留资源请求,并且记录入库。
  • 确认订单. 确认订单时根据订单ID从库中获取订单,并获取预留资源确认的URI,交由服务tcc统一进行确认,如果发生冲突即记录入库,等待人工处理。

相关文章

  • tcc事务实战学习过程

    学习项目:https://github.com/14251104246/spring-cloud-rest-tcc...

  • 分布式事务概述

    本文目的在于总结一下tcc学习过程中,对分布式事务和TCC的理解。主要讲述如下三个部分 分布式事务概念及常见方案 ...

  • 如何实现一个TCC分布式事务框架的一点思考

    一个TCC事务框架需要解决的当然是分布式事务的管理。关于TCC事务机制的介绍,可以参考TCC事务机制简介。 TCC...

  • 高手通用分布式事务框架!

    一个TCC事务框架需要解决的当然是分布式事务的管理。关于TCC事务机制的介绍,可以参考TCC事务机制简介。 TCC...

  • 63.分布式事务解决方案-TCC

    TCC事务 TCC即Try Confirm Cancel,它属于补偿型分布式事务。TCC实现分布式事务一共有三个步...

  • TCC分布式事务管理器

    一,TCC分布式事务管理器 ByteTCC Himly TCC-transaction 二,TCC事务管理器的实现...

  • 分布式事务之解决方案(TCC)

    4. 分布式事务解决方案之TCC 4.1. 什么是TCC事务 TCC是Try、Confirm、Cancel三个词语...

  • TCC事务

    TCC事务机制相对于传统事务机制(X/Open XA Two-Phase-Commit),其特征在于它不依赖资源...

  • TCC事务

    【转自】:http://www.cnblogs.com/duanxz/p/5226316.html 【参考】:ht...

  • TCC 事务

    简介 TCC是一种常见的分布式事务机制,是“Try-Confirm-Cancel”三个单词的缩写,是有数据库专家P...

网友评论

      本文标题:tcc事务实战学习过程

      本文链接:https://www.haomeiwen.com/subject/fxhaeftx.html