Rust分布式账务系统 - 胡宇第三届中国 Rust 开发者大会 Rust 构建分布式账务系统 在 Fintech 公司落地 Rust 项目的经验分享 Airwalle x 胡宇 Airwallex 我们是一家跨境支付领域的 Fintech 独角兽 关于我们 E2 轮 Fintech 独角兽,业务遍布全球 关于我们: Airwallex 墨尔本 新加坡 伦敦 深圳 香港 北京 旧金山 上海 东京 可靠性 丢数据 = 资损 允许数据丢失 性能 超低延迟 + 高吞吐 超高吞吐 交易日志 审计,监管 调试使用 分布式账务系统 Fintech 领域中的软件与互联网软件的不同 需求分析 支付处理: ● 转账 ● 冻资 / 解资 ● 账户限额 ● 批处理事务 正确性:无双花或少付 审计监管:交易日志不可篡改,交易历史可回溯 条件事务:根据一定的条件决定事务执行与否 高可用 事务层与账户层分 离 ● 独立水平扩展 ● CQRS ● Event Sourcing ● 针对读场景,写场 景分别优化 ● 稳定的底层 API ● 灵活的顶层 API ● 树状结构 ● 聚合查询 ● 正确性:内存安全,线程安全 ● 可靠性: Raft 共识算法 raft-rs ● 高性能:关键路径无锁单线程 顶层架构 ● Gateway 路由层 ○ 业务 API 到底层0 码力 | 27 页 | 12.60 MB | 1 年前3
⽤ egg 孵化你的 SQL 优化器 - 王润基t(a, b) SELECT sum(count(b)) FROM t Validation ❌ 嵌套的聚合函数 SELECT a FROM t WHERE sum(b) > 10 ❌ WHERE 中的聚合函数 聚合函数提取 sum + count $1.1 聚合分析 count [] [count(Id(1))] [sum(Id(1))] [sum(Id(1)) [sum(Id(1)), count(Id(1))] Id=1 2 3 4 5 [count(Id(4))] ⚠ 嵌套聚合函数 ✅ 收集所有聚合函数 聚合函数提取 Filter $1.2 = “Bob” Hash Join $1.1 = $2.1 Scan $1.1, $1.2 Scan $2.1, $2.2 Projection $1.2 + $2.2 物理下标解析 Parser Binder Optimizer Executor SQL AST Table 基于 egg 的新版查询引擎 类型分析 Schema 分析 聚合分析 — 类型检查 — 通配符展开 — 聚合提取 常量分析 列分析 ⾏分析 类型分析 Schema 分析 — 类型解析 — 物理下标解析 — 常量折叠 — 算⼦下推 — 代价估计 — 其它优化0 码力 | 39 页 | 6.48 MB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐AES128,但 是更多次轮询 是 TLCP、消息加解密,用于替代 DES/AES 等国际算法 Sm7 / 分组加解密 分组加 密 128 否,仅以 IP 核的形 式存在于芯片中 卡证类、票务类、支付与通卡类 应用 Sm9 GM/T 0044-2016 ISO/IEC 10118-3:2018 标识密码算法:签名 校验,密钥交换,密 钥封装与加解密 非对称 加密 128 是 TLCP,适用于新兴应用的安全保 为分组加密算法,对称加密,分组长度为128比特,密钥长度为128比特。 • 保证信息机密性。 • 该算法不公开,应用包括身份识别类应用(非接触式 IC 卡、门禁卡、工作证、参赛证 等),票务类应用(大型赛事门票、展会门票等),支付与通卡类应用(积分消费卡、校 园一卡通、企业一卡通等)。 SM9 Introduction of SM9 Rust China Conf 2022 – 2023, Shanghai, China0 码力 | 44 页 | 3.70 MB | 1 年前3
基于 Rust Arrow Flight 的物联网和时序数据传输及转换工具 霍琳贺简的时序数据处理平台。 采用关系型数据库模型 需要建库、建表, 为提升写入和查询效率,要求一个数据采集点一张表 为实现多表聚合,引入超级表概念 子表通过超级表创建,带有标签,通过标签实现多表 高效聚合 高效写入 支持标准 SQL 写入,支持批量写入 支持 Schemaless 写入 支持从 Kafaka, MQTT, OPC, PI System0 码力 | 29 页 | 2.26 MB | 1 年前3
Rust在Substrate 开发框架中的使用.. 应用场景 去中心化技术的特点包括,永不离 线、开源审查、数据加密、保护隐 私、分享权益等。 随着区块链技术的发展,交易成本、 确认时间、能源消耗、安全性、互通 性都有极大地提升。 国际支付 金融交易 去中心自 治组织 信息登记 存证 应用链开发 - 房产登记交易平台 房主登记房产信息 房管局认证登记信 息 房主出售房产 房管局授权交易 买房购买锁定房产 05 010 码力 | 37 页 | 967.22 KB | 1 年前3
Rust 程序设计语言简体中文版义 枚举的定义 ch06-01-defining-an-enum.md commit bb7e429ad6b59d9a0c37db7434976364cbb9c6da 结构体给予你将字段和数据聚合在一起的方法,像 Rectangle 结构体有 width 和 height 两 个字段。而枚举给予你将一个值成为一个集合之一的方法。比如,我们想让 Rectangle 是一 些形状的集合,包含 用于存放发生 于世界各地的新闻故事,而结构体 Tweet 最多只能存放 280 个字符的内容,以及像是否转推 或是否是对推友的回复这样的元数据。 我们想要创建一个名为 aggregator 的多媒体聚合库用来显示可能储存在 NewsArticle 或 Tweet 实例中的数据摘要。为了实现功能,每个结构体都要能够获取摘要,这样的话就可以调 用实例的 summarize 方法来请求摘要。示例 体中可以有多个方法:一行一个方法签名且都以分号结尾。 215/600 Rust 程序设计语言 简体中文版 为类型实现 trait 现在我们定义了 Summary trait 的签名,接着就可以在多媒体聚合库中实现这个类型了。示例 10-13 中展示了 NewsArticle 结构体上 Summary trait 的一个实现,它使用标题、作者和创建 的位置作为 summarize 的返回值。对于0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 语言学习笔记age: 12, }; (14,person) } 4.1.2 结构体 在 Rust 中,结构体是一个跟 tuple 类似 的概念。我们同样可以将一些常用 的数据、属性聚合在一起,就形成了一个结构体。 所不同的是,Rust 的结构体有三种最基本的形式。 1.具名结构体:通常接触的基本都是这个类型的。 struct A { attr1: i32,0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0表达式中用模式匹配,针对不同的枚举值编写相 应要执行的代码。最后会介绍 if let,另一个简洁方便处理代码中枚举的结构。 114/562Rust 程序设计语言 简体中文版 枚举的定义 结构体给予你将字段和数据聚合在一起的方法,像 Rectangle 结构体有 width 和 height 两个 字段。而枚举给予你一个途径去声明某个值是一个集合中的一员。比如,我们想让 Rectangle 是一些形状的集合,包含 世界各地的新闻故事,而结构体 SocialPost 最多只能存放 280 个字符的内容,以及指示该帖 子是新发布的、转发的还是对另一条帖子的回复的元数据。 我们想要创建一个名为 aggregator 的多媒体聚合库用来显示可能储存在 NewsArticle 或 SocialPost 实例中的数据摘要。为了实现功能,每个结构体都要能够获取摘要,这样的话就 可以调用实例的 summarize 方法来请求摘要。示例 签名的定义完全一致的 summarize 方法。 trait 体中可以有多个方法:一行一个方法签名且都以分号结尾。 为类型实现 trait 现在我们定义了 Summary trait 的签名,接着就可以在多媒体聚合库中实现这个类型了。示例 10-13 中展示了 NewsArticle 结构体上 Summary trait 的一个实现,它使用标题、作者和创建的 位置作为 summarize 的返回值。对于 SocialPost0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust算法教程 The Algos (algorithms)来更⾼的运⾏或者存储效率。数据结构往往 同⾼效的检索算法和索引技术有关 在计算机科学的发展过程中,数据结构也随之发展。程序设计中常⽤的数据结构包括如下⼏个。 1. 数组(Array) 数组是⼀种聚合数据类型,它是将具有相同类型的若⼲变量有序地组织在⼀起的 集合。数组可以说是最基本的数据结构,在各种编程语⾔中都有对应。⼀个数组可以分解为 多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、0 码力 | 270 页 | 8.46 MB | 1 年前3
共 9 条
- 1













