分布式事务 LCN 和 GTS 比较 and 你更喜欢谁?

LCN 简介

  1. LCN 分布式事务框架的核心功能是对本地事务的协调控制,框架本身并不创建事务,只是对本地事务做协调控制
  2. 因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用
  3. 在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低

LCN 核心步骤

  1. 创建事务组,是指在事务发起方开始执行业务代码之前先调用 TxManager 创建事务组对象,然后拿到事务标示 GroupId 的过程
  2. 添加事务组,添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给 TxManager 的操作
  3. 关闭事务组,是指在发起方执行完业务代码以后,将发起方执行结果状态通知给 TxManager 的动作。当执行完关闭事务组的方法以后,TxManager 将根据事务组信息来通知相应的参与模块提交或回滚事务

LCN 事务控制原理

LCN 事务控制原理是由事务模块 TxClient 下的代理连接池与 TxManager 的协调配合完成的事务协调控制 TxClient 的代理连接池实现了 javax.sql.DataSource 接口,并重写了 close 方法,事务模块在提交关闭以后 TxClient 连接池将执行” 假关闭” 操作,等待 TxManager 协调完成事务以后在关闭连接

阿里云 GTS 全局事务服务

  1. 全局事务服务(Global Transaction Service,简称 GTS)是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题
  2. GTS 支持 DRDS、RDS、MySQL 等多种数据源,可以配合 EDAS 和 SpringCloud 等微服务框架使用, 兼容 MQ 实现事务消息。通过各种组合,可以轻松实现分布式数据库事务、多库事务、消息事务、服务链路级事务等多种业务需求

GTS 模拟场景演示

性能

GTS 通过大量创新,解决了事务 ACID 特性与高性能、高可用、低侵入不可兼得的问题。单事务分支的平均响应时间在 2ms 左右,3 台服务器组成的集群可以支撑 3 万 TPS 以上的分布式事务请求

LCN 性能参考:http://springcloud.cn/view/374 在众多开源分布式事务框架中,LCN 性能是处于前列的

LCN 总结

优点:

  • 性能优秀
  • 可靠性强
  • LCN 实现的分布式事务处理模式,编码复杂性和入侵代码量低

缺点:

  • 需额外部署 tx-manager 服务节点
  • 由于需要 lock 资源这种处理方式,如果集中更新某几个热门商品时,LCN 的性能衰减量大于 TCC 模式
  • 服务超时时,会造成其他服务的资源被锁住,比如支付服务超时过程中,相关商品库存会一直无法操作
  • 不支持 SpringCloud 2.0.0 及以上版本(目前已通过修改源码实现支持)

GTS 总结

优点:

  • 性能优秀 (有淘宝双十一作为示例)
  • 可靠性强
  • 代码入侵性小(相比 LCN 多一点)
  • 支持 SpringCloud 2.0.0 及以上版本

缺点:

  • 无法在本地进行测试
  • 只能在阿里云内网使用,或者购买专有云