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 HTTP 协议栈在终端通信场景的实践 - 胡凯服务器的程序规模小,因而通信速度很快。 ✓ 灵活:HTTP 支持传输任意类型的数据对象。 ✓ 无连接:HTTP 限制每次连接只处理一个请求,节 省传输时间。(在 HTTP/1.1 之后变更) ✓ 无状态:HTTP 协议对于事务处理没有记忆能力, 每个请求/应答之间相互独立。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议的版本演化如下: 与 HTTP 协议 actix_web 是一个强大、实用且速度极快的 Rust 网络框架。 ✓ Rust 异步实现 ✓ 支持 HTTP/1 和 HTTP/2 ✓ 支持 HTTPS ✓ 支持消息路由 ✓ 支持 body 自动解压缩 ✓ 支持 multipart Rust China Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 以上 传输性能。 Rust China Conf 2022 – 2023, Shanghai, China Rust 与终端 HTTP 通信场景结合 针对网络不稳定场景: ➢ 支持用户设置速度限制范围:给消息 body 读取逻辑增加速度的上下限,以及时根据网络变化做 出操作。 ➢ 支持用户设置连接和请求的超时时间:给请求的各个区间设置定时器,以及时检测网络变化。 Rust China Conf 20220 码力 | 26 页 | 1.25 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 16.2. 使用消息传递在线程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规 则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序的运行。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 562 页 | 3.23 MB | 26 天前3
Rust 程序设计语言简体中文版...................................................................................... 414 16.2. 使用消息传递在线程间通信 ....................................................................................... 421 Rust 设计中一个经过慎重考虑的决定:要求 在函数定义中提供类型注解,意味着编译器再也不需要你在代码的其他地方注明类型来指出你 的意图。而且,在知道函数需要什么类型后,编译器就能够给出更有用的错误消息。 当定义多个参数时,使用逗号分隔,像这样: 文件名:src/main.rs fn main() { print_labeled_measurement(5, 'h'); } fn 译器在编译时会根据一系列的规则 进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都 不会减慢程序。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 Rust 和所有权系统的规则越来越有经验,你就越能自然地编写出安全和高效的代码。持之以 恒! 当你理解了所有权,你将有一个坚实的基础来理解那些使 Rust 独特的功能。在本章中,你将0 码力 | 600 页 | 12.99 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
Rust 语言学习笔记.. 92 7.1.4 线程与 move闭包 ................................................................ 93 7.2 消息传递 .................................................................................... 93 7.2.1 通道与所有权的转移 96 7.2.4 异步通道与同步通道 ............................................................. 97 7.2.5 可发送的消息类型 ................................................................ 99 7.3 send 与 sync........... tx.send(val).unwrap(); }); let received:String = rx.recv().unwrap(); // 阻塞等待,直到接收到一个消息 println!("Got: {}", received); } 例如上述代码编译通过,但是在运行过程中会死锁。而 rust 的编译器无法识别 此类错误。Rust 对安全的理解是死锁不属于内存安全问题。0 码力 | 117 页 | 2.24 MB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐10118-3:2018 计算密码杂凑 哈希 256 SHA256 是 TLCP、数字签名及验证、消息认 证码生成及验证、随机数生成、 密钥扩充 Sm4 GM/T 0002-2012 ISO/IEC WD1 18033- 3/AMD2 分组加解密 分组加 密 128 AES128,但 是更多次轮询 是 TLCP、消息加解密,用于替代 DES/AES 等国际算法 Sm7 / 分组加解密 分组加 Rust China Conf 2022 – 2023, Shanghai, China • SM1 是分组加密算法,实现对称加密,分组长度和密钥长度都为 128 位,对长消息进行加解密时, 若消息长度过长,需要进行分组,如果消息长度不足,则要进行填充。 • 保证数据机密性。 • 算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片 中,调用该算法时,需要通过加密芯片的接口进行调用。 MD5/SHA-1/SHA-2 等国际 算法,是在 SHA-256 基础上改进实现的一种算法,消息分组长度为 512 位,摘要值长度为 256 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩 函数所构成。 • 保证信息的完整性。 • 在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成、密钥 扩充等。据国家密码管理局表示,其安全性及效率要高于0 码力 | 44 页 | 3.70 MB | 1 年前3
Comprehensive Rust(简体中文) 202412言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 f64。 27 fn main() { let x = 3.14; let y = 20; assert_eq!(x, y); // ERROR: happened: {msg}"), } } 在这里,我们使用了分支来解构“Result”值。在第一个分支中, “half”被绑定到“Ok”变体中的值。在第二 个分支中, “msg”被绑定到错误消息。 结构体 • 更改“foo”中的字面量值以与其他模式相匹配。 • 向“Foo”添加一个新字段,并根据需要更改模式。 • 捕获和常量表达式之间的区别可能很难发现。尝试将第二个分支中的“2”更改为一个变量,可以看 collect() 或使用以下 Turbofish:foo.collect::>()。 debuggable 是什么类型?尝试输入 let debuggable: () = ..,查看会显示什么错误消息。 14.6 练习:通用 min 函数 In this short exercise, you will implement a generic min function that determines 0 码力 | 359 页 | 1.33 MB | 10 月前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭如何管理分布式⽹络 我们主要基于eclipse-zenoh来做⼆次开 发,eclipse-zenoh是⼀款很优秀的rust 语⾔编写的,基于边缘架构的,开源分 布式消息服务基础架构,它帮我们解决 了很多分布式⽹络管理的共同的问题, ⽐如说分布式消息⼀致性问题,边缘节 点⾃动发现等问题 传统⽅案痛点 1)数据传输量⼤,中⼼压⼒⼤,⾼可⽤要求⾼ 2)数据发布与订阅都在中⼼,延迟⾼ 3)源站直接暴露 hpmq-cli push 发布函数 Demo 4. HPMQ未来规划 开源(https://github.com/wangjuyunlian/hpmq) 基于零信任架构实现远程设备访问 消息边缘存储 发个招聘⼩⼴告(rust/c/c++岗位) 但愿诸贤集鹭汉, 书⽣穷死胜侯封0 码力 | 31 页 | 3.95 MB | 1 年前3
共 14 条
- 1
- 2













