分布式事务 LCN 和 GTS 比较 and 你更喜欢谁?
LCN 简介
- LCN 分布式事务框架的核心功能是对本地事务的协调控制,框架本身并不创建事务,只是对本地事务做协调控制
- 因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用
- 在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低
LCN 核心步骤
- 创建事务组,是指在事务发起方开始执行业务代码之前先调用 TxManager 创建事务组对象,然后拿到事务标示 GroupId 的过程
- 添加事务组,添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息添加通知给 TxManager 的操作
- 关闭事务组,是指在发起方执行完业务代码以后,将发起方执行结果状态通知给 TxManager 的动作。当执行完关闭事务组的方法以后,TxManager 将根据事务组信息来通知相应的参与模块提交或回滚事务
LCN 事务控制原理
LCN 事务控制原理是由事务模块 TxClient 下的代理连接池与 TxManager 的协调配合完成的事务协调控制 TxClient 的代理连接池实现了 javax.sql.DataSource 接口,并重写了 close 方法,事务模块在提交关闭以后 TxClient 连接池将执行” 假关闭” 操作,等待 TxManager 协调完成事务以后在关闭连接
阿里云 GTS 全局事务服务
- 全局事务服务(Global Transaction Service,简称 GTS)是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题
- 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 及以上版本
缺点:
- 无法在本地进行测试
- 只能在阿里云内网使用,或者购买专有云