写点什么

Rust 跨平台客户端开发在字节跳动的实践

2019 年 8 月 03 日

Rust 跨平台客户端开发在字节跳动的实践

在 QCon 北京 2019 大会上,王枞讲师做了《Rust 跨平台客户端开发在字节跳动的实践》主题演讲,主要内容如下。


演讲简介


飞书客户端非 UI 部分由 Rust 跨平台实现,目前包括移动端和桌面端共 5 个平台:


  • 跨平台方案, 选择和考虑


  1. 跨平台方案越来越体现出优势,但因一些困难,没有得到最广泛的使用;

  2. Rust 方案如何克服这些困难;

  3. 从用户以及开发者视角,分析语言特性解决的实际问题:高性能,极小运行时,内存安全,线程安全等;

  4. 我们的选型,原因和考虑,包括跨平台实现的范围。


  • Rust 跨平台方案的实现


  1. 整体架构介绍:输入 & 输出,状态流转,同步异步调用方式,一些问题的处理,比如如何保证客户端调用不会阻塞,如何保证隔离影响;

  2. 异步模型介绍:线程池和事件循环结合,同时支持计算密集型任务和 IO 多路复用,如何处理可能的线程阻塞,线程 panic 问题;

  3. FFI 介绍:我们支持的几个跨语言调用方案,以及对比。


  • Rust 跨平台实现的一些基础能力介绍


  1. 网络方面,网络模型,做过的网络优化,如 TLS1.3、QUIC、HTTPDNS、诊断、复合连接等;

  2. 存储方面,数据库周边的基础设施;

  3. 安全方面,如何最大限度保证存储,传输的安全性。

  4. 测试方面;

  5. 日志和 Metrics。


  • Rust 生态发展迅速, 并且 Rust 可以高效利用 C/C++ 生态,举例


  1. Rust 生态本身,全平台 TLS1.3 支持(rustls);

  2. C/C++ 生态,QUIC 支持(cronet);

  3. 年轻,但发展迅速,列举我们遇到过 &修复过的问题。


  • Rust 跨平台方案周边


  1. 接入方式,支持渐进式接入,减小接入和尝试的门槛。

  2. Profiling, Debugging 相关。


讲师介绍


王枞


字节跳动 跨平台团队负责人


王枞,字节跳动效率工程团队工程师。目前聚焦跨平台高性能客户端核心组件的研发,以及团队 Rust 相关基础设施建设;关注弱网通信、存储、网络并发、并行计算、加密以及安全等领域;Rust 社区贡献者。












完整演讲 PPT 下载链接


https://qcon.infoq.cn/2019/beijing/schedule


2019 年 8 月 03 日 08:0012104

评论

发布
暂无评论
发现更多内容

项目吐槽之需求分析一

Geek_XOXO

项目管理 pmp

程序员喜欢的 5 款最佳最牛代码比较工具

程序员生活志

编程 工具

想自己写框架?不会写Java注解可不行

Java架构师迁哥

极客时间架构师训练营第一周学习总结

爱码士

课程总结

作为一名Java程序员,技术栈的广度深度都不够还想要高薪?请先把这些技术掌握再说。

Java架构之路

Java 程序员 架构 面试 编程语言

2020,国产数据库崭露峥嵘的发轫之年

墨天轮

数据库 阿里云 华为云 SQL优化 活动专区

分布式文件存储数据库 MongoDB

哈喽沃德先生

数据库 nosql mongodb mongo 非关系型数据库

勾魂!在Github白嫖左程云1470页数据结构与算法+视频

996小迁

Java 架构 面试 面试数据结构与算法

大数据上手实战!训练营“9营齐开”第二季限时免费报名啦

Apache Flink

大数据

在线EXCEL编辑器-Luckysheet

奇异石榴果

Java 开源 Excel bigtable js

1024!奈学教育致敬程序员3+2战略发布会重磅来袭

古月木易

程序员 奈学教育

MyBatis-技术专题-拦截器介绍

李浩宇/Alex

两个程序员老友的会面

Philips

敏捷开发

LeetCode题解:50. Pow(x, n),暴力法,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

「架构师训练营」第 1 周作业 - 食堂就餐卡系统设计

小黄鱼

极客大学架构师训练营

1024!奈学教育致敬程序员3+2战略发布会重磅来袭

奈学教育

1024 奈学教育

【API进阶之路】研发需求突增3倍,测试团队集体闹离职

华为云开发者社区

软件开发 开发 开发测试

不会java的人能不能读《Head First设计模式》?

Nydia

为什么说容器的崛起预示着云原生时代到来?

华为云开发者社区

容器 云原生 容器云

项目吐槽之需求分析二

Geek_XOXO

项目管理 pmp 项目实战

架构师训练营 1 期 - 第五周 - 技术选型

三板斧

极客大学架构师训练营

架构师训练营第一周作业

爱码士

架构设计

Scikit-Learn中的特征排名与递归特征消除

计算机与AI

学习 数据科学 特征选择 降维 scikit-learn

发布3个月获得5K Star的Luckysheet - 基于MIT协议的开源电子表格

奇异石榴果

Java 前端 Excel 开源项目 html/css

普通人如何站在时代风口学好AI?这是我看过最好的答案

华为云开发者社区

AI 算法

技术都是相通的

小黄鱼

极客大学架构师训练营

技术体系的构成

异想的芦苇

技术 技术管理 研发体系

网易:Flink + Iceberg 数据湖探索与实践

Apache Flink

flink 数据湖

一文带你读懂 Swift 社区最新开源的算法库

镜画者

ios swift 算法 apple

iOS性能优化 — 二、卡顿监控及处理

iOSer

性能优化 编程语言 监控 ios开发 卡顿

MyBatis-技术专题-动态SQL

李浩宇/Alex

微服务架构下如何保证事务的一致性

微服务架构下如何保证事务的一致性

Rust 跨平台客户端开发在字节跳动的实践-InfoQ