0%

分布式事务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及以上版本

缺点:

  • 无法在本地进行测试
  • 只能在阿里云内网使用,或者购买专有云
我就想试试,没别的意思!