【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Discord 团队使用 Rust 实现 Elixir 的性能扩展

  • 2019-07-08
  • 本文字数:867 字

    阅读完需:约 3 分钟

Discord团队使用Rust实现Elixir的性能扩展

Discord 团队在 BEAM 虚拟机上处理大型数据结构时,性能上遇到了天花板。于是他们实现了Elixir的Rust接口,支持系统扩展到1100万并发用户


作为一家多系统 VoIP 应用平台的开发商,Discord的独到技术是在Erlang虚拟机上使用Elixir,系统支持 500 万并发用户,同时可扩展到 1100 万并发用户,实现每秒处理百万级事件。团队近期致力于大型数据结构处理的优化。处理此类数据结构需要更高的性能,当前 Elixir 和 BEAM 难以支持。


尽管 BEAM 虚拟机的速度很快,并且每天都在改进,但是它通常尽可能使用持久数据结构。对于大型列表数据结构的更新,其性能难以满足我们的需求。


具体而言,Discord 的工程师需要一种支持大规模并发互斥(mutation)的有序数据结构,并能够返回受影响的索引列表。他们着手分析 Elixir 中是否提供可满足上述需求的数据结构,包括 MapSet、List 和 Ordset 等。但是现有的数据结构并不适合,尤其是考虑到最坏情况下需处理 25 万条以上的条目。对现有第三方软件包的研究,结果同样令人失望。


由此,Discord 的工程师另辟蹊径,尝试使用 NIF(Native Implemented Function)技术达成目标。NIF 是一种在 BEAM 虚拟机中支持像使用 Elixir 或 Erlang 内建函数一样使用原生代码的机制。Rust 不仅具有“零代价抽象”方法,而且提供强安全保证,是支持构建 NIF 的不二选择,可确保最小化由于 BEAM 虚拟机内存泄漏而导致崩溃的情况。此外,Rust 生态系统已经提供了一些开源软件库,简化了使用 Rust 和Rustler编写 BEAM NIF。Rustler 提供了生成接口代码模板(boilerplate)、编解码和错误管理的机制。


简而言之,Discord 的工程师在经过数轮迭代开发后,用Rust编码实现了SortedSet。该数据结构可实现性能 6.5 倍的提升,在最坏情况下可达到 160 倍的性能提升。新的 SortedSet 已成为构建所有 Discord 用户组(guild)的基础。


Discord 团队的项目展示了 Rust 与 BEAM 虚拟机的高效集成能力。项目继续使用 Elixir 等高级函数式语言,不仅提高了系统性能和安全,而且实现了可靠的大规模数据结构。


原文链接:


Scaling Up Elixir Using Rust at Discord


2019-07-08 08:004541
用户头像

发布了 391 篇内容, 共 126.9 次阅读, 收获喜欢 255 次。

关注

评论

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

八种十倍提升API性能的方式

树上有只程序猿

数据库 服务器 API 接口

虚拟云桌面在实验教学中的应用与实践

青椒云云电脑

桌面云 云桌面

云桌面GPU技术方案

青椒云云电脑

图形工作站

低代码平台:程序员的应用开发好帮手

高端章鱼哥

低代码 应用开发 企业级应用 JNPF

祝贺!Databend Cloud 入驻 AWS 云市场

Databend

无障碍测试解读

QE_LAB

无障碍 测试技术干货 测试技术

影响云桌面性能的三个重要因素是什么?

青椒云云电脑

云桌面

如何实现虚拟云桌面?

青椒云云电脑

桌面云 云桌面

腾讯云TDSQL- C Serverless 2.0版发布,多项核心技术首次公开解析

Geek_2d6073

业务喜报丨九科信息成功签约四川中烟工业有限责任公司成都卷烟厂RPA项目

九科Ninetech

RPA RPAxAI

云桌面在教学中的应用

青椒云云电脑

云桌面

使用云电脑9条注意事项

青椒云云电脑

云电脑

五点告诉我们云教室比传统机房好

青椒云云电脑

云教室

云桌面应用下的数据防护新思路

青椒云云电脑

云桌面

为什么要使用虚拟云桌面?

青椒云云电脑

云桌面 青椒云云桌面

企业选择云桌面系统的主要原因是什么?

青椒云云电脑

云桌面

低代码是程序员“玩”出来的

这我可不懂

低代码 应用开发 造轮子

私有化部署即时通讯平台,完美替代飞书和钉钉的SaaS系统

WorkPlus

不同构架云桌面的部署风险

青椒云云电脑

云桌面

作业

大肚皮狒狒

WorkPlus打造统一用户管理平台,实现企业用户管理的一体化

WorkPlus

WorkPlus Meet白板和文档共享功能上线,私有化视频会议全新升级

WorkPlus

WorkPlus——高效私有化办公平台,实现即时协作与信息安全的完美结合

WorkPlus

虚拟云桌面和共享云桌面有啥区别

青椒云云电脑

云桌面

云桌面系统的运用优势有哪些?

青椒云云电脑

云桌面

高性能存储 SIG 月度动态:erofs 新增支持多个重要特性,持续构建容器场景竞争力

OpenAnolis小助手

开源 容器 高性能存储 龙蜥社区 sig

云桌面跟PC相比能有哪些不一样的体验?

青椒云云电脑

桌面云 云桌面

什么是云电脑?

青椒云云电脑

云电脑

【效率提升】手把手教你如何使用免费的 Amazon Code Whisperer 提升开发效率堪比 GitHub Copilot 平替

亚马逊云科技 (Amazon Web Services)

不同构架云桌面的部署风险

青椒云云电脑

云桌面 青椒云云桌面

LeetCode题解:7. 整数反转,迭代,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

Discord团队使用Rust实现Elixir的性能扩展_语言 & 开发_Sergio De Simone_InfoQ精选文章