Recall.ai 在 AWS 上优化 WebSocket 成本的经验
Recall.ai 最近分享了他们在 AWS 上构建和管理会议机器人平台的经验,发现使用 WebSocket 每年额外增加了 100 万美元的成本。为了解决这个问题,他们开发了一种高带宽、低延迟的进程间通信(IPC)替代方案。
背景
Recall.ai 提供了一个 API,用于在 Zoom、Google Meet 和 Microsoft Teams 等平台上构建会议机器人。该平台依赖于 AWS 部署中的实时视频处理。工程团队负责人 Elliot Levin 指出,IPC 在优化云成本时很少被优先考虑,但如果处理不当,处理大量视频数据会导致巨额费用。
问题发现
在分析机器人样本时,团队预计大部分 CPU 使用率会来自视频编码和解码。然而,他们发现最大的 CPU 消耗者实际上是 Python WebSocket 客户端(接收数据)和 Chromium 的 WebSocket 实现(发送数据)。尽管 WebSocket 在速度和便利性上表现良好,但成本高昂。
解决方案探索
为了寻找更具成本效益的传输层,Recall.ai 团队考虑了三种选择:原始 TCP/IP、Unix 域套接字和共享内存。最终,他们决定设计一种自定义传输方案,选择环形缓冲区作为高级传输结构,以减少数据在用户空间和内核空间之间的复制。
技术讨论
在 Hacker News 上,一些开发者对技术栈和视频编解码器的选择提出了质疑。用户 IX-103 指出,Chromium 已经内置了使用共享内存的零拷贝 IPC 机制 Mojo,建议使用该机制而不是自定义环形缓冲区实现。
专家观点
Momento 的生态系统工程师 Allen Helton 警告说,WebSocket 并不是最佳选择,PubSub 模式更为合适。他指出,即使在高层次抽象下,WebSocket 仍然难以处理。The Duckbill Group 的首席云经济学家 Corey Quinn 则认为,尽管大多数情况下不需要深入优化应用程序架构,但在特定情况下,如 Recall.ai 的案例中,这种优化是必要的。
结果
通过实施和部署环形缓冲区,Recall.ai 成功将机器人的 CPU 使用率降低了高达 50%,实现了 CPU 效率的优化。这一改变使他们的 AWS 年成本减少了超过 100 万美元。
结论
Recall.ai 的案例展示了在云环境中优化 IPC 的重要性,特别是在处理大量实时数据时。通过自定义传输方案,他们显著降低了成本并提高了系统效率。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。