10 月,开发者不可错过的开源大数据大会-2021 WeDataSphere 社区大会深圳站 了解详情
写点什么

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

评论

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

ARTS WEEK5

紫枫

ARTS 打卡计划

负载均衡方式

羽球

负载均衡

程序的机器级表示-程序的编码

引花眠

计算机基础

设计模式(1)—什么是设计模式?设计模式的六大原则是什么?

爱嘤嘤嘤斯坦

Java 程序员 编程语言 设计模式 23种设计模式

观智能化浪潮如何改变产业链创新

CECBC区块链专委会

低代码与无代码

lidaobing

低代码 无代码开发

MySQL实战45讲总结

`

MySQL

每周学习总结 - 架构师培训 6期

Damon

极客时间 - 架构师培训 - 6 期作业

Damon

每周学习总结 - 架构师培训 5 期

Damon

进程、线程基础知识全家桶,30 张图一套带走

小林coding

Linux 操作系统 计算机基础 进程 进程线程区别

分布式系统设计理念这么难学?

架构师修行之路

架构 分布式

智慧4S店解决方案发布,看英特尔如何引领汽车销售行业变革

最新动态

【计算机网络】如何实现可靠数据传输?

烫烫烫个喵啊

昆明市成立两大“高端”中心,区块链赋能生物医药和高原特色农业

CECBC区块链专委会

数据驱动 vs 关键字驱动:对UI自动化测试框架搭建的探索

Winfield

DevOps 敏捷 自动化测试

一致性hash算法及标准差验证

Damon

ARTS-WEEK6

一周思进

ARTS 打卡计划

ARTS打卡 - Week 07

teoking

ARTS打卡-06

Geek_yansheng25

ARTS打卡 第7周

引花眠

ARTS 打卡计划

抽象工厂模式

Leetao

Python 面试 设计模式

看动画学算法之:排序-插入排序

程序那些事

Java 数据结构 算法 插入排序

【计算机网络】为什么要三次握手四次挥手?

烫烫烫个喵啊

TCP 计算机网络

简述CAP理论

lei Shi

redis系列之——高可用(主从、哨兵、集群)

诸葛小猿

redis redis集群 redis哨兵 redis主从

Mysql插入百万条数据

Java小咖秀

MySQL 运维 数据

编程核心能力之抽象

顿晓

抽象 编程日课

Go:Stringer命令,通过代码生成提高效率

陈思敏捷

Go stringer

Cache解决算法 Charles断点调试breakpoint John 易筋 ARTS 打卡 Week 08

John(易筋)

ARTS 打卡计划

SpringBoot 入门:03 - 统一请求返回

封不羁

Java spring springboot

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