阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

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

关注

评论

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

Prompt工程师指南[从基础到进阶篇]:用于开发和优化提示,以有效地使用语言模型(LMs)进行各种应用和研究主题

汀丶人工智能

人工智能 自然语言处理 ChatGPT prompt learning

你管这破玩意叫缓存穿透?还是缓存击穿?

Java你猿哥

redis 缓存 缓存穿透 缓存击穿 缓存雪崩

Prompt learning 教学[最终篇]:Chatgpt使用场景推荐、优秀学习资料推荐、AI工具推荐

汀丶人工智能

人工智能 自然语言处理 ChatGPT 人工智能ChatGPT 吗? prompt learning

MySql 索引的失效与优化

Andy

Django笔记二十八之数据库查询优化汇总

Hunter熊

Python django 查询优化

Zabbix电话短信报警技巧

外滩运维专家

zabbix电话报警 zabbix短信报警 zabbix飞书报警 zabbix钉钉报警 zabbix微信报警

CSS小技巧之圆形虚线边框

南城FE

CSS css3 前端开发

Tensorflow.js 多分类,机器学习区分企鹅种类

北桥苏

JavaScript 深度学习 tensorflow

探索将大语言模型用作推荐系统

Baihai IDP

人工智能 推荐系统 企业号 5 月 PK 榜 大语言模型 LLMs

Orillusion引擎开源一周,荣登Github Trending榜单

Orillusion

开源 3D 渲染引擎 元宇宙 #WebGPU

从原理到实战,手把手教你在项目中使用RabbitMQ

Java你猿哥

Java ssm RabbitMQ 消息队列 RabbitMQ延时队列

Tensorflow.js 视频图片多目标检测

北桥苏

JavaScript 深度学习 tensorflow

如何使用Go语言实现LSP原则

Jack

聊一聊模板方法模式

设计模式 模板方法模式

Java Web实战 | 设计一个监听器

TiAmo

JDBC 事件监听 监听

用友BIP成功入围工信部《2022年信息技术应用创新解决方案》

用友BIP

杭钢集团:以用友iuap为数智底座的数智化转型之路

用友BIP

用 Tensorflow.js 做了一个动漫分类的功能(一)

北桥苏

JavaScript tensorflow

AI DevOps | ChatGPT 与研发效能、效率提升(中)

laofo

DevOps 研发效能 ChatGPT

KubeCon EU 2023 落幕,哪些技术趋势值得关注?

SEAL安全

云原生 KubeCON FinOps 平台工程

史上最全Java面试八股文,整整1658页!带你轻松应对各种面试题

架构师之道

Java 面试

C语言编程-程序结构

智趣匠

C语言 结构 三周年连更

ui设计软件Sketch 96.3中文激活版~ 支持m1

真大的脸盆

Mac ui设计 矢量设计

Unity3D 对接 workerman 实现联机游戏

北桥苏

php socket Gateway Unity3D workerman

workerman 自定义的协议如何解决粘包拆包

北桥苏

php Unity3D workerman GatewayWorker

Nacos必知必会:这些知识点你一定要掌握!

王中阳Go

Go 微服务 nacos 服务治理 配置管理

实力入选!赛格导航荣获“深圳知名品牌”

科技热闻

2023大厂Java面试题汇总,作为 Java 程序员必须要掌握的技术栈

采菊东篱下

java面试

Tensorflow.js 对视频 / 直播人脸检测和特征点收集

北桥苏

JavaScript tensorflow

Nautilus Chain 或成未来最好的链上隐私生态

西柚子

Java面试通关:阿里内部实战模拟面试精讲题库,竟被上传GitHub!

Java你猿哥

Java redis JVM java面试 Java基础知识点

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