【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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

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

关注

评论

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

云渲染是什么?云渲染和自己渲染有什么区别?

Renderbus瑞云渲染农场

云渲染 渲染农场 云渲染平台

模块二 -- 朋友圈高性能复杂度分析

陈实

「架构实战营」

2022-12-16:给你一个长度为n的数组,并询问q次 每次询问区间[l,r]之间是否存在小于等于k个数的和大于等于x 每条查询返回true或者false。 1 <= n, q <= 10^5 k

福大大架构师每日一题

golang 算法 福大大

数据库原理及MySQL应用 | 数据库安全加固

TiAmo

安全 数据库· 12月月更

SQL查找是否"存在",别再count了!

风铃架构日知录

MySQL 后端 Java、 java程序员 sql

架构训练营-第10期-模块2作业

Geek_4db2d5

模块2

KING

架构实战营模块8作业

冷夫冲

架构 构架 「架构实战营」

C++开发,这些GUI库一定不要错过!

Jackpop

chatGPT的49种应用场景介绍,各开发语言接入chatGPT参考指南

非喵鱼

Java Python 前端 编程语言 ChatGPT

Vue进阶(贰零柒):Webpack 性能优化措施汇总

No Silver Bullet

性能优化 Vue webpack 12月月更

凭借这份Java面试复盘笔记,我在2022寒冬之际也斩获了多张Offer!

程序员小毕

spring 程序员 后端 架构师 java面试

Chrome浏览器竟然可以用ChatGPT了!

Jackpop

AngularJS进阶(四十二)ng-options渲染的第一项为空问题分析及解决方案

No Silver Bullet

12月月更 ng-options 页面渲染 上拉加载

一文了解 Dubbo 的代码架构

Apache Dubbo

Java 开源 源码 微服务 云原生

极客时间运维进阶训练营第八周作业

好吃不贵

多名网络主播因恶意炒作被列入警示名单,如何打击这种违规行为

石头IT视角

选取数据的原则

穿过生命散发芬芳

数据分析 12月月更

相见恨晚!Git这些功能太好用了!

Jackpop

ZBC陆续在主要CEX开启Staking,锁定市场大部分流通量成大利好

股市老人

数据权限就该这么设计!!!

风铃架构日知录

数据 优化 数据权限 rbac 数据库权限

数据权限就该这么设计!!!

小小怪下士

Java 程序员 数据权限

ZBC陆续在主要CEX开启Staking,锁定市场大部分流通量成大利好

BlockChain先知

SpringBoot整合Swagger2,再也不用维护接口文档了!

@下一站

12月日更 12月月更 springboot整合 swagger2

Python开发游戏?也太好用了吧!

Jackpop

实战整了一个后台服务,真香!

风铃架构日知录

多线程 线程池 网络 HTTP CGI

ZBC陆续在主要CEX开启Staking,锁定市场大部分流通量成大利好

EOSdreamer111

2022中国产业数字化发展成熟度区域指数分析——充分利用特长,形成区域比较优势,夯实中国式现代化建设基础

易观分析

数字化 产业

专利进阶(一):软件专利工程师浅谈如何针对计算机软件类专利申请进行技术挖掘

No Silver Bullet

专利 12月月更 软件专利工程师 技术挖掘

ZBC陆续在主要CEX开启Staking成近期利好,锁定市场大部分流通量

西柚子

2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选

科技热闻

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