写点什么

Falcor:Netflix 的数据抓取开源库

  • 2015-08-24
  • 本文字数:1465 字

    阅读完需:约 5 分钟

作为一家在线影片租赁供应商, Netflix 通过移动应用、桌面应用或 TV 来为用户提供电影和电视节目。在使用过程中,用户总是需要通过这些应用来获取位于服务器的远端数据资源。近日,为了提高远程数据抓取的效率,Netflix 发布了全新数据平台 Falcor 的开发者预览版。接下来,本文对 Falcor 进行简要介绍。

Falcor 的设计目标并不是用来替代应用服务器、数据库或者 MVC 框架。其功能是作为中间件,来优化应用程序不同层之间的通信效率。之前,Netflix 已经提出了 JSON Graph 的概念,来把 Graph 数据转变为 JSON 对象。该 JSON 格式可以消除传统 JSON 格式引入的重复数据问题,并提高数据传输的效率。Falcor 利用了该 JSON 格式,允许应用程序把所有远端的数据源用一个单独的 JSON Graph 来表示,提高数据抓取的效率。而且,用户仍然可以使用 get、set 和 call 等熟悉的 JavaScript 方法进行数据读取等操作。Falcor 的一个理念就是,用户只要熟悉数据,就熟悉其 API。此外,当用户需要访问数据时,Falcor 会根据需求保证尽可能少的数据传输,同时保证大量数据传输的高效性。

Falcor 的特点主要表现为三个方面——一个模型随处使用、数据即是 API 和云绑定。当使用 Falcor 时,客户端仍然像请求本地 JSON 对象一样请求远端的 JSON 资源。为了获得远端服务器中 JSON 资源中的值,客户端需要把服务器 JavaScript 的路径传递到 JSON 对象内的每一个希望获得的值中。然后,服务器就会把只包含这些值的 JSON 对象的子集返回到客户端。这样,客户端就可以把请求的多个数据轻松封装到一个 URL 请求中。为了保证应用服务器处于无状态模式,Falcor 在处理请求的路径中加入了专门的路由器。这些路由器根据一个或多个 JavaScript 路径,来把请求发送到不同的服务器中。而且,路由器只向客户端暴露出了一个单独的 JSON 模型,使得客户端可以轻松获取来自不同服务器的数据。这种机制也就保证了 Falcor 的一个模型随处使用的特性。

另外一方面,Falcor 并不需要用户来重新了解一些复杂的服务层。Falcor 把远程数据封装为与本地数据同样的接口。客户端仍然可以使用类似的 JavaScript 路径和操作来处理数据。二者最大的差别只在于 Falcor 的客户端 API 是异步的。这样,服务器端的数据就可以自由移动,并不会影响到客户端的代码。最后,云绑定体现为 Falcor 采用的异步 MVC 模式。在 Falcor 中,视图、模型以及控制器之间的通信都是异步的。这样,在视图驱动数据抓取时,只有渲染一个视图需要的那部分数据被抓取,有效保证了通信数据的最小化。

此外,为了提高通信的效率,Falcor 采用了缓冲、打包和去重三种策略。缓冲策略会把请求的数据暂存在本地。这样,下次同样的请求就可以直接从本地获取,大大减少通信量和响应时间。打包策略负责把若干小的请求汇集为一个大的请求,可以大大提高有效载荷的比例。去重策略则对请求进行过滤,去除不必要的请求。

目前,开发人员已经可以通过 Falcor 官方网站 GitHub 或者 npm 来下载开发者预览版 Falcor。除了一些相对成熟的模块,该版本中包含了产品中还未使用的 Falcor 路由器的 Node 版本。 Netflix 官方表示,其开发团队目前仍处在积极进行 Falcor 的网上工作。Falcor 的发展路线图将在不久之后给出。Netflix 希望通过本版本的发布,获得广大开发人员的反馈,从而为正式版的开发打好基础。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-24 19:024798
用户头像

发布了 268 篇内容, 共 131.6 次阅读, 收获喜欢 24 次。

关注

评论

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

快速上手 Pythond 采集器的最佳实践

观测云

运维 可观测性 可观测

揭秘英特尔未来IPU路线图,开启数据中心“进化之旅”

科技新消息

直播预告 | PolarDB-X 动手实践系列——PolarDB-X Replica原理和使用

阿里云数据库开源

数据库 阿里云 开源 PolarDB-X

谁说 Zadig 只能复制环境?数百微服务一套环境实现高效协作

Zadig

DevOps 云原生 CI/CD 软件交付

【刷题第五天】1. 两数之和

白日梦

5月月更

String源码解析-String的使用注意2

zarmnosaj

5月月更

基于 Agora SDK 实现 Windows 端的一对一视频通话(基于3.6.2版本)

声网

人工智能 音视频 sdk

动辄“耗资过亿”的表格工具,究竟难在哪儿?

葡萄城技术团队

Spring Authorization Server 实现授权中心

Zhang

Java OAuth 2.1 Spring Security OAuth

英特尔公布数据中心和人工智能领域重大进展,全方位展示强劲领导力

科技新消息

蝉联第一!金蝶夺取Gartner中国高生产力aPaaS市场冠军!

金蝶云·苍穹

Cilium 多集群 ClusterMesh 介绍

Se7en

“软件定义汽车”的数字化之变,华为云低代码平台带来了什么?

脑极体

echarts饼图指示器文字颜色设置不同

空城机

eCharts 5月月更

“四大高手”为你的 Vue 应用程序保驾护航

葡萄城技术团队

钉钉 Flutter 跨四端方案设计与技术实践 | Dutter

阿里巴巴终端技术

flutter 移动端 跨端框架 桌面端

玩了一场剧本杀,同车队友“不是人”

脑极体

FinClip+微幕小程序,助力企业全端公私域流量互通

Speedoooo

小程序 WordPress 移动开发 小程序容器

实现同比、环比计算的N种姿势

葡萄城技术团队

数据分析 BI数据分析 同比 环比

4月月更开奖啦!中奖者速来领取!

InfoQ写作社区官方

热门活动

我国类脑计算处于什么水平?人工智能下神经科学启发的类脑计算。

GPU算力

人工智能 液冷服务器 类脑计算 神经科学

维护版式文档技术生态 国际PDF协会向福昕软件发来感谢信

联营汇聚

深入剖析 split locks,i++ 可能导致的灾难

火山引擎开发者社区

数据标准在网易的实践

网易数帆

大数据 数据仓库 数据治理 元数据 数据标准

GPU分类和应用现状分析

Finovy Cloud

人工智能 云计算 gpu GPU服务器

如何清除 WordPress 中的缓存

海拥(haiyong.site)

WordPress 5月月更

硬件为矛 软件为盾 英特尔分享数据中心GPU的攻守之道

科技新消息

如何开发 LAXCUS 分布式应用软件(四):编写边缘端软件

LAXCUS分布式操作系统

并行计算 端边云协同架构 分布式操作系统 分布式应用软件

英特尔以四大超级技术力量,助力数字未来,发布多项进展

科技新消息

在字节跳动,一个更好的企业级SparkSQL Server这么做

字节跳动数据平台

云图说|华为云帮助中心最佳实践:源自项目实战的上云指导

华为云开发者联盟

最佳实践 华为云 云图说 帮助中心 业务上云

Falcor:Netflix的数据抓取开源库_语言 & 开发_张天雷_InfoQ精选文章