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% 以上。 授、中国计算机学会前理事长,中国计算机系统结构 的学科带头人,我国高性能计算和存储系统等方面的 泰斗和先行者。 2021 年 3 月 25 日,海致科技与清华大学计算机科学与技术系共同建设高性能图计算院士专家工作站 。 高性能图计算是高性能计算、图计算两项技术融合产生的新的技术方向,满足人们对更大规模、更复 杂数据的实时处理和存储需求,是计算机领域竞争新战略制高点。 产学结合、协同创新,打造全球领先的国产自研图数据库 通过图嵌入将客户关系表示为低维向量,可以结合其 他客户行为特征进行机器学习训练 图卷积神经网络 • 对图结构数据进行卷积计算 • 通过已有的企业数据,通过 GCN 进行半监督学习和分 类,预测企业的违约概率 传统的关系型数据库的存储方式丢失了事物之间的关系信息 Relational Table Real World Multi-Context is Preserved with Graph Analytics Source:0 码力 | 38 页 | 24.68 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭⼼为核⼼的云 端架构是否还 满⾜需求? 01 02 03 边缘架构 ⼀种分布式计 算架构 构成边缘 计算架构 的核⼼ 可在边缘直接对数据进⾏相 关的计算(处理/存储)并提 供相应的查询功能 边缘架构 物联⽹设备的纽带 2. HPMQ 简介 HPMQ是基于Rust语⾔开发的 下⼀代可编程边缘分布式 MQTT软件,主要有以下⼏个 核⼼特性: • Geo-Distributed Rust? • 云端架构,我们⽆法根据设备地理位置实现就近通讯 • 只能做到在数据中⼼内相关的分布式扩展,⽆法直接进⾏ 全球节点的扩展 • 复杂的容灾⽅案 为什么需要geo-distributed 传统⽅案存在有问题 解决⽅案 geo-distributed架构 + 调度 如何管理分布式⽹络 我们主要基于eclipse-zenoh来做⼆次开 发,eclipse-zenoh是⼀款很优秀的rust 语⾔编写的,基于边缘架构的,开源分 布式消息服务基础架构,它帮我们解决 了很多分布式⽹络管理的共同的问题, ⽐如说分布式消息⼀致性问题,边缘节 点⾃动发现等问题 传统⽅案痛点 1)数据传输量⼤,中⼼压⼒⼤,⾼可⽤要求⾼ 2)数据发布与订阅都在中⼼,延迟⾼ 3)源站直接暴露 4)数据不好就近进⾏脱敏处理 5)数据不好就近进⾏存储 新⽅案优势 1)分摊中⼼压⼒ 2)降低延迟0 码力 | 31 页 | 3.95 MB | 1 年前3
Real world Rust
- Why and how we use Rust in TiKV● 大规模分布式 Key-Value 数据库 ● 支持 ACID 跨行事务支持 ● 支持 MVCC 无锁的快照读 ● 构建于 Raft 之上,不依赖分布式文件系统 ○ 更少的第三方依赖 ○ 更高的性能(低延迟) ● 配合 TiDB 使用,需要有健全的逻辑实现 SQL 层的下推算子 TiKV 的前置需求 ● 极高的性能要求,尽可能低延迟,而且延迟需要稳定 ● 设计分布式系统的逻辑,极其复杂 Raft ○ Multi-Raft ○ 分布式测试框架 ● 和 C 的模块大量交互 ● 开发人员和时间不足 ○ 5 人的团队,希望半年左右发布第一个可用版本 TiKV 的语言选型参考 ● Go ● C++11 ● Rust TiKV 整体架构 KV API Coprocessor Txn, Transaction MVCC Raft KV RocksDB Placement eventloop scheduler scheduler raft router coprocessor worker worker ... worker worker ... rocksdb kv-msg raft-msg co-msg Raft store Raft store ... snapshot snapshot ... snapshot snapshot ... Main0 码力 | 29 页 | 506.53 KB | 1 年前3
CeresDB Rust 生产实践 任春韶2018.10 2019.02 ~ 2020.11 2021.9 自研存储引擎 1.0.0 版本发布 查询性能优化 Prometheus 协议支持 基于 InfluxDB 单机引擎研发 分布式方案 OpenTSDB 协议 内存时序数据库 存储计算分离架构 分级存储 永久代 CeresDB 开源 2022.6 2023.3 开源版本 2023.6 1.2.2 版本发布 优化了写入性能 优化了分布式方案 CeresDB – 目标 解决时间线高基数问题 • 能高效处理好 APM 型时序数据 • 同时能高效处理好高基数时间线场景 提供原生分布式方案 • 大规模部署 • 提供高可用、高可靠的服务 • 支持水平扩容 • 支持高效的分布式查询 - Tokio Preemption - Future Cancellation0 码力 | 22 页 | 6.95 MB | 1 年前3
刘用涛 CnosDB时序数据库的Rust实践2023 CnosDB 是一款基于 Rust 开发的 开源的分布式时序数据库 1. CnosDB 架构与选型 2. 为何从 Go 切换到 Rust 3. 使用 Rust 经验分享 4. 反哺社区 1. CnosDB 架构与选型 特性 • 横/纵 向扩展 • 计算存储分离 • 平衡存储性能与成本 • 查询引擎支持矢量化查询 • 兼容多种时序协议 兼容多种时序协议 • 可观测性 • 支持云原生 • 原生支持多租户 • 租户Quota可动态配置 • 云边端协同 • 云上生态融合 整体架构 1.2 存储引擎 version_set Vnode IndexEngine DataEngine cache imcache Vnode Vnode summary process task Forward Index Inverted SQL 语句 • 扩展流处理引擎 • 扩展优化规则 • 扩展时序函数 1.5 分布式 1. Shared nothing 2. Leaderless NRW Peer to peer model 3. Leader repica group(Coming soon) 1.5 分布式 Meta Meta DN1 Meta Meta Cluster DN20 码力 | 26 页 | 3.28 MB | 1 年前3
Await-Tree Async Rust 可观测性的灵丹妙药 - 赵梓淇5k Stars • “Materialized View” • 计算:分布式流计算任务,实时增量维护 • 存储: S3 上的 Shared-storage 存储状态和数据 Await Tree 在 RisingWave 中的应用 • 技术挑战 • 计算任务需长期执行,稳定性要求高 • 算子逻辑复杂,计算与存储读写穿插,强依赖 Async • Await-Tree 的应用 • 数次帮助解决棘手的0 码力 | 37 页 | 8.60 MB | 1 年前3
Rust 程序设计语言简体中文版guess) # .expect("Failed to read line"); # println!("You guessed: {guess}"); # } 这行代码现在打印了存储用户输入的字符串。里面的 {} 是预留在特定位置的占位符:把 {} 想象成小蟹钳,可以夹住合适的值。当打印变量的值时,变量名可以写进大括号中。当打印表 达式的执行结果时,格式化字符串(format 与隐藏的另一个区别是,当再次使用 let 时,实际上创建了一个新变量,我们可以改变 值的类型,并且复用这个名字。例如,假设程序请求用户输入空格字符来说明希望在文本之间 显示多少个空格,接下来我们想将输入存储成数字(多少个空格): # fn main() { let spaces = " "; let spaces = spaces.len(); # } 第一个 spaces 变量是字符串类型,第二个 (无符号数)。这有点像在纸上书写数字:当需要考虑符号的时候,数字以加号或减号作为前 缀;然而,可以安全地假设为正数时,加号前缀通常省略。有符号数以补码形式(two’s complement representation) 存储。 每一个有符号的变体可以储存包含从 -(2ⁿ ⁻ ¹) 到 2ⁿ ⁻ ¹ - 1 在内的数字,这里 n 是变体使用的位 数。所以 i8 可以储存从 -(2⁷) 到 2⁷ - 1 在内的数字,也就是从0 码力 | 600 页 | 12.99 MB | 1 年前3
秘猿先锋-文愿-Axon 应用链框架的 Rust 开发实践Mempool(交易池) 2. Consensus (Overlord) 3. P2P (Tentacle) 4. Interoperation 5. Web3 RPC(以太坊兼容) 6. Storage (KV 数据库) 7. Executor 主要模块 • 高复杂性,组件和子系统较多,相互依赖和交互,整体结构和逻辑非常复杂,开发、 测试、调试难度大 • 可维护性,开发完成后,各个模块需要维护、升级和改进0 码力 | 32 页 | 3.63 MB | 1 年前3
共 28 条
- 1
- 2
- 3













