写点什么

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:004771
用户头像

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

关注

评论

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

DBeaverUltimate 最新旗舰激活中文版 v23.2.0

胖墩儿不胖y

数据库管理 管理数据库 数据库工具

科技创新闪耀柏林 IFA,2023全球产品技术创新大奖榜单揭晓

科技热闻

SQL 查询的执行顺序

emanjusaka

MySQL 数据库 sql 后端

直播平台源码开发搭建APP的DASH协议:流媒体技术其中一环

山东布谷科技

软件开发 直播平台源码 流媒体技术 DASH 动态自适应流媒体

后端工程师求职实录:二线城市就业攻略与心得分享

王中阳Go

golang 面试题 求职 找工作 `后端

为什么企业需要私有化专属大模型

Baihai IDP

程序员 AI 大模型 生成式AI 白海科技

一文教会你连接水晶头

小齐写代码

火山引擎DataLeap数据血缘技术建设实践

字节跳动数据平台

大数据 数据治理 数据安全 数据研发 企业号9月PK榜

平台工程动态 Monthly News 2023-8

杨振涛

软件工程 研发效能 平台工程 开发者体验 内部开发者平台

小灯塔系列-中小企业数字化转型系列研究——音视频服务测评报告

向量智库

2024上海国际物联网展览会(IoT展)

AIOTE智博会

物联网展览会 物联网博览会 物联网展

Spring Boot整合Minio实现上传凭证、分片上传、秒传和断点续传

java易二三

Java 编程 程序员 Spring Boot 计算机

mac电脑系统活动监控器 iStat Menus激活中文+密钥码

胖墩儿不胖y

系统监控 Mac软件 系统监控软件

用友参编的《上市公司数字经济发展报告(2023)》正式出版

用友BIP

数字经济

今日头条极速版升级头条搜索极速版,更智能、更丰富、更极速

科技热闻

高并发系统设计之负载均衡

Java随想录

Java 并发

性能问题分析排查的实践方法

老张

方法论 性能测试

未来十年,AIGC将彻底颠覆内容生产行业

禅道项目管理

人工智能 项目管理 AIGC

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