HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Netflix 推出 Hollow,处理内存数据集的 Java 库

  • 2017-02-07
  • 本文字数:1712 字

    阅读完需:约 6 分钟

Netflix 最近推出了 Hollow ,一款 Java 库和工具包,旨在有效缓存不属于“大数据”的数据集。这些数据集可能是电子商务和搜索引擎的元数据,或者是 Netflix 电影和电视节目的元数据。处理这种数据集的传统方法包括数据存储或串行化,但这可能会有可靠性和延迟问题。Hollow 的入门指南中总结了核心概念和命名方法:

Hollow 管理由单个 _ 生产者 _ 构建的数据集,并向一个或多个 _ 消费者 _ 传送以用于只读访问。数据集会随着时间而改变。改变的数据集的时间线可以分为离散的 _ 数据状态 _,每个状态都是那个特定时间点数据的完整快照。

生产者和消费者通过在数据状态之间转换的 _ 状态引擎 _ 来处理数据集。生产者使用 _ 写状态引擎 _,而消费者使用 _ 读状态引擎 _。

Hollow 取代了 Netflix 原先的内存数据集框架 Zeno 。数据集现在用紧凑的、固定长度的、强类型的数据编码表示。这种编码最小化了数据集占用的空间,并将编码记录“打包在 JVM 堆上合并的可重用内存条中,以避免影响繁忙的服务器上的 GC 行为。”

入门
要开始使用 Hollow 示例,请参考以下 POJO:

复制代码
public class Movie {
long id;
String title;
int releaseYear;
public Movie(long id,String title,int releaseYear) {
this.id = id;
this.title = title;
this.releaseYear = releaseYear;
}
}

上述 POJO 上简单的数据集可以这样填充:

复制代码
List<Movie> movies = Arrays.asList(
new Movie(1,"The Matrix",1999),
new Movie(2,"Beasts of No Nation",2015),
new Movie(3,"Goodfellas",1990),
new Movie(4,"Inception",2010)
);

Hollow 将这样的 movies 列表转换为新的编码形式,如下所示:

有关编码的更多详细信息,请参阅 Hollow 网站的高级主题章节

生产者
生产者的第一个示例发布了数据集(本例中的电影)的初始数据状态,并通知消费者在哪里找到该数据集。对数据集的后续更改会系统地发布并传送给消费者。

生产者使用 HollowWriteStateEngine 作为数据集的句柄:

复制代码
HollowWriteStateEngine writeEngine = new HollowWriteStateEngine();

HollowObjectMapper 填充 HollowWriteStateEngine:

复制代码
HollowObjectMapper objectMapper = new HollowObjectMapper(writeEngine);
for(Movie movie : movies) {
objectMapper.addObject(movie);
}

HollowObjectMapper 是线程安全的,也可以并行执行。

生产者将数据集(也称 blob)写入定义的输出流:

复制代码
OutputStream os = new BufferedOutputStream(new FileOutputStream(snapshotFile));
HollowBlobWriter writer = new HollowBlobWriter(writeEngine);
writer.writeSnapshot(os);

为消费者生成 API
客户端 API 基于数据模型生成必要的 Java 文件,并且必须在写入初始的消费者源代码前执行:

复制代码
HollowAPIGenerator codeGenerator = new HollowAPIGenerator(
"MovieAPI", // a name for the API
"org.redlich.hollow.consumer.api.generated", // the path for generated API files
stateEngine); // the state engine
codeGenerator.generateFiles(apiCodeFolder);

消费者
一旦通知消费者已发布的数据集,消费者使用 HollowWriteReadEngine 作为数据集的句柄:

复制代码
HollowReadStateEngine readEngine = new HollowReadStateEngine();

HollowBlobReader 将 blob 从生产者消费到 HollowReadStateEngine:

复制代码
HollowBlobReader reader = new HollowBlobReader(readEngine);
InputStream is = new BufferedInputStream(new FileInputStream(snapshotFile));
reader.readSnapshot(is);

通过生成的 API 可以访问到数据集中的数据:

复制代码
MovieAPI movieAPI = consumer.getAPI();
for(MovieHollow movie : movieAPI.getAllMovieHollow()) {
System.out.println(movie._getId() + ", " +
movie._getTitle()._getValue() + ", " +
movie._getReleaseYear());
}

这将打出结果输出:

