博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Etsy如何及为什么迁移到API优先的架构
阅读量:5862 次
发布时间:2019-06-19

本文共 1110 字,大约阅读时间需要 3 分钟。

在QCon纽约2016大会上,Etsy软件工程师Stefanie Schirmer介绍了其公司如何成功转换到API优先的架构,实现了多设备支持,解决了服务器端性能问题,被开发团队迅速采用。

\\

Etsy工程团队已经名声在外,他们设计的架构,方便了,让他们可以。因此,你可能会觉得意外,几年前,他们还在研究解决严重的性能问题。

\\

他们的目标是1000毫秒以下,因此,他们需要降低每个客户端请求的服务器处理时间。遗憾的是,单线程的PHP世界轻易不允许并发API调用,只能缓慢地顺序执行。Schirmer及其同事需要解决如何实现并发,否则,他们就会冒着永久性性能问题的风险。更为复杂的是,他们并不清楚,性能退化的根本原因是后台问题,还是客户端请求的性质。

\\

遗憾的是,开发团队不能只是致力于提高性能。除了要支持和升级Etsy.com网站外,移动应用的新特性需要从平台上增加可扩展性。这两个问题的解决方案需要API团队采用一种新的设计哲学,同时要保证它们是开发团队所熟悉且易于为他们所使用的API。

\\

Etsy使用“元端点(meta-endpoints)”创建了一个两层的API,而不是依赖于一个有一组扁平端点的API。和及的模式类似,Etsy的每个元端点都聚合了多个其他的端点。这让服务器端可以将底层的通用资源组合成设备或视图特有的资源。

\\

整个技术栈构成了一棵多层的树,如下图Schirmer的幻灯片所示。面向客户的“订制(bespoke)”主页被裁剪成了特定的视图。它使用了一个并行元端点层,后者反过来又调用了原子组件端点。只有最底层的组件(它们不是元端点)能够和数据库交互。

\\

8ac53cb5796ccb871ee69b36190be0a2.png

\\

元端点层降低了组合网站和移动应用订制视图的复杂性。不过,多个元端点单线程处理无法满足性能需求。Etsy工程师利用cURL发起并行HTTP调用,甚至是以满足需求。自定义的监控工具在请求通过框架扇出时将其调用层次可视化,让开发人员可以定位故障点。

\\

他们还创建了其他的内部工具,用于简化新API的应用。Etsy首先自动化了API客户端(它知道每个端点的具体参数)生成,然后又配上了文档,简化了开发人员的学习曲线。团队没有采用一种通用的培训方法,而是参加实验小组、代码实验室、午餐和学习研讨班,以及与有经验的开发人员结对。

\\

Schirmer认为,她讲述的故事是一个关于架构变革的案例,可以移植到其他系统。与API辅助工具和服务相关的工作有助于平台团队将新API“卖给”开发人员。为此,Schirmer及其同事一直保持着与开发团队的沟通,以确保框架在不断演化的过程中可以照顾到所有人的利益。

\\

查看英文原文

转载地址:http://mygjx.baihongyu.com/

你可能感兴趣的文章
Android 编译出错解决
查看>>
iOS--The request was denied by service delegate (SBMainWorkspace) for reason:
查看>>
spring 常用工具包
查看>>
苹果新品发布 Mac和Windows仍要继续并存
查看>>
exec 2.1
查看>>
JAVA-用HttpClient来模拟浏览器GET,POST
查看>>
安全狗云端+终端服务 将DDOS攻击拦截在“门外”
查看>>
Android 打开WIFI并快速获取WIFI的信息
查看>>
Maven小试
查看>>
用Python抓取全站中的404错误
查看>>
Spring boot 入门篇
查看>>
轻松搞定RabbitMQ(六)——主题
查看>>
Mysql事物隔离级别
查看>>
Freemarker + XML 导出Word
查看>>
The Easiest Way to Find Free Vectors, Stock Pho...
查看>>
带发光的表单
查看>>
linux设备驱动第三篇:写一个简单的字符设备驱动
查看>>
Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
查看>>
你可能不知道的10个JavaScript小技巧
查看>>
MySQL innodb_rollback_on_timeout参数对锁的影响
查看>>