你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

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

评论

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

架构师训练营 - 第四周作业

一个节点

极客大学架构师训练营

LeetCode题解:144. 二叉树的前序遍历,使用栈,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

架构师训练营 - 第四周总结

一个节点

极客大学架构师训练营

MySQL-技术专题-MySQL索引面试题

李浩宇/Alex

技术创新+产业升级,区块链为白酒行业带来更多机遇

CECBC区块链专委会

区块链技术 防伪溯源

架構師訓練營第 1 期 - 第 04 周總結

Panda

架構師訓練營第 1 期

数字货币交易所定制开发,区块链交易系统搭建

135深圳3055源中瑞8032

第四周作业

alpha

极客大学架构师训练营

第四周课后练习

大大猫

极客大学架构师训练营

第三周课后练习

大大猫

极客大学架构师训练营

数字人民币真的来了 六年历程全回顾

CECBC区块链专委会

数字货币 DCEP

区块链思维是赋能未来经济的关键思维

CECBC区块链专委会

区块链 经济 技术创新

Week 4 总结

黄立

ARTS 打卡 (20.09.21-20.09.27)

小王同学

区块链挖矿系统开发,云算力矿机平台

135深圳3055源中瑞8032

大型网站架构总结

黄立

week04_系统架构

……

承兑商USDT支付系统平台,区块链支付软件开发

135深圳3055源中瑞8032

架構師訓練營第 1 期 - 第 04 周作業

Panda

架構師訓練營第 1 期

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

netspecial

极客大学架构师训练营

配置Ubuntu工作环境

Rayjun

架构师训练营 -week04-作业

大刘

极客大学架构师训练营

架构师训练营第4周作业

悠哉

浅析 Java 内存模型 二

朱华

Java JMM

第四周总结

饭桶

区块链数字钱包技术开发,数字货币钱包源码搭建

135深圳3055源中瑞8032

随记-- 一件事要不要做,值不值得做?

wyzwlj

架构师训练营第 4 周作业

netspecial

极客大学架构师训练营

CPU 执行程序的秘密,藏在了这 15 张图里

小林coding

操作系统 计算机基础 计算机 编译器、程序语言、CPU 指令

spring-boot-route(十二)整合redis做为缓存

Java旅途

Java redis Spring Boot

第四周课后练习

饭桶

云原生场景下企业API 网关选型及落地实践

云原生场景下企业API 网关选型及落地实践

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