写点什么

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:0011445

评论

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

如何高效开会?

石云升

高效工作 时间管理 高效 开会

面向对象设计原则

陈皮

T4P

xujiangniao

一款开源的Diffy自动化对比测试框架:超详细实战讲解

狂师

测试 测试驱动开发实战营 自动化测试 开源项目

架构师训练营-第二周-作业1

狂奔嘀兔纸

极客大学架构师训练营

Redis系列之扫盲篇(一)

z小赵

Java 分布式 高并发系统设计

0616作业2

Geek_10

【架构师训练营】第2周总结

花生无翼

极客大学架构师训练营

架构师训练营作业 --Week2

吴炳华

极客大学架构师训练营

【架构师第二周】总结

浪浪

第二周作业

大雄

依赖倒置

学习一下:我的学习之道

非著名程序员

学习 程序人生 提升认知 程序员成长

Libra教程之:Libra testnet使用指南

程序那些事

比特币 区块链 以太坊 libra blockchain

「架构师训练营」第 2周作业

旭东(Frank)

架构 极客大学架构师训练营

[Redis源码阅读]redis持久化

老胡爱分享

数据库 redis 缓存 持久化

依赖倒置原则理解

Thrine

听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理

小林coding

面试 计算机网络 计算机基础

Libra教程之:来了,你最爱的Move语言

程序那些事

比特币 区块链 以太坊 libra blockchain

BAT面试题汇总:分布式+Dubbo +JVM+微服务+多线程+Spring附答案(建议收藏)

程序员生活志

Java spring 面试 分布式 mybatis

基于 Docker 实现 MySQL 主从复制

ytao

MySQL Dockerfile

程序员开发色情游戏,赴日寻找AV女优真人拍摄,结果...

程序员生活志

程序员 游戏开发

第二周总结

changtai

小师妹学JVM之:深入理解JIT和编译优化-你看不懂系列

程序那些事

Java JVM 「Java 25周年」 小师妹 JIT

Libra教程之:运行自定义move modules

程序那些事

比特币 区块链 以太坊 libra blockchain

为什么 Vue 更符合这个时代的大势所趋

Geek_Willie

Vue SpreadJS

架构师训练营」第 2 周作业

edd

架构 极客大学架构师训练营

Spring源码-自定义标签

云淡风轻

xml spring

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

小傅哥

设计模式 小傅哥 重构 代码优化

架构师训练营 第二周 总结

Poplar

2020年6月17日 MySQL基准测试

瑞克与莫迪

架构师训练营第二周总结:软件开发简史和框架设计的方法

hifly

设计模式 极客大学架构师训练营

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