写点什么

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

  • 2016-09-13
  • 本文字数:1557 字

    阅读完需:约 5 分钟

最近在 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 包含更少的逻辑以成为更严格意义上的数据接口服务,而让大多数的逻辑围绕着消息而构建,并在将消息于逻辑自身服务组特定的逻辑层中提供给消费者之前,将该逻辑添加到数据层中。对于第一种方法,难点在于同时同步所有不同的编排,这构成了共享软件跨越多个服务分组的障碍。对于第二种方法,难点是对于非真实添加的功能,即仅是在各服务间做更大程度上的区分和更细粒度的控制,如何验证它们所导致的延迟增加。这个博客帖子最终并未给出明确的抉择,但是暗示了未来的选择取决于不同权衡间的妥协。考虑到随着通用工具、库和消费者连接性的需求增长会持续增加更多的独立自包含服务,所以可能当前并没有一种完美的解决方案。

查看英文原文: Netflix Attempts to Reconcile Large Scale APIs with Developer Autonomy


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-09-13 19:002007
用户头像

发布了 227 篇内容, 共 83.2 次阅读, 收获喜欢 28 次。

关注

评论

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

中软协AI沙龙热议:智领云CEO彭锋解读AI大模型技术的应用前景与趋势

智领云科技

容器 AI大模型 大模型 中软协

ChatGPT全方位解析:如何培养 AI 智能对话技能?

测试人

软件测试

🔥🔥🔥最好用的SDK版本管理器(version-manager)

Geek_5bcc45

Java Go node.js Py Version

NineData云原生智能数据管理平台新功能发布|2024年3月版

NineData

NineData 研发流程 数据库DevOps 企业级数据库 敏感数据管理

Advanced RAG 01:讨论未经优化的 RAG 系统存在的问题与挑战

Baihai IDP

AI LLM 企业号 4 月 PK 榜 rag 检索增强生成

适合新锐机构的教务管理系统——“校猩猩”正式上线

科技热闻

Flink 流批一体在模型特征场景的使用

Apache Flink

大数据 flink 流批一体

什么是智慧厕所?如何打造智慧厕所?

光明源智慧厕所

智慧厕所 智慧公厕

面试官:Session和JWT有什么区别?

王磊

Java 面试题

IT外包行业未来发展趋势

Ogcloud

IT外包 IT外包公司 IT外包服务 IT外包企业 IT驻场外包

Penpad Season 2 质押突破350ETH,参与可获Scroll生态空投

西柚子

Linux中的conntrack命令深入解析

GousterCloud

Linux 运维

你真的会写侧边栏收起动画吗?

前夕

CSS css3 前端

深入探索:主流低代码开发平台的应用场景及开发流程

优秀

低代码开发平台 低代码平台 低代码平台应用场景

美股上市辅导合伙人苏凌丘调研万达影业 欲打造VR眼镜沉浸式影院平台

科技热闻

嘉为蓝鲸DevOps研发效能管理平台V6.0重磅发布!

嘉为蓝鲸

DevOps 研发管理 研发效能 价值流

视频创作者必备应用!三步帮你解决前置内容条件,打造专属大片!

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 AI应用 飞桨星河社区

【FAQ】HarmonyOS SDK 闭源开放能力 —Asset Store Kit

HarmonyOS SDK

HarmonyOS

4款免费可用的数据集成平台亮点

谷云科技RestCloud

ETL 数据集成平台

度安讲 | 首期「数据安全与隐私保护合规」技术沙龙顺利召开

百度安全

OpenMLDB vs Redis 内存占用量测试报告

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

当设计遇见技术—低代码开发平台设计探索

inBuilder低代码平台

设计 交互式设计

【论文速读】| MASTERKEY:大语言模型聊天机器人的自动化越狱

云起无垠

新兴势力展露头角? ERC-1111 协议能否开启下一个热潮

NFT Research

NFT NFT\

Postman 请求参数传递技巧:详解 Query、Path 和 Body 的用法

Liam

Java 后端 Postman 开发工具 API

行云绽放签约湾区协同创新计划,共创数字新篇章

行云管家

云计算 数字化 湾区

开源流量回放平台 AREX 在携程的大规模落地实践

AREX 中文社区

Java 开源 测试 流量回放

2024-04-03:用go语言,在一个小城市里,有 m 个房子排成一排, 你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n ), 有的房子去年夏天已经涂过颜色了,所以这些房子不可以被重新

福大大架构师每日一题

福大大架构师每日一题

我后悔了,智慧公厕来了

光明源智慧厕所

智慧厕所 智慧公厕

一定要避坑:关于微信H5分享,温馨提示你不要再踩坑了!!!

Immerse

Vue 分享 H5

Netflix试图通过开发者自治调和大规模API_语言 & 开发_Margot Krouwer_InfoQ精选文章