Netflix 的 API 架构演变历程

6881040e393cf61a06e5091540e47106.png

Netflix 以其松耦合和高度可扩展的微服务架构而闻名,Netflix API 的后端架构经历了 4 个主要阶段。

 𝐌𝐨𝐧𝐨𝐥𝐢𝐭𝐡 

4d5272a2255c07dce61ea9e39cdbd337.png

𝐌𝐨𝐧𝐨𝐥𝐢𝐭𝐡 单体架构,各种各样的服务融合在一起,向外提供服务,大多数创业公司都是这么做的。

 𝐃𝐢𝐫𝐞𝐜𝐭 𝐚𝐜𝐜𝐞𝐬𝐬 

c0bb4a7571b8fb54170eaad0455509f0.png

在这个架构中,客户端程序可以直接向不同的微服务发出请求。但是随着业务的发展,Netflix 拥有成百上千个微服务 ,加上服务与服务之间的相互调用,整个架构变得混乱和复杂。

 𝐆𝐚𝐭𝐞𝐰𝐚𝐲 𝐚𝐠𝐠𝐫𝐞𝐠𝐚𝐭𝐢𝐨𝐧 𝐥𝐚𝐲𝐞𝐫 

50be9f9b3d3d5636a368c936b8bfce23.png

Netflix 开始引入网关聚合层,客户端应用展示的页面内容是很丰富的,想象一下,一个电影的页面,需要获取电影信息,制作人信息,以及演员信息,前端显示至少需要调用三个不同的 API。而使用网关来聚合不同后端服务的数据,只需要进行一次调用即可。

 𝐅𝐞𝐝𝐞𝐫𝐚𝐭𝐞𝐝 𝐠𝐚𝐭𝐞𝐰𝐚𝐲 

随着业务规模不断扩大,微服务越来越多,维护 API 聚合层变得越来越困难,另外一个问题是,不同后端服务的数据聚合逻辑不能够复用。

于是,Netflix 引入了灵活的联合架构 GraphQL Federation,它有三个主要组件。

  • • DGS:全称是 Domain Graph Service,一个独立的 GraphQL 服务,开发人员在 DGS 中定义 Schema,每个 DGS 服务由各个后端 API 团队自己管理,可以选择把现有的微服务对接到 DGS,或者直接转换成 DGS 服务。

  • • Schema Registry:一个有状态的组件,保存每个 DGS 的全部的 Schema,并进行组合提供给网关。

  • • GraphQL Gateway:主要负责为客户端提供 GraphQL 查询服务,把大的查询分解成更小的子查询,然后转发到对应的下游 DGS 服务,最后通过网关返回数据给客户端。

f69094bc6a71bd91f438c047abdcbeda.png

最终的架构图如下:

76c8378ab97390520bd02ab3395adf1f.png

  译:等天黑

 作者:Alex Xu   

 希望对您有用!

ff46c6dc3f1e862187529e362fecbfb1.png

2fdd766d6e621e2378f5cb646dc87718.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五、Web App 基础可视组件属性(IVX 快速开发教程)

五、基础可视组件属性 在 iVX 中各个组件存在不同的属性,这些属性用于设置显示的样式或者是自身具备的特征等,通过更改这些属性可以极大的方便我们进行项目的创作。 大多数组件都拥有相同的属性,相同属性在以下内容中不会赘述介绍&#xff…

【专升本计算机】甘肃省专升本考试计算机热点考点(填空题115道)

甘肃专升本考试计算机填空题热点考点 1 、自计算机问世至今已经经历了四个时代,划分时代的主要依据是计算机的构成元件。 2 、世界上第一台电子数字计算机采用的逻辑元件是电子管。 3 、早期的计算机体积大、耗能高、速度慢,其主要原因是制约于元器件。 4 、当前的计算机一…

【回溯法】竞赛游戏

题目描述 某游戏规则中,甲乙双方战斗,每一回合总能分出胜负,游戏规定: 1.失败的一方要将自己体力值的1/4加给胜利的一方。 2.游戏开始时,甲的体力值是1000,乙的体力值是2000。 3.每一回合,甲乙胜…

zabbix自动发现(Discovery)功能使用

随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的童鞋 需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添加设备、分组、项目、图像…..结果应该是让人吐的结果。 鉴于这个问题我们可以好好利用下Zabbix大…

Apache之三种工作模式和配置性能优化

1 Apache的3种模式和版本 Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式,它们分别是prefork,worker和event。 我们可以使用httpd -V 命令查看apache的版本和模式,如果你服务…

lsof命令

lsof, LiSt Opened Files, 列出打开的文件, 听起来很简单的样子. 但想*nix中很多其他工具一样, lsof把这件简单的事情做到了炉火纯青. 因为Unix认为”一切皆文件”, 那么”打开的文件”就不仅仅是传统意义上打开的文件了, 还可以是网络/Unix域套接字, 匿名/具名管道, 共享库文件…

