分布式事务框架DogTcc是怎么样的

65次阅读
没有评论

共计 2432 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章将为大家详细讲解有关分布式事务框架 DogTcc 是怎么样的,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Dog Tcc 是什么?

DogTcc 是一个基于注解的高性能 分布式事务 TCC 框架。感谢于他的框架设计, 可达到 2ms/ 事务,支持链式调用,损耗线性增长。

框架特性

高速,事务发起方损耗 2.15ms 每事务,事务被调方损耗 2.13ms 每事务

损耗随事务链变宽[A 调用 B,C,D,E..],或者变深[A 调用 B,B 调用 C,C 调用 D..], 线性增长

对原有服务无侵入,标注是基于方法而不是 RPC 接口的,可以在需要回滚的最小单位方法上添加标注

易用性高,使用者通过标注,和实现指定的回滚和确认接口,即可集成框架

节点无本地状态,部署多台即可实现集群,无需多余配置

和协议无关,使用者只要实现事务的协议注入即可集成到框架中,可参照 Spring 模块

和消息服务器无关,框架提供了消息服务接口,使用者可使用其他消息中间件,可参考 zookeeper 模块

支持事务链,事务链长度不影响事务性能

故障恢复,任何服务节点丢失都不会影响最终一致性,丢失节点的事务会被同类节点托管,或者在丢失节点启动时候恢复

错误通知,对于极端情况,Confirm 或者 Cancel 失败,系统会通过第三方接口通知,用户需要实现该接口定义的方法

性能报告

测试机配置

cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz

Linux version 3.10.0-327.el7.x86_64

4G

内存

操作系统

Cpu

启动配置

zookeeper 默认配置启动

注册中心 和 Server1 Server2 Server3

启动参数:-Xms256m -Xmx512m

测试用例 [见 Server1 工程的 Server1ApplicationController]

链式调用:Server1 调用 Server2 ,Server3 ; Server2 调用 Server3

单次调用:Server1 调用 Server3

为了降低业务对框架性能测试的影响,Server2 和 Server3 的业务代码为空。

Server2 中有一个 Call 单元

Call(有回滚需求的方法)定义请见:https://github.com/sunpengChina/dog/wiki/DogTcc-architecture

Server3 中有两个 Call 单元

性能报告

[1]非线程 5000 次非 TCC 事务调用:11325ms

[2]非线程 5000 次 TCC 事务单次调用:34133ms

[3]10 线程,各 500 次循环,共 5000 次链式,TCC 事务调用:49826ms

[4]10 线程,各 500 次循环,共 5000 次链式, 非 TCC 事务调用:6458ms

[5]10 线程,各 500 次循环,共 5000 次,TCC 事务单次调用:35566ms

[6]10 线程,各 500 次循环,共 5000 次, 非 TCC 事务单次调用:2884ms

结论

设 tcc 单次调用,发起方损耗为 x (ms),call 损耗为 y (ms)

根据性能报告的 [3] 和[4],可得 x + 3y = (49826 – 6458)/5000 = 8.67 ms

根据性能报告的 [5] 和[6], 可得 x + 2y = (35566-2884)/5000 = 6.52 ms

可得 tcc 发起方单次损耗为:2.25 ms ; Call 方损耗为 2.13 ms

快速开始

准备 zookeeper

wget https://raw.githubusercontent.com/wiki/sunpengChina/dog/zookeeper-3.4.13.zip

解压文件 unzip zookeeper-3.4.13.zip

进入 zk 目录 cd zookeeper-3.4.13/bin

启动 zk 服务器 ./zkServer.sh start

打开 zk 客户端 ./zkCli.sh

在 zk 客户端中执行 create /dog dog

下载源码

https://github.com/sunpengChina/dog.git

进入源码根目录,编译源码 mvn clean install

启动服务

启动 springCloud 配置中心: cd jar -jar eureka/target/eureka-1.0-SNAPSHOT.jar

启动服务 Server1:jar -jar Server1/target/Server1-1.0-SNAPSHOT.jar

启动服务 Server2:jar -jar Server2/target/Server2-1.0-SNAPSHOT.jar

启动服务 Server3:jar -jar Server3/target/Server3-1.0-SNAPSHOT.jar

在浏览器中测试

http://127.0.0.1:8081/chainTcc 一次链式事务调用,检验你的系统是否正常部署

http://127.0.0.1:8081/noTcc5000 5000 次无事务调用的时间

http://127.0.0.1:8081/singleTcc5000 5000 次简单事务单元的时间

http://127.0.0.1:8081/chainTcc5000thread 10 个线程各 500 次调用 TCC 链式事务,调用需要的时间

http://127.0.0.1:8081/chainNoTcc5000thread 10 个线程各 500 次调用链式非 TCC 事务,调用需要的时间

http://127.0.0.1:8081/singleTcc5000thread 10 个线程各 500 次调用非链式 TCC 事务,调用需要的时间

http://127.0.0.1:8081/singleNoTcc5000thread 10 个线程各 500 次调用非链式非 TCC 事务,调用需要的时间

关于分布式事务框架 DogTcc 是怎么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2432字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)