Graph + AI 中国峰会火热报名中,点击探索图分析更多可能! 了解详情
写点什么

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

评论

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

别在网上乱找代码了,找了一段代码突然爆了!!!

导导

Java

敏捷教练和Scrum Master - 敏捷转型中的两个重要角色的对比

Bob Jiang

Scrum 敏捷教练 ScrumMaster

新生必备清单:不想成为虚度青春的“小透明”,手机应该怎样选?

脑极体

今天你内卷了吗?

池建强

个人成长 内卷化

F5G+X:给5G一个伙伴,给千行百业一个拥抱

脑极体

谈谈敏捷中的那些模式

Bob Jiang

敏捷 敏捷开发 敏捷教练

什么是算法的大O表示法

码农神说

算法 时间复杂度 Java算法 大O

金融行业区块链技术应用有了“安全符”

CECBC区块链专委会

格一格你的情欲念

王进行

搭乘政策红利“快车” 欧科云链助力区块链人才培养

CECBC区块链专委会

刘华:事实证明,假敏捷都比瀑布优秀

刘华Kenneth

DevOps 敏捷 软件开发

这16道Redis最常见面试问题,你能回答上来几个?

火羊哥

Java

【面试必问】Spring中的事务管理详解

只喝纯牛奶

架构师训练营第九周作业

张明森

dubbo-go 中使用 sentinel

apache/dubbo-go

Go dubbo sentinel

JVM详解之:类的加载链接和初始化

程序那些事

Java JVM GC 加载

架构师训练营第九周学习总结

张明森

RRedis系列(八):缓存到底该如何做到高可用?

z小赵

redis 分布式系统 高并发系统设计

Dockerfile你值得拥有

北漂码农有话说

Docker

Scrum Master是否需要懂技术

Bob Jiang

敏捷 敏捷开发 敏捷教练 ScrumMaster

LeetCode题解:70. 爬楼梯,递归+哈希表,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

“PlusToken”跨国网络传销案告破,涉案400亿元!

CECBC区块链专委会

nginx配置文件

张明森

30岁的二三事

大唐小生

总结 个人感悟

来了来了!Docker安装及运行原理

程序员的时光

Java Docker 微服务

小伙伴想写个 IDEA 插件么?这些 API 了解一下!

程序员小航

IDEA idea插件 教程 API IntelliJ IDEA

微碳系:我心中的宇宙

Geek_116789

无意中参加了infoQ的一期活动,获得了所有奖项,哈哈哈。。。

诸葛小猿

InfoQ 奖品

Docker 网络

北漂码农有话说

Docker

最牛逼的Java框架,没有之一

我是苞谷

JVM参数手册

Rayjun

JVM GC

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