 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 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
 使用Go与redis构建有趣的应用合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于0 码力 | 176 页 | 2.34 MB | 1 年前3 使用Go与redis构建有趣的应用合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) 特点 • 具有多种不不同的数据结构可⽤用,其中包括:字符串串、散列列、列列表、集合、有序集合、位图 、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于 Raft 算法,多 合、有序集合、位图 (bitmap)、HyperLogLog、地理理坐标(GEO) • 内存存储和基于多路路复⽤用的事件响应系统,确保了了命令请求的执⾏行行速度和效率 • 丰富的附加功能:事务、Lua 脚本、键过期机制、键淘汰机制、多种持久化⽅方式(AOF、RDB、 RDB+AOF 混合) • 强⼤大的多机功能⽀支持:主从复制(单主多从)、Sentinel(⾼高可⽤用)、集群(基于0 码力 | 176 页 | 2.34 MB | 1 年前3
 1.1 Go语言游戏项目应用情况汇报业务模块接⼝口实现 业务模块接⼝口调⽤用 数据层 • 玩家数据库切⽚片,减⼩小查询时的集合 • ⽀支持内存事务 • 以事务为单位同步到数据库 • ⽀支持Redo、Undo以及数据挖掘的同步⽇日志 • GC优化 内存数据库代码⽚片段 内存数据库事务(⽰示意) 内存数据库事务回滚 事务⽇日志(⽰示意) 使⽤用lua脚本对同步⽇日志进⾏行数据挖掘 内存数据库的GC优化 - CGO 内存数据库的GC优化0 码力 | 21 页 | 1.63 MB | 1 年前3 1.1 Go语言游戏项目应用情况汇报业务模块接⼝口实现 业务模块接⼝口调⽤用 数据层 • 玩家数据库切⽚片,减⼩小查询时的集合 • ⽀支持内存事务 • 以事务为单位同步到数据库 • ⽀支持Redo、Undo以及数据挖掘的同步⽇日志 • GC优化 内存数据库代码⽚片段 内存数据库事务(⽰示意) 内存数据库事务回滚 事务⽇日志(⽰示意) 使⽤用lua脚本对同步⽇日志进⾏行数据挖掘 内存数据库的GC优化 - CGO 内存数据库的GC优化0 码力 | 21 页 | 1.63 MB | 1 年前3
 5 How to integrate Graph mode into RDBMS smoothly 部署运维两套数据库集群成本太高 ● 在两个不同的数据库中数据一致性不能保障 探索方向 01. 副标题 TiGraph 项目尝试验证在分布式关系型数据中无缝集成图模式: ● 同时包含关系型模型和图模型 ● 同一个事务中操作图数据和关系型数据的能力 ● 将图遍历作为 SQL 子查询(反之亦然) ● 在 SQL 中扩展出一个让 DBA 一眼就能学会的图遍历语法 ● 对于 N 度人脉的场景性能对比 关系型数据库 direction ✓ In direction ✓ Bidirection ✓ Edge traverse ✓ Distinct Index 01. 副标题 事务 01. 副标题 ● 支持分布式事务。 ● 可以在同一个事务里面同时操作 TABLE 和 TAG. mysql> CREATE TABLE orders(id bigint PRIMARY KEY AUTO_INCREMENT0 码力 | 26 页 | 1.14 MB | 1 年前3 5 How to integrate Graph mode into RDBMS smoothly 部署运维两套数据库集群成本太高 ● 在两个不同的数据库中数据一致性不能保障 探索方向 01. 副标题 TiGraph 项目尝试验证在分布式关系型数据中无缝集成图模式: ● 同时包含关系型模型和图模型 ● 同一个事务中操作图数据和关系型数据的能力 ● 将图遍历作为 SQL 子查询(反之亦然) ● 在 SQL 中扩展出一个让 DBA 一眼就能学会的图遍历语法 ● 对于 N 度人脉的场景性能对比 关系型数据库 direction ✓ In direction ✓ Bidirection ✓ Edge traverse ✓ Distinct Index 01. 副标题 事务 01. 副标题 ● 支持分布式事务。 ● 可以在同一个事务里面同时操作 TABLE 和 TAG. mysql> CREATE TABLE orders(id bigint PRIMARY KEY AUTO_INCREMENT0 码力 | 26 页 | 1.14 MB | 1 年前3
 Go 构建大型开源分布式数据库技术内幕HBase Cassandra MongoDB ... Google Spanner Google F1 TiDB RDBMS NoSQL NewSQL NewSQL 是什么 ● 水平扩展 ● 事务 ● 高可用 & 自动故障恢复 ● SQL TiDB ● Scalability as the first class feature ● SQL is necessary ● Compatible Replica from Node A Node C Node D Node E Scale-out (balance) 事务 ● Percolator ● 去中心化的两阶段提交 ○ Timestamp Allocator ● 优化的事务流程 ● Repeatable Read,RU TiDB SQL 层架构 例子 CREATE TABLE t (c1 INT, c20 码力 | 44 页 | 649.68 KB | 1 年前3 Go 构建大型开源分布式数据库技术内幕HBase Cassandra MongoDB ... Google Spanner Google F1 TiDB RDBMS NoSQL NewSQL NewSQL 是什么 ● 水平扩展 ● 事务 ● 高可用 & 自动故障恢复 ● SQL TiDB ● Scalability as the first class feature ● SQL is necessary ● Compatible Replica from Node A Node C Node D Node E Scale-out (balance) 事务 ● Percolator ● 去中心化的两阶段提交 ○ Timestamp Allocator ● 优化的事务流程 ● Repeatable Read,RU TiDB SQL 层架构 例子 CREATE TABLE t (c1 INT, c20 码力 | 44 页 | 649.68 KB | 1 年前3
 Go Web编程语言的内容,那么服务器会调用动态语言 的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端 客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果 一个简单的HTTP事务就是这样实现的,看起来很复杂,原理其实是挺简单的。需要注意的是客户机与服务器之间的通 信是非持久连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。 URL和DNS解析 URL和DNS解析 协议,它建立在TCP协议之上,一般采用TCP 的80端口。它是一个请求、响应协议--客户端发出一个请求,服务器响应这个请求。在HTTP中,客户端总是通过建立 一个连接与发送一个HTTP请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回调连 接。客户端与服务器端都可以提前中断一个连接。例如,当浏览器下载一个文件时,你可以通过点击“停止”键来中 断文件的下载,关闭与服务器的HTTP连接。 访问一次网站的全部请求信息 HTTP协议是无状态的和Connection: keep-alive的区别 HTTP协议是无状态的和Connection: keep-alive的区别 无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的 网页和你之前打开这个服务器上的网页之间没有任何联系。 90 HTTP是一个无状态的面向连接的协议,无状态不代表0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程语言的内容,那么服务器会调用动态语言 的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端 客户机与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果 一个简单的HTTP事务就是这样实现的,看起来很复杂,原理其实是挺简单的。需要注意的是客户机与服务器之间的通 信是非持久连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。 URL和DNS解析 URL和DNS解析 协议,它建立在TCP协议之上,一般采用TCP 的80端口。它是一个请求、响应协议--客户端发出一个请求,服务器响应这个请求。在HTTP中,客户端总是通过建立 一个连接与发送一个HTTP请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回调连 接。客户端与服务器端都可以提前中断一个连接。例如,当浏览器下载一个文件时,你可以通过点击“停止”键来中 断文件的下载,关闭与服务器的HTTP连接。 访问一次网站的全部请求信息 HTTP协议是无状态的和Connection: keep-alive的区别 HTTP协议是无状态的和Connection: keep-alive的区别 无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的 网页和你之前打开这个服务器上的网页之间没有任何联系。 90 HTTP是一个无状态的面向连接的协议,无状态不代表0 码力 | 295 页 | 5.91 MB | 1 年前3
共 6 条
- 1













