UDN-企业互联网技术人气社区

板块导航

浏览  : 1292
回复  : 0

[其它] Twitter开源DistributedLog,对比Kafka和雅虎Pulsar

[复制链接]
瞌睡虫的头像 楼主
发表于 2016-11-2 09:29:21 | 显示全部楼层 |阅读模式
  在QCon纽约2016大会上,Etsy软件工程师Stefanie Schirmer介绍了其公司如何成功转换到API优先的架构,实现了多设备支持,解决了服务器端性能问题,并被开发团队迅速采用。

  Etsy工程团队已经名声在外,他们设计的架构针对变更进行了优化,方便了持续试验,让他们可以每天部署50次。因此,你可能会觉得意外,几年前,他们还在研究解决严重的性能问题。

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

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

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

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

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

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

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

  点击阅读原文,查看完整演讲稿。

文章来源:聊聊架构

文章译者:谢丽



相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部