2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

GOTO Berlin: 使用自己的公共 API 的问题

  • 2013-10-23
  • 本文字数:1268 字

    阅读完需:约 4 分钟

Soundcloud 的工程总监 Phil Calcado 在最近的 GOTO Berlin 大会上分享自己管理和构建大型 Rails 应用程序的经验时提到:使用自己的公共 API 可能是一种挑战。

Soundcloud 发展非常迅速,在他的演讲中 Phil 着重介绍了他们在创建一个新的网站时(已于 1 年前发布)所遇到的一些问题。

Soundcloud 开始是一个 Ruby on Rails 应用程序,6 年间它不断的扩展变得非常混乱。很多问题归咎于基础设施,一个使用 MySQL Memcached 的大型 Rails程序

2010 年他们开始考虑一个新的平台。其中的一个想法来源于 Twitter,在他们发布自己重新设计的架构的时候,该架构让Soundcloud 团队确信他们要构建一个相似的应用程序;一个单独的页面JavaScript 应用程序,使用一个公共的API 与后端通信。最终他们开始构建一个新的网站,很多JavaScript 技能娴熟但是缺少一些后端经验的前端开发者基于现在的公共API 用了6、7 个月的时间构建了一个新的Web 网站。

他们最后构建了一个非常稳定的应用程序,但是在即将发布之前他们与Twitter 进行了一次谈话,并且提到他们要发布一个新的网站,新网站受到了新的Twitter 架构的启发,使用了和Twitter 完全相同的想法。对于这个问题来自于Twitter 的人员回答说,他们已经发现新的设计并不是一个好想法。实际上,之后Twitter 已经决定将大部分实现退回到服务器端渲染。

Twitter 人员的回答将团队放到了一个非常有趣的位置,这是一个重要的集成,因此他们应该怎么做,继续还是取消?最后他们决定继续。因为了解 Rails,所以他们确信第一件要出问题的事情会是 Rails,所以他们预分配了很多节点。但是在新设计中一个页面的请求从 3 增长到了超过 100,第一件出问题的事情是他们的高可用性代理。在解决了这个问题之后,memcached 又出问题了,之后是 Rails 和 MySQL。他们现在认识到他们的基础架构有问题。

他们很早就意识到的一个问题是不能重写整个应用。要保留 Rails,因此他们需要一个快速 API,一个能够尽快处理大量请求的 API。他们将大型 Rails 应用程序分割成了更小的部分,并且引入了服务的思想。但是有一个惊喜是,他们依然拥有同样的整体性能,只是从数据库转移到 HTTP 上有性能瓶颈。结论便是他们需要更加快速的 Rails。

仔细看看代码他们发现了很多并发的空间。Rails 不喜欢并行或者并发,因此他们尽量使用 Finagle 这样的工具保持同步并设法获得并行和并发性。他们大大降低了负载,并且让结果的返回更加快速。

他们现在能够更快地服务请求。但是每一个页面依然会产生很多请求,为了查找减少请求数量的方法,他们决定尽力实现一个自定义 API,通过一个请求返回几个页面的数据。为了实现这个目的,他们最终使用了三个专用的 API,分别用于移动、桌面和合作伙伴。

他们现在面对的最有趣的设计挑战是如何建模它们的 API。目前开发者喜欢将一个更加粗粒度的 API 用于移动,将一个更加有体验的 API 用于桌面,目前有两个分离的后端。

2013 年的 GOTO Berlin 大会是 GOTO 大会首次在 Berlin 举行,本次大会有超过 400 位参会者和大约 80 位讲师。

查看英文原文: GOTO Berlin: Problems Using Your Own Public API

2013-10-23 09:043293
用户头像

发布了 321 篇内容, 共 132.9 次阅读, 收获喜欢 19 次。

关注

评论

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

进入手机 App 的速度怎么越来越拖?

Speedoooo

APP开发 小程序容器 开发效率 开发方式 App加载速度

AI 技术在英语学习中的主要应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

鸿蒙互动化实战:Game Service Kit重塑文档学习体验

huafushutong

HarmonyOS NEXT

IDM使用教程之如何下载网页中的视频资源,电脑网页上的视频怎么保存到本地

阿拉灯神丁

视频下载器 内容嗅探 IDM 网页视频下载工具 如何下载网页视频

MyEMS开源能源管理系统核心代码解读003(上)

开源能源管理系统

开源 代码 能源管理

MyEMS助力企业轻松实现ISO 50006标准

开源能源管理系统

开源 代码 能源管理

编程简单了,部署依旧很难|Karpathy 演讲的 5 点解读

阿里巴巴云原生

阿里云 云原生

MyEMS开源能源管理系统核心代码解读003(下)

开源能源管理系统

开源 代码 能源管理

火山引擎向量数据库 Milvus 版正式开放

火山引擎开发者社区

火山引擎

语音生成+情感复刻,Cosyvoice2.0 极简云端部署

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

通义灵码用户说 | 编程智能体+MCP加持,秒查附近蜜雪冰城

阿里云云效

通义灵码 Qwen

鸿蒙健康守护实战:Health Service Kit实现智能文档工作监护

huafushutong

HarmonyOS SDK应用服务

开源鸿蒙年中技术会议在东莞盛大召开,生态繁荣与技术突破共绘新蓝图

最新动态

CST热仿真CHT求解器--针式散热片+风扇

思茂信息

仿真 CST Studio Suite 热仿真

限时揭秘!丰富采购经验力荐的堡垒机企业-行云管家!

行云管家

网络安全 堡垒机

06月24日刚出的社招岗位大家快投吧!

Y11

面试 找工作 大厂

通义灵码用户说 | 编程智能体+MCP加持,秒查附近蜜雪冰城

阿里巴巴云原生

通义灵码

字节跳动开源了一款 Deep Research 项目

火山引擎开发者社区

火山引擎

vRDMA 发布,助力云上 VPC 内高性能通信

火山引擎开发者社区

火山引擎

鸿蒙商业化实战:IAP Kit构建安全文档付费体系

huafushutong

HarmonyOS SDK应用服务

枫清科技受邀参加2025数据智能大会

Fabarta

人工智能 科技 数据智能大会

鸿蒙地理可视化实战:Map Kit实现智能文档位置洞察

huafushutong

HarmonyOS SDK应用服务

泉州等保测评机构电话是多少?在哪里?

行云管家

等保 等级保护 等保测评

FORCE 开发者论坛 | 火山引擎发布多款 Agent 开发工具

火山引擎开发者社区

火山引擎

启信宝联合六大数交所共同编制,《企业数据治理实践白皮书》发布

合合技术团队

人工智能 算法 大数据‘’

鸿蒙实时协同实战:Live View Kit打造沉浸式文档批注系统

huafushutong

HarmonyOS SDK应用服务

鸿蒙地理围栏实战:Location Kit实现智能文档地理围栏

huafushutong

HarmonyOS SDK应用服务

App开发成本高居不下,如何“降本”突围?

Speedoooo

灰度发布 APP开发 热更新 小程序容器

域名 SSL证书和IP SSL证书有什么区别?

防火墙后吃泡面

ManageEngine卓豪简化变更管理的工作方法(三)

ServiceDesk_Plus

变更管理

鸿蒙智能文档治理实战:File Manager Service Kit实现企业级文件管理

huafushutong

HarmonyOS SDK应用服务

GOTO Berlin:使用自己的公共API的问题_SOA_Jan Stenberg_InfoQ精选文章