 Rust分布式账务系统 - 胡宇需求分析 支付处理: ● 转账 ● 冻资 / 解资 ● 账户限额 ● 批处理事务 正确性:无双花或少付 审计监管:交易日志不可篡改,交易历史可回溯 条件事务:根据一定的条件决定事务执行与否 高可用:在部分节点失效的情况下,依旧可以提供正确的 服务 超低延迟:实时交易,超低响应延迟 水平扩展性:利用分布式事务实现钱包集群的的水平扩 展,应对高达 100 万 TPS 的流量 可演化性:业务逻辑与底层 API 解耦,当业务发生改变 时,底层 API 不用改变 分布式账务系统 设计理念 - Rust 是我们可靠的基石 分布式账务系统 存算分离 API 解耦 读写分离 层级账号 Rust ● 事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层 API 的翻 译 ○ 产生转账计划 ● Marker 事务层 ○ 使用业务 id 进行路由 ○ 执行转账计划 ○ 分发账户变动请求 ● Auticuro 账户层 ○ 使用账户 id 进行分区 ○ 执行账户变动请求 ○ 更新账户余额 分布式账务系统0 码力 | 27 页 | 12.60 MB | 1 年前3 Rust分布式账务系统 - 胡宇需求分析 支付处理: ● 转账 ● 冻资 / 解资 ● 账户限额 ● 批处理事务 正确性:无双花或少付 审计监管:交易日志不可篡改,交易历史可回溯 条件事务:根据一定的条件决定事务执行与否 高可用:在部分节点失效的情况下,依旧可以提供正确的 服务 超低延迟:实时交易,超低响应延迟 水平扩展性:利用分布式事务实现钱包集群的的水平扩 展,应对高达 100 万 TPS 的流量 可演化性:业务逻辑与底层 API 解耦,当业务发生改变 时,底层 API 不用改变 分布式账务系统 设计理念 - Rust 是我们可靠的基石 分布式账务系统 存算分离 API 解耦 读写分离 层级账号 Rust ● 事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层 API 的翻 译 ○ 产生转账计划 ● Marker 事务层 ○ 使用业务 id 进行路由 ○ 执行转账计划 ○ 分发账户变动请求 ● Auticuro 账户层 ○ 使用账户 id 进行分区 ○ 执行账户变动请求 ○ 更新账户余额 分布式账务系统0 码力 | 27 页 | 12.60 MB | 1 年前3
 新一代分布式高性能图数据库的构建 - 沈游人Takeaway AtlasGraph 架构概览 存储层 副本管理 CRAQ 图原生存储 索引 LSM-Tree 容灾保障 ( BR ) 元数据层 事务管理 MVOCC 计算层 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark 连接器 Python UDF 执行器 索引管理 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性 - 多副本管理保证数据服务高可用 - 在线备份提供容灾保障 高速 易用 可靠 Why Rust ? Performance • Blazingly fast and memory-efficient 构,基于 Raft 算法实现租约,进行 服务多活,保证图库不会出现单点 故障。 Raft 服务高可用方案 偏向分析型的分布式事务 【 MVOCC 事务提交】 基于多版本乐观并发控制技术的分布式事 务实现,在保障一致性的前提下,提供优 秀的分析性能 分布式事务技术方案 MVOCC 处理流程 全面的算法支持  覆盖全部常用算法 • 路径计算、社区检测、相似度计算 等  丰富的自研图算法0 码力 | 38 页 | 24.68 MB | 1 年前3 新一代分布式高性能图数据库的构建 - 沈游人Takeaway AtlasGraph 架构概览 存储层 副本管理 CRAQ 图原生存储 索引 LSM-Tree 容灾保障 ( BR ) 元数据层 事务管理 MVOCC 计算层 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark 连接器 Python UDF 执行器 索引管理 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎 - 配合 Atlas 图平台,实现无代码图分析 - Query 性能分析模块,启发式提示优化 - 内置多种分析函数,面向分析师友好 -MVOCC 保证事务一致性 - 多副本管理保证数据服务高可用 - 在线备份提供容灾保障 高速 易用 可靠 Why Rust ? Performance • Blazingly fast and memory-efficient 构,基于 Raft 算法实现租约,进行 服务多活,保证图库不会出现单点 故障。 Raft 服务高可用方案 偏向分析型的分布式事务 【 MVOCC 事务提交】 基于多版本乐观并发控制技术的分布式事 务实现,在保障一致性的前提下,提供优 秀的分析性能 分布式事务技术方案 MVOCC 处理流程 全面的算法支持  覆盖全部常用算法 • 路径计算、社区检测、相似度计算 等  丰富的自研图算法0 码力 | 38 页 | 24.68 MB | 1 年前3
 Real world Rust
