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

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

关注

评论

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

如何扩展及优化CI/CD流水线?

SEAL安全

CI/CD 优化 扩展

行业分析| 无人机电力巡检的应用

anyRTC开发者

人工智能 音视频 无人机 快对讲 视频监控

为什么很多互联网公司很少做单元测试?

博文视点Broadview

沈阳等级保护测评机构有哪些?有几家?在哪里?

行云管家

等保 等级保护 等保测评 沈阳

DataLeap的全链路智能监控报警实践(二):概念介绍

字节跳动数据平台

OpenCV开箱即用的功能

互联网工科生

OpenCV C++

怎样确保舞台LED显示屏的安全

Dylan

安全性 环境 维护 LED显示屏 户内led显示屏

精选8道ES高频面试题和答案,后悔没早点看。

王中阳Go

elasticsearch 面试题 go面试题 后端面试题 ES面试题

Hive执行计划之只有map阶段SQL性能分析和解读

不在线第一只蜗牛

sql 开发语言 开发框架

Java并行流指北

javalover123

并行 Java' 并行流

费报只是小 case!电子影像系统,工作效率up无限

风来兮

管理 技术管理 电子档案 财务 数字化工具

基于 LRU-K 模型如何实现高效的元数据缓存?

焱融科技

#高性能 #文件存储 #分布式存储

百度召开CVPR首个大模型研讨会,吸引超1000支队伍参与文心大模型国际比赛

新消费日报

《生死狙击》研发商无端科技使用RDS倚天ARM架构数据库,实现增效降本

阿里云瑶池数据库

RDS 阿里云瑶池数据库

表单设计领域天花板,表单引擎最全设计

codebee

历史首次!阿里云与浙大斩获数据库顶会SIGMOD最佳论文,成果已在PolarDB中落地

阿里云瑶池数据库

阿里云 polarDB 瑶池数据库 SIGMOD

千万级规模微服务稳定性技术揭秘:隔离策略

HelloGeek

微服务 高并发 稳定性 隔离性

语音厅源码实用功能屏幕的转换

山东布谷科技

软件开发 源码搭建 语音源码 语音厅平台搭建

Go 语言中 database/sql 是如何设计的

江湖十年

数据库 后端 Go 语言 数据库操作

对线面试官-Redis(作为缓存的一致性问题)

派大星

Java 面试题

在 BI 工具 Tableau 中使用 databend

Databend

堡垒机的作用以及价格简单说明-行云管家

行云管家

网络安全 堡垒机 IT运维

基于smardaten无代码快速开发一个智慧城管系统

陈橘又青

无代码开发

C语言实现单链表-增删改查

DS小龙哥

6 月 优质更文活动

干掉Navicat?阿里Chat2DB来了!

王磊

Java 数据库

量子程序设计基础 | 量子程序与量子编程

TiAmo

量子计算 量子编程 6 月 优质更文活动

Java又双叒叕“凉”了?

程序员小毕

Java spring 面试 springboot SpringCloud

专场来袭,深度解读阿里云视频云的全智能进化

阿里云CloudImagine

云计算 阿里云 视频云

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