React-引领未来的用户界面开发框架-读书笔记(二)

第4章 数据流 由于react的数据流向是单向的(其父节点传递到子节点), 因此组件是简单且易于把握的(它们只需要从父节点获取props渲染即可) 假如顶层组件的某个prop改变了,react会递归地向下遍历整个组件树&a…

六、WebApp 二手信息站点页面制作(IVX 快速开发教程)

六、二手信息站点页面制作 在了解了基础可视组件后,我们可以通过这些可视组件进行站点页面开发,在此以一个二手交易网站站点页面为例,本教程示例并不是成熟完善的示例,需要各位读者进行少量完善,示例只是用于功能讲解…

【专升本计算机】甘肃省专升本考试公共课计算机填空题考点汇总

甘肃专升本考试公共课计算机填空题考点汇总 Excel 工作簿文件的默认扩展名为 xls 。 Excel 主界面窗口中编辑栏上的 “fx” 按钮用来向单元格插入函数。 用来给电子工作表中的行号进行编号的是数字。 在 Excel 中,输入数字作为文本使用时,需要输入作为先导标记的字符是单引…

Blazor University (25)路由 —— 通过 HTML 导航

原文链接&#xff1a;https://blazor-university.com/routing/navigating-our-app-via-html/通过 HTML 导航源代码[1]链接到 Blazor 组件中的路由的最简单方法是使用 HTML 超链接。<a href"/Counter">This works just fine</a>Blazor 组件中的超链接会被…

css3选择器详解

css3选择器详解css中除了早先最早的&#xff0c;ID选择器&#xff0c;class选择器一些以外在css3中新加入了新的选择器&#xff0c;新选择器的使用大大的方便了我们的编程&#xff0c;下面我就说一些css3的选择器的使用方法&#xff0c; p 选择了所有<p>元素的标签…

OpenReports中文支持方案

此文章在《OpenReports中文支持完全解决方案.doc》的基础上做优化&#xff0c;并贴出代码。已测试通过。 一、主要解决的问题 1 页面显示支持中文 2 与服务器或数据库的交互支持中文 3 查询结果支持中文 4 导出文件名及内容支持中文 二、解决方案及方法 1 …

LeetCode之First Unique Character in a String

1、题目 Given a string, find the first non-repeating character in it and return its index. If it doesnt exist, return -1. Examples: s "leetcode" return 0.s "loveleetcode", return 2. 2、代码实现 public class Solution {public int firstU…

七、功能性组件与事件逻辑(IVX 快速开发教程)

七、功能性组件与事件逻辑 由于 iVX 极度易用的特性&#xff0c;在 iVX 中开发微信小程序、WebApp、小游戏应用的开发流程大致相同。介绍完基础可视化组件后通过后台的服务、数据库与事件结合即可完成一个应用的开发&#xff1b;此篇将会介绍 iVX 功能性组件与事件&#xff0c…

python assert的作用

一、python assert的作用&#xff1a; 根据Python 官方文档解释(https://docs.python.org/3/reference/simple_stmts.html#assert), "Assert statements are a convenient way to insert debugging assertions into a program". 二、一般的用法是&#xff1a; assert…

React-引领未来的用户界面开发框架-读书笔记(三)

第8章 DOM操作 多数情况下&#xff0c;React的虚拟DOM足以用来创建你想要的用户体验&#xff0c;而根本不需要直接操作底层真实的DOM。然而也有一些例外。最常见的场景包括&#xff1a;需要与一个没有使用React的第三方类库进行整合&#xff0c;或者执行一个React没有原生支持的…

【专升本计算机】甘肃省普通高等学校专升本考试计算机全真模拟试卷(一)

甘肃省普通高等学校专升本考试计算机全真模拟试卷(一) 一、单项选择题(在每小题给出的四个选项中只有一项是正确的,将正确选项的字母序号填在括号内。每小题1分,共60分。) 1.在Excel中,当单元格中出现#N/A时,表示( )。 A.公式中有Excel不能识别的文本 B.公式或函数…

WPF 基础控件之 ToggleButton 样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButtonToggleButton 实现下面的效果1&#xff09;ToggleButton来实现动画&#xff1b;Border嵌套 Ellipse并设置T…

hdu-5781 ATM Mechine(dp+概率期望)

题目链接&#xff1a; ATM Mechine Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem DescriptionAlice is going to take all her savings out of the ATM(Automatic Teller Machine). Alice forget how many deposit she has, …

Android之让手机能识别当前app为浏览器类型的APP

1 、问题 我们设置手机默认浏览器的时候&#xff0c;我们一般在“设置”页面&#xff0c;点击"默认应用管理“&#xff0c;然后再点击浏览器&#xff0c;发现里面没有当前的app,但是会有一些QQ浏览器(前提手机安装了)或者其它浏览器&#xff0c;我们怎么让系统能识别自己…