写点什么

Recall.ai 通过消除 WebSockets 节省上百万美元的 AWS 费用

  • 2024-12-12
    北京
  • 本文字数:1237 字

    阅读完需:约 4 分钟

Recall.ai 通过消除 WebSockets 节省上百万美元的 AWS 费用

Recall.ai 最近分享了他们在 AWS 上运行一个用于构建和管理会议机器人的平台的经验,他们发现 使用 WebSockets 每年会增加 100 万美元的额外成本。该团队介绍了他们是如何通过开发一个高带宽、低延迟的进程间通信(inter-process communication,IPC)替代方案来解决这一问题的。


Recall.ai 为 Zoom、Google Meet 和 Microsoft Teams 等平台上的会议机器人提供 API,它依赖于 AWS 部署环境中的实时视频处理。Recall.ai 的工程团队负责人 Elliot Levin 这样写到:


当谈到优化云成本的时候,IPC 很少会得到人们的关注。但事实证明,如果在 AWS 上每秒以 IPC 的方式传输 1TB 的视频且处理效率不高的话,那么将会产生巨额的费用。


在对机器人样本进行分析时,研究小组最初预计大部分的 CPU 使用来自视频编码和解码。但是,他们发现最大的贡献者居然是接收数据的 Python WebSocket 客户端,其次是发送数据的 Chromium WebSocket 实现。Levin 解释说:


WebSocket 似乎很适合我们的需求。它像 Web API 一样“快”,可以很方便地在 JS 运行时中进行访问,支持二进制数据,最重要的是,它已经内置在了 Chromium 中。


为了寻找更具成本效益的传输层,Recall.ai 团队考虑了三种解决方案,即原始的 TCP/IP、Unix Domain Socket 和共享内存。尽管没有通过共享内存传输数据的标准接口,但是 TCP/IP 和 Unix Domain Socket 至少都需要在用户空间和内核空间之间复制数据,团队最终决定设计一种自定义的传输方式,以降低 AWS 的成本,并选择环形缓冲(ring buffer)作为高层级的传输结构。



图片来源:Recall.ai 博客


在 Hacker News 上,有些开发人员对技术栈和视频解码器的选择提出了质疑,用户 IX-103 这样写到:


Chromium 已经内置了使用共享内存的零拷贝 IPC 机制,叫做 Mojo。这就是各种浏览器进程之间实现相互对话的方式。它们只需要将 mojo::BigBuffer 消息传递给 custom.process 即可,无需担心平台特定代码的问题。不过我觉得,编写一个自定义的环形缓冲实现也不错。


虽然在 AWS 上 使用 WebSockets 构建实时应用程序 是一种常见的方法,但 Momento 的生态系统工程师 Allen Helton 最近提出了 警告:


你需要的并不是 WebSockets,而是 PubSub。我最近一直在试用 AppSync Events,我了解到,即使抽象到超高层,使用 WebSocket 仍然很困难。我从事实时通信工作多年,唯一能让它变得简单的方法就是将协议完全抽象掉。


Duckbill Group 首席云经济学家 Corey Quinn 评论 说,WebSockets 的重点是成本优化:


单看这个很能吸引人的标题,“WebSockets 是如何让我们在 AWS 上花费上百万美元的”,它很好地说明了在大多数情况下单纯由于成本或性能原因而深入研究应用架构的深层问题是没有太大的意义的。但是在这样的环境中,它绝对是有意义的,根据 Levin 的说法,实现和部署环形缓冲后,Recall.ai 可以将机器人的 CPU 使用率最多降低 50%,从而优化 IPC 以提高 CPU 效率。这一变化使 AWS 的年度成本降低了 100 多万美元。


原文链接:

https://www.infoq.com/news/2024/11/aws-websockets-costs/

2024-12-12 08:009832

评论

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

我看JAVA 之 Thread & ThreadLocal

awen

Java 源码 多线程

【LeetCode】猜字谜Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

Elasticsearch 相关度评分

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

元宵佳节快乐哦

Nydia

Nginx中常见header配置及修改

运维研习社

nginx Linux

LiteOS:SpinLock自旋锁及LockDep死锁检测

华为云开发者联盟

死锁 LiteOS 自旋锁 SpinLock LockDep

我看JAVA 之 基本数据类型与封装类型

awen

Java 源码 基本数据类型

产品迭代最有力的工具:每周产品讨论会

boshi

产品策略 七日更

如何探索自己的职业价值观,让工作更有动力

一笑

28天写作

万绿丛中一点红——雷斯多夫效应

Justin

心理学 交互设计 28天写作 游戏设计

无人机蜂群

冠冠

这道 Hard 到底难在哪里?大概是难在考察的全是违反“人性直觉”的内容吧 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

从萧何进入咸阳丞相府到数字化时代的决策

数列科技杨德华

28天写作

云主机配置微信公众号后台全记录

小jack

智能客服+智能助手,这波“数字员工”的业务能力太强了!

华为云开发者联盟

华为 AI 数字 智能客服 智能助手

微信公众平台-渠道二维码开发

Geek_247dae

攀爬天梯的手机厂商,能从LG的滑落中学到什么?

脑极体

收音机焊接

aaaaa

开源镜像仓库Harbor的镜像安全

运维研习社

Docker 安全 Harbor CI/CD

第五周作业:用例流程图

克比

优雅地停止Spring Boot应用

韩斌

记忆这件“小事”「Day 7」

道伟

心理学 28天写作

前端170面试题+答案学习整理(良心制作)

我是哪吒

程序员 面试 大前端 28天写作 2月春节不断更

分页问题-Offset-based Pagination和Cursor-based Pagination

诸葛小猿

分页 Offset-based Pagination Cursor-based Pagination

分布式应用监控与链路追踪:SkyWalking

xcbeyond

微服务 监控 Skywalking 调用链 28天写作

28天瞎写的第二百四十五天:怎么样开始练习冥想?

树上

冥想 28天写作 正念

翻译:《实用的 Python 编程》02_07_Objects

codists

Python

简单脚本监控SSL证书,并到期提醒续签

运维研习社

(28DW-S8-Day7) 比特币原始文献略读

mtfelix

比特币 区块链 白皮书 28天写作 工作量证明

Linux常见IO分析工具

运维研习社

写给 Go 初学者的指北

Rayjun

Go 语言

Recall.ai 通过消除 WebSockets 节省上百万美元的 AWS 费用_云计算_Renato Losio_InfoQ精选文章