高性能 分布式事务框架 DogTcc 初探

源码地址 https://github.com/sunpengChina/dog

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

    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

  • 启动配置

    • 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

快速开始

转载于:https://my.oschina.net/u/3287393/blog/3026712

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值