Rust分布式账务系统 - 胡宇第三届中国 Rust 开发者大会 Rust 构建分布式账务系统 在 Fintech 公司落地 Rust 项目的经验分享 Airwalle x 胡宇 Airwallex 我们是一家跨境支付领域的 Fintech 独角兽 关于我们 E2 轮 Fintech 独角兽,业务遍布全球 关于我们: Airwallex 墨尔本 新加坡 伦敦 深圳 香港 北京 旧金山 上海 东京 提供高效,低成本的数字银行服务 关于我们: Airwallex 从设计架构到实现细节 项目介绍 分布式账务系统 Fintech 互联网 正确性 bug= 资损 bug 不可怕,快速迭代 可靠性 丢数据 = 资损 允许数据丢失 性能 超低延迟 + 高吞吐 超高吞吐 交易日志 审计,监管 调试使用 分布式账务系统 Fintech 领域中的软件与互联网软件的不同 需求分析 支付处理: ● 转账 高可用:在部分节点失效的情况下,依旧可以提供正确的 服务 超低延迟:实时交易,超低响应延迟 水平扩展性:利用分布式事务实现钱包集群的的水平扩 展,应对高达 100 万 TPS 的流量 可演化性:业务逻辑与底层 API 解耦,当业务发生改变 时,底层 API 不用改变 分布式账务系统 设计理念 - Rust 是我们可靠的基石 分布式账务系统 存算分离 API 解耦 读写分离 层级账号 Rust ● 事务层与账户层分0 码力 | 27 页 | 12.60 MB | 1 年前3
Building Linux Distribution(Linux 分布式)- 贾晓宇0 码力 | 19 页 | 723.62 KB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人新一代分布式高性能图数据库的构建 北京海致星图科技有限公司 2023-06-18 沈游人 数据库与大数据专场 海致简介—企业级知识图谱开创者 专业顶尖技术团队支撑 超 700 人团队,其中 80% 为技术人员,创始团队在完成全球第一个中文知 识图谱网站研发后,探索知识图谱技术在企业领域的应用。 2021 年,海致院 士专家工作站成立,站内清华大学计算机博士生占比达 90% 以上。 集团关系 社群关系 欺诈团伙 担保关系 资金圈 / 链 … 设别出带有某种共同特征 的企业或个人群体 舆情传导 营销传导 风险传导 … 计算某个事件在关联的企业、个人 之间的传递过程和传递概率 图深度学习及其应用场景 图嵌入 • 将高维的图信息映射到低维向量中 • 通过图嵌入将客户关系表示为低维向量,可以结合其 他客户行为特征进行机器学习训练 图卷积神经网络 • 对图结构数据进行卷积计算 实时风控对图库的性能挑战( OLTP 毫秒级响应) • 海致图平台产品服务于金融、政府行业有大量业务经验积累(接近客户需求) • 现有开源产品无法满足要求(受限于基础架构设计,优化性能有限) 新一代分布式图数据库需具备的特性 特性 信 雅 达 • 高可用 • 一致性(事 务) • 高性能 • 低资源消耗 • 易用 • 功能丰富 AtlasGraph 关键特性 云原生 Cloud-Native0 码力 | 38 页 | 24.68 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭⼼为核⼼的云 端架构是否还 满⾜需求? 01 02 03 边缘架构 ⼀种分布式计 算架构 构成边缘 计算架构 的核⼼ 可在边缘直接对数据进⾏相 关的计算(处理/存储)并提 供相应的查询功能 边缘架构 物联⽹设备的纽带 2. HPMQ 简介 HPMQ是基于Rust语⾔开发的 下⼀代可编程边缘分布式 MQTT软件,主要有以下⼏个 核⼼特性: • Geo-Distributed 只能做到在数据中⼼内相关的分布式扩展,⽆法直接进⾏ 全球节点的扩展 • 复杂的容灾⽅案 为什么需要geo-distributed 传统⽅案存在有问题 解决⽅案 geo-distributed架构 + 调度 如何管理分布式⽹络 我们主要基于eclipse-zenoh来做⼆次开 发,eclipse-zenoh是⼀款很优秀的rust 语⾔编写的,基于边缘架构的,开源分 布式消息服务基础架构,它帮我们解决 布式消息服务基础架构,它帮我们解决 了很多分布式⽹络管理的共同的问题, ⽐如说分布式消息⼀致性问题,边缘节 点⾃动发现等问题 传统⽅案痛点 1)数据传输量⼤,中⼼压⼒⼤,⾼可⽤要求⾼ 2)数据发布与订阅都在中⼼,延迟⾼ 3)源站直接暴露 4)数据不好就近进⾏脱敏处理 5)数据不好就近进⾏存储 新⽅案优势 1)分摊中⼼压⼒ 2)降低延迟 3)隐藏源站 4)边缘计算0 码力 | 31 页 | 3.95 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 16.2. 使用消息传递在线程间通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 的时候,就意味着调用 的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。 16/562Rust 程序设计语言 简体中文版 第二,"Hello, world!" 是一个字符串。我们把这个字符串作为一个参数传递给 println!,字 符串将被打印到屏幕上。 第三,该行以分号结尾(;),这代表一个表达式的结束和下一个表达式可以开始。大部分 Rust 代码行以分号结尾。 编译和运行是彼此独立的步骤 你 终端标准输入句柄的类型。 接下来,代码中的 .read_line(&mut guess) 调用了标准输入句柄上的 read_line 方法,以获 取用户输入。我们还将 &mut guess 作为参数传递给 read_line 函数,让其将用户输入储存到 这个字符串中。read_line 的工作是,无论用户在标准输入中键入什么内容,都将其追加(不 24/562Rust 程序设计语言 简体中文版0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版..................................................................................... 414 16.2. 使用消息传递在线程间通信 ....................................................................................... 421 )。我们将在第十九章详细讨论宏。现在你只需记住,当看到符号 ! 的时候,就意味着调 用的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。 第三,"Hello, world!" 是一个字符串。我们把这个字符串作为一个参数传递给 println! , 字符串将被打印到屏幕上。 第四,该行以分号结尾(; ),这代表一个表达式的结束和下一个表达式的开始。大部分 Rust 代码行以分号结尾。 编译和运行是彼此独立的步骤 你 的实例,这代表终端标 准输入句柄的类型。 代码的下一部分,.read_line(&mut guess) ,调用 read_line 方法从标准输入句柄获取用户 输入。我们还将 &mut guess 作为参数传递给 read_line() 函数,让其将用户输入储存到这个 字符串中。read_line 的工作是,无论用户在标准输入中键入什么内容,都将其追加(不会覆 盖其原有内容)到一个字符串中,因此它需要0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 语言学习笔记高级所有权 ................................................................................. 38 3.4.1.函数传递参数和返回参数类似于 let 语句 .................................... 38 3.4.2 涉及到函数和结构体的借用检查器 ................. . 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...........0 码力 | 117 页 | 2.24 MB | 1 年前3
Comprehensive Rust(简体中文) 202412rs 文件转换为二进制文件和其他中间格式。 • cargo:Rust 依赖项管理器和构建工具。Cargo 知道如何下载托管在 https://crates.io 上的依赖 项, 并在构建项目时将它们传递给 rustc。Cargo 还附带一个内置的测试运行程序,用于执行单元 测试。 • rustup:Rust 工具链安装和更新工具。当 Rust 发布新版本时,此工具用于安装并更新 rustc 和 cargo。此外,rustup 言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,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”更改为一个变量,可以看0 码力 | 359 页 | 1.33 MB | 11 月前3
Real world Rust
- Why and how we use Rust in TiKVSend,那么可以安全的在线程间传递 T ○ 不同线程即使销毁也无所谓 ● 如果 T: Sync,那么可以安全的在线程间共享 T ● Rust 的类型推导系统和编译检查跨线程传递和共享的对象 是否满足 Send + Sync TiKV ● 大规模分布式 Key-Value 数据库 ● 支持 ACID 跨行事务支持 ● 支持 MVCC 无锁的快照读 ● 构建于 Raft 之上,不依赖分布式文件系统 ○ ● 配合 TiDB 使用,需要有健全的逻辑实现 SQL 层的下推算子 TiKV 的前置需求 ● 极高的性能要求,尽可能低延迟,而且延迟需要稳定 ● 设计分布式系统的逻辑,极其复杂 ○ Raft ○ Multi-Raft ○ 分布式测试框架 ● 和 C 的模块大量交互 ● 开发人员和时间不足 ○ 5 人的团队,希望半年左右发布第一个可用版本 TiKV 的语言选型参考 ● Go . snapshot snapshot ... Main thread Worker threads IO threads 跨线程通信 - 如何选择 ● Channel ○ 异构线程之间传递对象 ● Arc + Mutex ○ 同构的工作线程间共享对象 Rust 和 C ● Rust 对 C 的调用没有任何 overhead ● C 区域的调用没法保证安全 ● TiKV 场景的特殊性0 码力 | 29 页 | 506.53 KB | 1 年前3
Rust HTTP 协议栈在终端通信场景的实践 - 胡凯China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China 与 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
共 24 条
- 1
- 2
- 3













