微服务架构的分布式事务解决方案有几种( 三 )
4.4.2 公网输出
这种输出形式面向于非阿里云的用户,使用更加方便、灵活,业务系统只要能连接互联网即可享受GTS提供的云服务(与公有云输出的差别在于客户端部署于用户本地,而不在云上)。
在正常网络环境下,以包含两个本地事务的全局事务为例,事务完成时间在20ms左右,50个并发就可以轻松实现1000TPS以上分布式事务,对绝大多数业务来说性能是足够的。在公网环境,网络闪断很难完全避免,这种情况下GTS仍能保证服务调用的数据一致性。
具体使用样例使用参见4.7节GTS的工程样例。
4.4.3 专有云输出
这种形式主要面向于已建设了自己专有云平台的大用户,GTS可以直接部署到用户的专有云上,为专有云提供分布式事务服务。目前已经有10多个特大型企业的专有云使用GTS解决分布式事务难题,性能与稳定性经过了用户的严格检测。
4.5 GTS的使用方式
GTS对应用的侵入性非常低,使用也很简单。下面以订单存储应用为例说明。订单业务应用通过调用订单服务和库存服务完成订单业务,服务开发框架为Dubbo。
4.5.1 订单业务应用
在业务函数外围使用@TxcTransaction注解即可开启分布式事务。Dubbo应用通过隐藏参数将GTS的事务xid传播到服务端。
4.5.2 服务提供者
更新库存方法
4.6 GTS的应用情况
GTS目前已经在淘宝、天猫、阿里影业、淘票票、阿里妈妈、1688等阿里各业务系统广泛使用,经受了16年和17年两年双十一海量请求的考验。某线上业务系统最高流量已达十万TPS(每秒钟10万笔事务)。
GTS在公有云和专有云输出后,已经有了100多个线上用户,很多用户通过GTS解决SpringCloud、Dubbo、Edas等服务框架的分布式事务问题。业务领域涉及电力、物流、ETC、烟草、金融、零售、电商、共享出行等十几个行业,得到用户的一致认可。
上图是GTS与SpringCloud集成,应用于某共享出行系统。业务共享出行场景下,通过GTS支撑物联网系统、订单系统、支付系统、运维系统、分析系统等系各统应用的数据一致性,保证海量订单和数千万流水的交易。
4.7 GTS的工程样例
GTS的公有云样例可参考阿里云网站。在公网环境下提供sample-txc-simple和sample-txc-dubbo两个样例工程。
4.7.1.1 样例业务逻辑
该样例是GTS的入门sample,案例的业务逻辑是从A账户转账给B账户,其中A和B分别位于两个MySQL数据库中,使用GTS事务保证A和B账户钱的总数始终不变。
4.7.1.2 样例搭建方法
1) 准备数据库环境
安装MySQL,创建两个数据库db1和db2。在db1和db2中分别创建txc_undo_log表(SQL脚本见4.7.3)。在db1库中创建user_money_a表,在db2库中创建user_money_b表。
2) 下载样例
将sample-txc-simple文件下载到本地,样例中已经包含了GTS的SDK。
3) 修改配置
打开sample-txc-simple/src/main/resources目录下的txc-client-context.xml,将数据源的url、username、password修改为实际值。
推荐阅读
- 大连暂停小诊所和村卫生室等相关医疗服务
- 八旬老人义务剪发50余载带领“银发服务队”温暖一座城
- 互联网怎样解决“家政服务上门速度慢”的问题
- 服务区|南通交警走进高速服务区开展主题宣传活动
- 大丰|盐城大丰开通智慧养老服务平台 已完成17万次上门服务
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 服务期|
- |淮安市地方金融监管局组建三大团队精准服务实体经济
- 汽车|23家汽车厂商4S店服务满意度测评:东风标致排名垫底
- 应该怎样理解会员服务的法律性质