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
5 How to integrate Graph mode into RDBMS smoothly 对于复杂的关系网络,传统关系型数据库无能为力 ● 单独部署图数据库集群 ● 部署运维两套数据库集群成本太高 ● 在两个不同的数据库中数据一致性不能保障 探索方向 01. 副标题 TiGraph 项目尝试验证在分布式关系型数据中无缝集成图模式: ● 同时包含关系型模型和图模型 ● 同一个事务中操作图数据和关系型数据的能力 ● 将图遍历作为 SQL 子查询(反之亦然) ● 在 SQL 中扩展出一个让 DBA 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 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与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
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
2-6-Golang 在 Baidu-FrontEnd 的应用-陶春华应用层防火墙WAF • 百度GOLANG委员会成员 内容提要 • 后台程序开发的需求和难点 –C, Python and Go对比 • 采用Go语言重构BFE –背景和技术路线 –GC问题 –协议一致性 –分布式架构 后台程序开发的需求(1) • 性能 –C/C++, Java –Python, Ruby • 并发性 –Process, Thread, Event(编程难度) • 开发效率 –GO-BFE的场景和服务模式,大量的goroutine必然 存在 • 需要根据线上运行实际情况来做选型 协议一致性问题 • GO-BFE 参考了Go的http库 • 基于Go的http实现是否完善,符合rfc标准 –没有大规模的应用的例子 • 需要一些方法来验证 –网络协议一致性测试是难点 协议一致性 • Macaroon框架 Mock client GO-BFE Mock server0 码力 | 35 页 | 730.17 KB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? • 数据太多,内存不够用,如何进行存储扩展? 通过本次分享,可以带来哪些收获? 难点攻克 第二部分 使用内存缓存 数据一致性如何保证? 一致性 01. 缓存如何保证更新,如何与数据库同步 同步、更新 被动方式 缓存过期 定期同步 主动方式 监听数据变化 数据加载,更新 02. 全量数据加载,增量数据监听 业务代码与框架代码分离,聚焦业务开发 缓存接入成本低,无需关注内部的管理,开箱即用 提供灵活的查询、过滤、排序、分页等接口,为查询业务赋能 开发者无需关注缓存与数据库的数据一致性,框架层面有保障 框架提供脚手架,框架代码自动生成,减少心智负担 海量数据可扩展,接入冷热数据交换策略,只需简单配置 海量数据存储,不会触发GC扫描,服务性能无压力 单元测试高覆盖,稳定有保障0 码力 | 48 页 | 6.06 MB | 1 年前3
2.7 Golang与高性能DSP竞价系统Redis集群 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right ReservedAll Right Reserved • 最终在Client端实现 • ⼀一致性hash: github.com/stathat/consistent • 预先开启⾜足够多的Redis实例,预防增加节点带来的数据 迁移⿇麻烦 Redis集群 专业DSP解决⽅方案 Right ReservedAll Right Reserved • 内存占⽤用过⼤大时,可以切分为多个实例,减少单个实例 的内存占⽤用,减少BgSave和重启时Load数据的时间 • ⼀一致性要求不是⾮非常⾼高的业务,可以把⾃自动的BgSave 关闭,在凌晨或者空闲时候⼿手动调⽤用BgSave Redis运维 专业DSP解决⽅方案 © ⼲⼴广州舜⻜飞信息科技有限公司 All Right0 码力 | 51 页 | 5.09 MB | 1 年前3
GoFrame框架介绍及设计我们只需要了解一个框架的内容变化,而不是数十个模块的内容变化 • 升级的时候只需要升级一个框架版本,而不是数十个模块版本的升级 • 减轻心智负担,提高模块可维护性,更容易保证各业务项目的模块版本一致性 改进: 模块化设计-常见问题 1. 模块低耦设计:文件层面的源文件下载与模块之间的逻辑耦合没有直接关系 2. 框架核心精简:功能强大且代码精简,包含测试与示例代码共8MB容量 3. 编译 升级的时候只需要升级一个框架版本,而不是数十个模块版本的升级 • 统一的模块化设计可以减少不必要的逻辑实现,提高模块性能及易用性 • 减轻开发人员的心智负担,提高模块可维护性,更容易保证各业务项目 的模块版本一致性 统一框架设计-形成技术沉淀 发现问题 分析问题 解决问题 方案沉淀 统一框架 基于统一的开发框架,更容易形成技术沉淀,企业与社区形成良性循环。 统一框架设计-避免资源浪费 当每个团队都在试图自己创造轮子时,不仅0 码力 | 37 页 | 8.84 MB | 1 年前3
共 19 条
- 1
- 2