- Why and how we use Rust in TiKVSync,那么可以安全的在线程间共享 T ● Rust 的类型推导系统和编译检查跨线程传递和共享的对象 是否满足 Send + Sync TiKV ● 大规模分布式 Key-Value 数据库 ● 支持 ACID 跨行事务支持 ● 支持 MVCC 无锁的快照读 ● 构建于 Raft 之上,不依赖分布式文件系统 ○ 更少的第三方依赖 ○ 更高的性能(低延迟) ● 配合 TiDB 使用,需要有健全的逻辑实现0 码力 | 29 页 | 506.53 KB | 1 年前3 Real world Rust
- Why and how we use Rust in TiKVSync,那么可以安全的在线程间共享 T ● Rust 的类型推导系统和编译检查跨线程传递和共享的对象 是否满足 Send + Sync TiKV ● 大规模分布式 Key-Value 数据库 ● 支持 ACID 跨行事务支持 ● 支持 MVCC 无锁的快照读 ● 构建于 Raft 之上,不依赖分布式文件系统 ○ 更少的第三方依赖 ○ 更高的性能(低延迟) ● 配合 TiDB 使用,需要有健全的逻辑实现0 码力 | 29 页 | 506.53 KB | 1 年前3
 Rust HTTP 协议栈在终端通信场景的实践 - 胡凯服务器的程序规模小,因而通信速度很快。 ✓ 灵活:HTTP 支持传输任意类型的数据对象。 ✓ 无连接:HTTP 限制每次连接只处理一个请求,节 省传输时间。(在 HTTP/1.1 之后变更) ✓ 无状态:HTTP 协议对于事务处理没有记忆能力, 每个请求/应答之间相互独立。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议的版本演化如下:0 码力 | 26 页 | 1.25 MB | 1 年前3 Rust HTTP 协议栈在终端通信场景的实践 - 胡凯服务器的程序规模小,因而通信速度很快。 ✓ 灵活:HTTP 支持传输任意类型的数据对象。 ✓ 无连接:HTTP 限制每次连接只处理一个请求,节 省传输时间。(在 HTTP/1.1 之后变更) ✓ 无状态:HTTP 协议对于事务处理没有记忆能力, 每个请求/应答之间相互独立。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议的版本演化如下:0 码力 | 26 页 | 1.25 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0后台(back of house)。前台是招待顾客的地方;这包括接待员为顾客安排座位、服务员接受 点单和付款、调酒师制作饮品的地方。后台则是厨师和烹饪人员在厨房工作、洗碗工清理餐 具,以及经理处理行政事务的区域。 为了以这种方式构建我们的 crate,我们可以将其功能组织到嵌套模块中。通过执行 cargo new restaurant --lib 来创建一个新的名为 restaurant 的库。然后将示例 项。这 是因为子模块封装并隐藏了它们的实现详情,但是子模块可以看到定义它们的上下文。继续我 138/562Rust 程序设计语言 简体中文版 们的比喻,把私有性规则想象成餐馆的后台办公室:后台的事务对餐厅顾客来说是不可知的, 但办公室经理可以洞悉其经营的餐厅并在其中做任何事情。 Rust 选择以这种方式来实现模块系统功能,因此默认隐藏内部实现细节。这样一来,你就知 道可以更改内部代码的哪些部分而不会破坏外部代码。不过 Rust” 本附录介绍 Rust 是如何开发的以及这对你作为 Rust 开发者的影响。 无停滞稳定 作为一门语言,Rust 十分注重代码的稳定性。我们希望 Rust 成为你可依赖的坚实基础,假如 事务持续地在变化,这个希望就实现不了。但与此同时,如果不能实验新功能的话,在发布之 前我们又无法发现其中重大的缺陷,而一旦发布便再也没有修改的机会了。 对于这个问题我们的解决方案被称为 “无停滞稳定”(“stability0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0后台(back of house)。前台是招待顾客的地方;这包括接待员为顾客安排座位、服务员接受 点单和付款、调酒师制作饮品的地方。后台则是厨师和烹饪人员在厨房工作、洗碗工清理餐 具,以及经理处理行政事务的区域。 为了以这种方式构建我们的 crate,我们可以将其功能组织到嵌套模块中。通过执行 cargo new restaurant --lib 来创建一个新的名为 restaurant 的库。然后将示例 项。这 是因为子模块封装并隐藏了它们的实现详情,但是子模块可以看到定义它们的上下文。继续我 138/562Rust 程序设计语言 简体中文版 们的比喻,把私有性规则想象成餐馆的后台办公室:后台的事务对餐厅顾客来说是不可知的, 但办公室经理可以洞悉其经营的餐厅并在其中做任何事情。 Rust 选择以这种方式来实现模块系统功能,因此默认隐藏内部实现细节。这样一来,你就知 道可以更改内部代码的哪些部分而不会破坏外部代码。不过 Rust” 本附录介绍 Rust 是如何开发的以及这对你作为 Rust 开发者的影响。 无停滞稳定 作为一门语言,Rust 十分注重代码的稳定性。我们希望 Rust 成为你可依赖的坚实基础,假如 事务持续地在变化,这个希望就实现不了。但与此同时,如果不能实验新功能的话,在发布之 前我们又无法发现其中重大的缺陷,而一旦发布便再也没有修改的机会了。 对于这个问题我们的解决方案被称为 “无停滞稳定”(“stability0 码力 | 562 页 | 3.23 MB | 26 天前3
 Rust 程序设计语言简体中文版父模块中的项不能使用子模块中的私有项,但是子模块中的项可以使用它们父模块中的项。这 是因为子模块封装并隐藏了它们的实现详情,但是子模块可以看到它们定义的上下文。继续拿 餐馆作比喻,把私有性规则想象成餐馆的后台办公室:餐馆内的事务对餐厅顾客来说是不可知 的,但办公室经理可以洞悉其经营的餐厅并在其中做任何事情。 Rust 选择以这种方式来实现模块系统功能,因此默认隐藏内部实现细节。这样一来,你就知 道可以更改内部代码的哪些部分而不会破坏外部代码。不过0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版父模块中的项不能使用子模块中的私有项,但是子模块中的项可以使用它们父模块中的项。这 是因为子模块封装并隐藏了它们的实现详情,但是子模块可以看到它们定义的上下文。继续拿 餐馆作比喻,把私有性规则想象成餐馆的后台办公室:餐馆内的事务对餐厅顾客来说是不可知 的,但办公室经理可以洞悉其经营的餐厅并在其中做任何事情。 Rust 选择以这种方式来实现模块系统功能,因此默认隐藏内部实现细节。这样一来,你就知 道可以更改内部代码的哪些部分而不会破坏外部代码。不过0 码力 | 600 页 | 12.99 MB | 1 年前3
共 6 条
- 1













