Netflix试图通过开发者自治调和大规模API

简介:

最近在Netflix公司的技术博客网站上,该公司的工程经理Katharina Probst和Justin Becker合作撰写了一篇博客,内容是关于如何在API环境中维持开发者自治的问题。这篇发布于2016年8月23日的博客帖子题目为“工程上的权衡及Netflix API的重架构”,文中探究了在API环境中使用多种团队共享的服务时,调和开发者代码和流程所有权中所存在的难点问题。

当前微服务正在崛起,完全自包含、自维护的软件栈也正受到软件工程社区的日益重视(例如使用Docker这样基于容器的开发很受欢迎),但是这种趋势与一些用户的需求是相互矛盾的,因为这些用户希望能访问一些不同类型服务的数据,但不希望大量额外地增加自身应用的复杂度。对于围绕着代码复用和协作的工业标准最佳实践而言,它们与微服务间也有着复杂的关联性,因为它们在外部软件的微服务中建立了内部依赖。

在这篇博客帖子中,Probst和Becker写道:“……我们的工作就是去调和貌似冲突的工程原则,其中包括了速度及完全所有权与代码复用最大化及合并之间的冲突”。鉴于API本身就意味着多个服务间的通信,一个棘手的问题就是如何去维持一个团队内部所使用数据的所有权问题。如果每个微服务都具有与消费者直接通信的API,那么该微服务必须承担其所有消费者的各种请求,对请求整体的削弱就构成了一个完全独立且最大产出的服务。但是如果存在一个用做所有微服务缓存层的独立API,尽管这意味着个体服务对用户实际上如何消费自己的数据并没有多少的控制权,但是这也使得API可以涵盖所有可能的消费者请求。

Probst曾在QCon 2016纽约大会上报告称,为更好地适合很多自治应用的需求,Netflix正计划对自身API进行可能的改进。在Netflix有一个API用于提供微服务与各自API间的编排服务。在由该API承担所有独立微服务中一千多种不同设备的消费者请求的同时,也引入了单点故障问题。即该API的宕机将会影响到所有的消费者服务,而不是仅仅影响到一小组相关用户。为缓解这样的服务污染的隐患,Probst计划在未来版本的API中采用容器技术。她在QCon大会的报告中提出:“今后,当某个脚本对一大类情况都存在问题时……当某个设备或设备脚本不可用时,将不会影响到其它的设备,也不会影响到API。”通过保留单一编排API并使用容器分隔过程实现对风险的降低,Probst得以保留与所有面向消费者微服务通信的单一API,进而形成完美的共享工具和服务的平台。而对很多微服务而言,共享工具和服务是一个臭名昭著的痛点。

虽然Probst已经确定了使用容器去分隔脚本等在内的一些关键API决策,但是很明显还存在其它的一些问题,这些问题尚未给出最优的解决方案。例如该博客帖子的一个主要话题就是,是否应该具有多个编排API,这些API赋予底层服务对编排更大的控制能力;或是让已有的API包含更少的逻辑以成为更严格意义上的数据接口服务,而让大多数的逻辑围绕着消息而构建,并在将消息于逻辑自身服务组特定的逻辑层中提供给消费者之前,将该逻辑添加到数据层中。对于第一种方法,难点在于同时同步所有不同的编排,这构成了共享软件跨越多个服务分组的障碍。对于第二种方法,难点是对于非真实添加的功能,即仅是在各服务间做更大程度上的区分和更细粒度的控制,如何验证它们所导致的延迟增加。这个博客帖子最终并未给出明确的抉择,但是暗示了未来的选择取决于不同权衡间的妥协。考虑到随着通用工具、库和消费者连接性的需求增长会持续增加更多的独立自包含服务,所以可能当前并没有一种完美的解决方案。

本文转自d1net(转载)

相关文章
|
4月前
|
监控 供应链 API
速卖通商品 API,开发者示例
速卖通商品API是速卖通开放平台为开发者提供的接口,支持获取商品详情、订单管理等功能。具备多语言、多货币支持,适用于全球电商场景。可应用于商品分析、价格监控、竞品对比和库存管理等业务。文档提供Python调用示例,便于快速集成使用。
|
4月前
|
JSON 安全 API
电商API入门问答:开发者必知的10个基础问题
本文详解电商API的10个基础知识,涵盖定义、用途、认证、安全等内容,帮助开发者快速入门并提升开发效率。
142 0
|
2月前
|
NoSQL API 双11
淘宝订单 API 实战:90% 开发者会踩的 “漏单坑”,我用这 3 招彻底解决
本文深入解析了淘宝订单 API 对接中常见的“漏单”问题,结合实战案例拆解了同步逻辑、漏单原因及解决方案。重点分析了“主动轮询”与“回调通知”两种方式的优缺点,指出高频漏单的三大原因:回调丢包、时间窗口设置错误、订单状态判断不全,并提供对应的解决策略。最后分享了一套“回调 + 轮询”双保险方案,帮助彻底杜绝漏单问题。
|
4月前
|
JSON API 开发者
唯品会商品API,开发者示例
唯品会商品API支持获取商品详情、价格及库存信息,适用于开发者集成商品数据。通过如`vip.item_get`等接口,可使用Python等语言调用,实现商品信息查询与列表筛选。实际使用需申请官方授权或通过第三方平台接入,并遵守相关调用规则。
|
4月前
|
JSON 供应链 数据挖掘
VVIC(搜款网)商品 API 开发者详解与使用指南
VVIC(搜款网)是中国知名服装批发平台,提供丰富的货源和供应链服务。其商品API支持开发者通过编程获取商品数据,适用于电商集成、数据分析、选品工具等场景。本文详解API接入流程、核心接口、调用示例及常见问题解决方案,助力高效开发。
|
4月前
|
JSON 监控 API
虾皮商品 API,开发者详解与使用指南
虾皮商品API支持开发者获取商品详情及列表,适用于电商导购、价格监控、库存管理等场景。提供商品信息查询、店铺管理、数据分析等功能,助力商家优化运营策略。
|
4月前
|
安全 API 网络安全
API安全危机四伏!开发者掌握这“十八般武艺”才能破局?
在数字化时代,API作为连接应用的核心枢纽,其安全性至关重要。本文深入解析API安全攻防实战技巧,涵盖数据传输加密、身份认证、输入验证、速率限制、日志监控、API网关应用及持续安全实践等七大防御策略,帮助开发者全面掌握保护数据接口的关键技能,构筑坚实的安全防线。
|
1月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
1月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
2月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。