Rust 异步 Runtime 的兼容层 - 施继成
Rust 异步 Runtime 的兼容层 施继成 @ DatenLord Introduce what’s rust async runtime # Rust async runtime Analyze the reason of runtime isolation # Async runtime binding # Compatible layer 1 Create a wheel0 码力 | 22 页 | 957.41 KB | 1 年前3使用硬件加速Tokio - 戴翔
第三届中国 Rust 开发者大会 使用硬件加速 Tokio 演讲人: Loong.Dai, Cathy.Lu Loong Dai • Intel 云原生工程师 • 微软 MVP • Dapr 、 Thanos 、 Golangci-lint 的 Maintainer • 现在主要专注于服务网格领域,探索云原生软硬件结 合新范式 • Github ID: daixiang0 自我介绍0 码力 | 17 页 | 1.66 MB | 1 年前3新一代分布式高性能图数据库的构建 - 沈游人
新一代图技术应用特征简介 Takeaway AtlasGraph 架构概览 存储层 副本管理 CRAQ 图原生存储 索引 LSM-Tree 容灾保障 ( BR ) 元数据层 事务管理 MVOCC 计算层 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark 连接器 Python UDF UDF 执行器 索引管理 一致性存储 RAFT 分片管理 元数据 集群管理 用户权限 GNN 应用层 Atlas 图平台 Atlas Studio Atlas Client 基础 设施 Docker/K8S/VM X86/ARM - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎 - 配合 Atlas 引擎,减少网络传输和内存压力 实际执行时,执行器等待流数据,处 理后将数据推送到下一个执行器 切分执行计划,将执行计划划分成不 同的执行阶段 内存缓存结构:加速图数据查询 • 由于图数据的查询通常是 IO 密集型,且访问的数据随机又分散,拥有内存缓存能起到很 好的加速效果 • 要想让内存缓存发挥最大的作用,就要能在有限的内存中存下尽量多的图数据 • 例如,对于属性的存储,可以通过自行序列化 / 反序列化大幅节省内存0 码力 | 38 页 | 24.68 MB | 1 年前3使用Rust与ClickHouse构建高效可靠的日志系统
• 存储(ClickHouse) 整体架构 • 协议层 • 处理层 • 计算层 • 存储层 系统实现 协议层 • 支持协议 • Loki • 写入 • Json/ProtoBuf • 查询 • LogQL • Log Queries • Metric Queries • OpenTSDB • 统计/计算 协议层 • Parser • 手写 • 为什么? • Lo 测试 • Fuzz testing 处理层 • Processor • 初始化 • 静态/动态 • 执行 • 读/写 • 结构 • prediccate • process(&self, streams: Streams) -> Streams • 类型 • 修改原始数据 • 抽取原始数据字段 • Json/LogFmt 计算层 • 大部分计算交给ClickHouse • Vector matching • 匹配两个Vector 存储层 • WAL • 移植LevelDB的 WAL • 定长的 Block • Batch 写入 ClickHouse • Flush Worker • 异步任务定时刷新 WAL • 清理策略 • Schema同步 • 转换SQL 存储层 • ClickHouse • 使用Array来保存 Labels0 码力 | 19 页 | 2.66 MB | 1 年前3王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验
⽬录时,Amphitheatre 终端软 件会识别 .devcontainer 规范,借助内置的 Syncthing 将变化的代码增量同步到 Amphitheatre 集群内,让你 可实时构建并预览到效果。 为了加速构建,集群内将直接编译并替换掉当前可执 ⾏的进程,⽽⾮全量构建镜像再发到到镜像仓库,然 后再拉取镜像替代旧的 Pod 等⼀系统慢⻓的流程。 Buildpacks How Buildpacks work 构建容器镜像及优化策略 • Dockerfile 多阶段构建,充分利⽤层(Layer)缓存加速能⼒; • 使⽤ Cargo Chef 缓存你的 Rust 项⽬的依赖项; • Github Actions Matrix 矩阵构建 amd64 / arm64 等多架构镜像; • 利⽤ Github Actions Cache Management 缓存能⼒,加速 CI 执⾏速度; • 跨多运⾏器分布式构建 Docker0 码力 | 34 页 | 10.81 MB | 1 年前3Rust在物理引擎研发中的应用 崔汉青
Motion 物理技术 Physics 规则驱动 AI生成 数据驱动 AI加速 云原生架构和 AI 能力 架构特点 性能特点 功能特点 云原生架构 单机架构 动作物理分离 跨平台确定性 动作物理统一 算力动态调配 分布式计算 物理材质统一解算 算法优化 物理材质单独解算 工程优化 性能待优化 AI仿真加速 前沿动作功能 缺乏动作功能 AI动作生成 优秀的易用性和适配性 仅支持primitives, Vec, 以及它们的组合嵌套 • 分布式物理引擎的计算和IO都很重要 • 计算线程和IO线程分离,各自绑定CPU核心 Motphys 特化网络层 自定义 pure rust message 自定义编解码协议 自动 ack 和可测量 RTT 的通信框架 一切为低延迟服务 分布式物理,突破单机算力的瓶颈 关于咪咕项目详细情况请参考:https://mp 0 码力 | 22 页 | 1.18 MB | 1 年前3简谈 Rust 与国密 TLS - 王江桐
SHA256,SM3 SM3 国密 TLS Introduction of Shangmi TLS Rust China Conf 2022 – 2023, Shanghai, China • 传输层安全性协议(Transport Layer Security,TLS)是一种密码协议,主要目的是在两个或多个通信计算机应用程 序之间提供加密,包括隐私(机密性),完整性和使用证书的真实性。TLS 协议广泛用于电子邮件、即时消息和 SSL VPN技术规范:国密 SSL 协议,参考了 TLS 1.0 规范,整个协议握手与加密流程基本 与其一致,但和 TLS 1.0 并不兼容; • GB/T 38636-2020 信息安全技术 传输层密码协议(TLCP):TLCP 协议,参考 TLS 1.2 规范,基本兼容 GM/T 0024-2014 且废弃此版本,对于密码算法进行了更新,使用更安全的密码算法; • RFC 8998:基于 RFC 支持版本以及特性 提供C-API接口方便C语言使用 ylong_tls Rust Adapt C-API (.h + so\.a) C APP Rust APP Rust纯软件实现 指令加速(X86、ARM) no_std版本 可兼容Openssl的 API Safe Rust 1. 协议版本: TLCP & TLS1.2 & TLS1.3 2. 签名算法:ECDSA、EDDSA、RSA0 码力 | 44 页 | 3.70 MB | 1 年前3Rust HTTP 协议栈在终端通信场景的实践 - 胡凯
2023, Shanghai, China HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP China Conf 2022 – 2023, Shanghai, China Rust 与终端 HTTP 通信场景结合 针对网络不稳定场景: ➢ 支持用户设置速度限制范围:给消息 body 读取逻辑增加速度的上下限,以及时根据网络变化做 出操作。 ➢ 支持用户设置连接和请求的超时时间:给请求的各个区间设置定时器,以及时检测网络变化。 Rust China Conf 2022 – 2023, Shanghai Shanghai, China Rust 与终端 HTTP 通信场景结合 功耗和性能表现: ➢ 使用 Rust 异步 IO 可以充分利用线程资源,带来稳定的性能表现。 ➢ 针对 HTTP 协议层的解析逻辑进行优化,使用状态机和可复用内存减少运行内存占用。 ➢ 管理和复用已有连接,减少连接的反复创建。 Thank you!0 码力 | 26 页 | 1.25 MB | 1 年前3Rust语言核心竞争力-庄晓立
庄振运《OS造成的长时间非典型JVM GC停顿:深度分析和 解决》 • 陶春华《Golang在BaiduFrontEnd的应用》 • 俞育才《最优化 Spark 应用的性能—使用低成本的层次 化方案加速大数据处理》 ……与其研究怎样优化GC、提高运行性能 ……不如考虑干掉GC,永绝后患 Static and dynamic dispatch trait Run { fn run(&self); gd/9aZTCo • FFI 直接调用C库,运行时零损耗 • Thread 直接使用OS本地线程,无额外管理调度损耗 • FileSystem Network等IO操作 薄薄一层封装,通常唯一对应某个系统API调用 • Closure Inline, Unboxed (No runtime allocation) 零运行时小结 • Rust语言的设计和实现十分重视运行时性能0 码力 | 51 页 | 1.09 MB | 1 年前3Hello 算法 1.1.0 Rust版
”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归: 省略所有系数。例如,循环 2? 次、5? + 1 次等,都可以简化记为 ? 次,因为 ? 前面的系数对时间复 杂度没有影响。 3. 循环嵌套时使用乘法。总操作数量等于外层循环和内层循环操作数量之积,每一层循环依然可以分别 套用第 1. 点和第 2. 点的技巧。 给定一个函数,我们可以用上述技巧来统计操作数量: fn algorithm(n: i32) { let mut a = 1; // +0(技巧0 码力 | 388 页 | 18.50 MB | 1 年前3
共 23 条
- 1
- 2
- 3