4 seata-golang 分布式事务框架微信号: scottlewis 分布式事务框架 Seata-Golang 刘晓敏 H3C ⽬ 录 Demo 演示 01 Seata 原理 02 Mysql driver 原理 03 Mysql driver 接⼊ 04 TODO & QA 05 分布式事务就是指事务的参与者、⽀持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系 统的不同节点之上。简单的说,就是 统的不同节点之上。简单的说,就是⼀次⼤的操作由不同的⼩操作组成,这些⼩的操作分布在不同的服务器 上,且属于不同的应⽤,分布式事务需要保证这些⼩操作要么全部成功,要么全部失败。本质上来说,分布 式事务就是为了保证不同数据库的数据⼀致性。 什么是分布式事务问题? Demo 演示 整体机制: • ⼀阶段:业务数据和回滚⽇志记录在同⼀个本地事务中提交,释放本地锁和连接资源。 • ⼆阶段: • 提交异步化,⾮常快速地完成。 • tc 交互,报 告分⽀事务的执⾏状态。如果执⾏ Commit,connCtx 有值则把 sqlUndoItemsBuffer 中的 undoLog 和业务 数据⼀起提交到数据库,然后报告 tc 事务分⽀提交的状态(成功还是失败),否则执⾏正常的提交。如果 执⾏ Rollback,connCtx 有值则回滚然后向 tc 报告分⽀执⾏失败,tc 会根据这个状态回滚整个全局事务, connCtx 没有值则只需正常回滚。0 码力 | 14 页 | 3.23 MB | 1 年前3
华为云分布式事务DTM最佳实践servicecomb.apache.org github.com/apache?q=servicecomb 华为云分布式事务DTM最佳实践. 王启军 2 github.com/apache?q=servicecomb servicecomb.apache.org 王启军,华为云PaaS团队架构师,负责微服 务框架的开发。曾任当当网架构师,主导电商平台 架构设计;曾就职于搜狐负责手机微博的研发。 Strong 业界常用的一致性分类 5 github.com/apache?q=servicecomb servicecomb.apache.org 方案\指标 2PC 传统事务 可靠事件 TCC 柔性事务 SAGA 补偿事务 数据一致性 强一致 最终一致 最终一致 最终一致 总体性能 低 高 取决于实现 取决于实现 业务侵入性 较低侵入 高侵入 高侵入 高侵入 适用广泛性 一般 一般 高 高 低 产品成熟度 高 高 一般 低 方案对比 6 github.com/apache?q=servicecomb servicecomb.apache.org 分布式事务管理中间件 (Distributed Transaction Management,DTM) 7 github.com/apache?q=servicecomb servicecomb.apache.org DTM总体架构(TCC)0 码力 | 15 页 | 3.10 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue.acm.org/detail.cfm?id=1394128 TCC • Try: 尝试执⾏行行业务 • 完成所有业务检查,预留留必须的业务资源 • • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 39 页 | 2.78 MB | 1 年前3
《Saga分布式事务解决⽅案与实践》演讲者/姜宁《Saga分布式事务解决⽅方案与实践》 演讲者/姜宁 关于我 • 华为开源能⼒力力中⼼心 • ServiceComb项⽬目负责⼈人 • Apache Member , IPMC, 多个Apache项⽬目 • RedHat, IONA, Travelsky 议题 • 微服务事务⼀一致性问题? • 业界Saga的解决⽅方案 • ServiceComb Saga的演进 • BASE • 基本可⽤用(Basically Available) • 柔性状态 (Soft state) • 最终⼀一致性 (Eventually Consistent) (刚性事务) (柔性事务) https://queue.acm.org/detail.cfm?id=1394128 TCC • Try: 尝试执⾏行行业务 • 完成所有业务检查,预留留必须的业务资源 • • 微服务内:聚合通过数据库事务保证强⼀一致 • 内刚 • 微服务间:最终⼀一致 • 外柔 微服务事务⼀一致性建议 • 1987年年Hector & Kenneth 发表论⽂文 Sagas • Saga = Long Live Transaction (LLT) • LLT = T1 + T2 + T3 + ... + Tn • 每个本地事务Tx 有对应的补偿 Cx T10 码力 | 33 页 | 2.38 MB | 1 年前3
百度超级链 XuperChain stable 中文文档3. 创建群组 7. 使用事件订阅功能 7.1. 事件订阅的接口 7.2. 使用事件订阅 8. 只读跨链场景使用文档 8.1. B网络搭建 8.2. A网络搭建 8.3. 跨链查询 9. 非事务场景跨链使用文档 9.1. 中继同步合约 9.2. 合约使用方法 9.3. 中继同步进程 10. 搭建XPoA共识的 XuperChain 网络 10.1. 搭建XPoA共识网络 10.2. 验证集合合约部署和调用 早期交易的输出,以证明资金来源。同样,在XuperModel中,每个事务读取的 数据需要引用上一个事务写入的数据。在XuperModel中,事务的输入表示在执 行智能合约期间读取的数据源,即事务的输出来源。事务的输出表示事务写入 状态数据库的数据,这些数据在未来事务执行智能合约时将被引用,如下图所 示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供智 为其提供智 能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写集和 结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再次执行 一次合约,但此时合约只能从读集读取数据。同样,写入数据也会在写入集中 生效。当验证完生成的写集和事务携带的写集一致时合约验证通过,将事务写 入账本,cache的原理如下所示,图中左边部分是合约预执行时的示意图,右 边部分是合约验证时的示意图: XuperModel合约验证0 码力 | 325 页 | 26.31 MB | 1 年前3
Python 标准库参考指南 3.12 1 字典视图对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.12 上下文管理器类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 i 4.13 类型注解的类型 . . . . . . . . . . . 472 12.5.1 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 12.5.2 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1769 29.6.7 可用的上下文管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1770 29.7 dataclasses --- 数据类0 码力 | 2253 页 | 11.81 MB | 10 月前3
Python 标准库参考指南 3.12 1 字典视图对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.12 上下文管理器类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 i 4.13 类型注解的类型 . . . . . . . . . . . 472 12.5.1 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 12.5.2 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1769 29.6.7 可用的上下文管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1770 29.7 dataclasses --- 数据类0 码力 | 2253 页 | 11.81 MB | 10 月前3
Python 标准库参考指南 3.13 字典视图对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 i 4.12 上下文管理器类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.13 类型注解的类型 . . . . . . . . . . . 492 12.5.2 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 12.5.3 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1797 29.6.7 可用的上下文管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1799 29.7 dataclasses --- 数据类0 码力 | 2246 页 | 11.74 MB | 10 月前3
Python 标准库参考指南 3.13 字典视图对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 i 4.12 上下文管理器类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.13 类型注解的类型 . . . . . . . . . . . 488 12.5.2 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 12.5.3 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793 29.6.7 可用的上下文管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1795 29.7 dataclasses --- 数据类0 码力 | 2242 页 | 11.73 MB | 10 月前3
百度超级链 XuperChain 3.9-e 中文文档3. 创建群组 7. 使用事件订阅功能 7.1. 事件订阅的接口 7.2. 使用事件订阅 8. 只读跨链场景使用文档 8.1. B网络搭建 8.2. A网络搭建 8.3. 跨链查询 9. 非事务场景跨链使用文档 9.1. 中继同步合约 9.2. 合约使用方法 9.3. 中继同步进程 10. 搭建XPoA共识的超级链网络 10.1. 搭建XPoA共识网络 10.2. 验证集合合约部署和调用 早期交易的输出,以证明资金来源。同样,在XuperModel中,每个事务读取的 数据需要引用上一个事务写入的数据。在XuperModel中,事务的输入表示在执 行智能合约期间读取的数据源,即事务的输出来源。事务的输出表示事务写入 状态数据库的数据,这些数据在未来事务执行智能合约时将被引用,如下图所 示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供智 为其提供智 能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写集和 结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再次执行 一次合约,但此时合约只能从读集读取数据。同样,写入数据也会在写入集中 生效。当验证完生成的写集和事务携带的写集一致时合约验证通过,将事务写 入账本,cache的原理如下所示,图中左边部分是合约预执行时的示意图,右 边部分是合约验证时的示意图: XuperModel合约验证0 码力 | 317 页 | 27.80 MB | 1 年前3
共 208 条
- 1
- 2
- 3
- 4
- 5
- 6
- 21