复制代码
1, "The Matrix", 1999
2, "Beasts of No Nation", 2015
3, "Goodfellas", 1990
4,"Inception", 2010

完整的 Hollow 项目可以在 GitHub 上找到。

InfoQ 最近和 Netflix 高级软件工程师及 Hollow 主要贡献者 Drew Koszewnik 进行了详细的访谈,讨论了Hollow 的具体实现细节。

查看英文原文 Netflix Introduces Hollow, a Java Library for Processing In-Memory Datasets

2017-02-07 18:003024
用户头像

发布了 218 篇内容, 共 67.8 次阅读, 收获喜欢 76 次。

关注

评论

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

谷歌正式开放Imagen 3访问权限!OpenAI的GPT-4o连续两周迎来两次更新!|AI日报

可信AI进展

人工智能

玩转京东商品评论数据接口:数据挖掘与洞察

tbapi

京东商品评论内容接口 京东API 京东商品评论数据接口

4大要点助你选择室内LED显示屏

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

OpenSPG 首个 Release 版本发布,提供成熟可靠的知识构建解决方案

可信AI进展

人工智能

In-Depth Analysis--IPQ9574 and QCN9274 Synergy in Industrial-Grade Applications-Harnessing the Power of WiFi 7

wifi6-yiyi

ipq9574

和鲸科技受邀出席辽宁省计算机基础教育学会 2024 年学术年会

ModelWhale

AE关键帧缓入缓出曲线调节脚本 AEscripts flow mac版 支持M1/M2

Rose

AE关键帧

专业音调校正和操控 Nuro Audio Xpitch for mac v1.0.2激活版

Rose

Tomcat源码分析 (一)----- 手撕Java Web服务器需要准备哪些工作

派大星

tomcat源码解读

鲁棒性目标检测 TOP2 方案分享

阿里云天池

coconutBattery Plus:苹果mac电脑 电池健康检测工具

理理

全球首发!昆仑万维重磅推出AI短剧平台SkyReels

新消费日报

智能配补调:破局“流量红利”后时代的零售新策略

第七在线

Optical Flares插件怎么安装?Optical Flares中文汉化版详细安装教程

Rose

D2O 前置放大器仿真插件(Triton Audio D2O mac版下载安装)

Rose

“AI+Security”系列第2期(四):AI/机器学习供应链攻击

云起无垠

IBM,谁说大象不能跳舞?

IPD产品研发管理

华为 产品设计 产品开发 ibm 集成产品开发体系

Adobe Camera Raw增效工具 for mac v16.2.0中文激活版

Rose

Adobe Camera Raw下载 Adobe Camera Raw中文 Adobe Camera Raw破解

FCPX插件:MotionVFX - mWedding 2 盛大的婚礼效果

Rose

黄金三年,京东后端新人的技术破茧之路

京东零售技术

后端 技术成长 企业号2024年8月PK榜

重塑跨境电商版图:1688代采集运系统的魔力之旅

代码忍者

代购系统 1688代采系统

编程神器:IDA Professional 逆向工程和静态分析工具

Rose

编程开发 IDA Professional IDA Professional9破解版 反汇编逆向神器

photoshop阴影插件 Shadowify 苹果Mac版

Rose

ps阴影插件 Shadowify

华为云联创营CIO领航班第一期:数字化转型与AI赋能的深度探索

科技热闻

中文汉化版 眼睛糖果滤镜PS插件 Alien Skin Eye Candy 7下载安装

Rose

ps滤镜下载 Alien Skin Eye Candy 7 眼睛糖果滤镜

和鲸携手山东大学数字人文实验室,推动新文科与人工智能融合发展

ModelWhale

Project Office Mac版:甘特图项目管理应用

理理

macOS Sequoia 15(Macos15系统)v15.0 Beta 6测试版本

理理

中文版Nik Collection 6 滤镜插件套装 适用于ps/lr

Rose

Nik Collection 6 滤镜

郑雁鹏|浅谈工业实时数据库和时序数据库的关系

麦杰研究院

数据库 工业实时数据库 工业时序数据库 麦杰科技 麦杰研究院

Coze插件发布!PDF转Markdown功能便捷集成,打造你的专属智能体

合合技术团队

人工智能 PDF

Netflix推出Hollow,处理内存数据集的Java库_Java_Michael Redlich_InfoQ精选文章