Discord 使用单台服务器服务于 100 万在线 MidJourney 用户
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
Discord 进行了平台优化,以支持单台服务器超过100万在线用户,并保持高响应性。为了提升性能和可扩展性,对发送亿级消息通知的guild组件进行了增强。
Discord的关键技术包括Elixir语言和Erlang VM,负责消息路由和通知。Guild服务器作为管理社区业务流的核心,与多个会话进程交互,通过WebSocket向用户设备发送消息。此外,API服务使用Python编写,将消息存储于ScyllaDB。
面对不断增长的用户数量,如Midjourney社区的超百万在线用户,Discord团队优先考虑了用户体验和服务器性能。工程师Yuliy Pisetsky强调了操作速度的重要性,指出即时反应是提供良好体验的关键。
Discord工程师深入了解系统性能,监测Guild进程事件处理循环的关键指标,通过进程堆栈跟踪分析消息处理延迟问题。此外,开发了辅助库估算大对象内存使用,并实施了优化措施,缩短消息处理时间。
团队通过减少Guild进程工作量取得显著成果,如禁用被动会话通知,降低了90%的扇出工作量。引入中继进程层提高了信息传递效率,减轻了Guild进程负担。
进一步的优化包括使用内存数据库ETS实现成员列表存储与进程间安全共享,以及创建独立发送进程以提高消息发送效率。
在HN论坛中,文章作者解答了社区关于Discord性能增强细节的问题。InfoQ翻译了相关文章,未经允许禁止转载。另外,推荐了几篇今日好文。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)