BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Jan Stenberg 关注 29 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2013年10月24日. 估计阅读时间: 4 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

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

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

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT