在 QCon 北京 2019 大会上,王枞讲师做了《Rust 跨平台客户端开发在字节跳动的实践》主题演讲,主要内容如下。
演讲简介:
飞书客户端非 UI 部分由 Rust 跨平台实现,目前包括移动端和桌面端共 5 个平台:
跨平台方案, 选择和考虑
跨平台方案越来越体现出优势,但因一些困难,没有得到最广泛的使用;
Rust 方案如何克服这些困难;
从用户以及开发者视角,分析语言特性解决的实际问题:高性能,极小运行时,内存安全,线程安全等;
我们的选型,原因和考虑,包括跨平台实现的范围。
Rust 跨平台方案的实现
整体架构介绍:输入 & 输出,状态流转,同步异步调用方式,一些问题的处理,比如如何保证客户端调用不会阻塞,如何保证隔离影响;
异步模型介绍:线程池和事件循环结合,同时支持计算密集型任务和 IO 多路复用,如何处理可能的线程阻塞,线程 panic 问题;
FFI 介绍:我们支持的几个跨语言调用方案,以及对比。
Rust 跨平台实现的一些基础能力介绍
网络方面,网络模型,做过的网络优化,如 TLS1.3、QUIC、HTTPDNS、诊断、复合连接等;
存储方面,数据库周边的基础设施;
安全方面,如何最大限度保证存储,传输的安全性。
测试方面;
日志和 Metrics。
Rust 生态发展迅速, 并且 Rust 可以高效利用 C/C++ 生态,举例
Rust 生态本身,全平台 TLS1.3 支持(rustls);
C/C++ 生态,QUIC 支持(cronet);
年轻,但发展迅速,列举我们遇到过 &修复过的问题。
Rust 跨平台方案周边
接入方式,支持渐进式接入,减小接入和尝试的门槛。
Profiling, Debugging 相关。
讲师介绍:
王枞
字节跳动 跨平台团队负责人
王枞,字节跳动效率工程团队工程师。目前聚焦跨平台高性能客户端核心组件的研发,以及团队 Rust 相关基础设施建设;关注弱网通信、存储、网络并发、并行计算、加密以及安全等领域;Rust 社区贡献者。
完整演讲 PPT 下载链接:
https://qcon.infoq.cn/2019/beijing/schedule
评论