Yahoo 最近开源了内部已经开发运行了 10 年之久的 Vespa 引擎

2,113 阅读5分钟
原文链接: baijiahao.baidu.com

自从2006年开始使用Hadoop以来,雅虎一直致力于向更大的开发者社区开放大数据基础设施。今天,雅虎朝着这个方向迈出了重要的一步,雅虎的大数据处理和服务引擎Vespa将在GitHub上开源。

构建应用越来越多意味着开发者要处理大量的数据。虽然开发人员可以使用Hadoop来存储和批量处理大数据,而Storm则可以流式处理数据,但这些技术无法帮助用户获得最终结果。大规模数据是服务的挑战,特别是需要在很短的时间内快速计算数据时。

通过发布Vespa,雅虎使任何人都可以轻松构建可以对用户请求及时响应,具备大型数据集,实时和互联网规模的应用程序 - 到目前为止只有几家大型公司可以实现这些功能。

服务通常不仅仅涉及通过ID查找项目或从模型中进行计算,许多应用程序需要在服务时间内计算大型数据集。两个众所周知的例子是搜索和推荐,要向用户传递搜索结果或推荐文章列表,需要查找与查询匹配的所有项目,使用相关性/推荐模型确定每个项目对于特定请求的好处,组织匹配以删除重复项,添加导航帮助,然后向用户返回响应。由于这些计算取决于请求的特征,例如用户的查询或兴趣,因此不可能预先计算结果。它必须在服务时间完成,而且由于用户正在等待,所以必须快速完成。结合上述操作的快速完成与在大量数据上执行需要大量基础设施的配合——分布式算法,数据分发和管理,高效数据结构和内存管理等等,这是Vespa在引擎中提供的。

雅虎目前有超过10亿用户,包括Yahoo.com,Yahoo News,Yahoo Sports,Yahoo Finance,Yahoo Gemini,Flickr等在内的许多不同品牌的Vespa,以处理并提供数十亿份日常请求,数十亿份文件同时响应搜索查询,提出建议并提供个性化内容和广告等。

事实上,Vespa处理服务的内容和广告几乎每秒90,000次,延迟大致数十毫秒。在单独的Flickr上,Vespa在几百亿图像上按照每秒数百次查询的规模执行关键字和图像搜索。此外,Vespa通过雅虎Gemini每天提供超过30亿个本地广告请求,每秒140k个请求(根据内部数据),直接为公司的收入流贡献。

Vespa 架构概览

通过Vespa,团队构建应用程序可以:

使用类似SQL的查询和文本搜索选择内容项

组织所有匹配以生成数据驱动页面

通过手写或机器学习的相关性模型进行匹配

将结果的响应时间设为低毫秒

实时写数据,每个节点每秒数千次

在服务和写入数据时,收集和重新配置集群

为了实现速度和规模,Vespa在许多机器上分发数据和计算,而没有任何一个主机作为瓶颈。在传统应用程序通过将数据拉入无状态层进行处理的情况下,Vespa反而将计算推送到数据。这涉及在机器故障或增加新容量,实施分布式低延迟查询和处理算法,处理分布式数据一致性等方面对数据的重新分配进行管理。

作为Vespa背后的团队,自从雅虎收购alltheweb.com以来,团队一直致力于开发搜索和服务功能。在过去几年,团队从头开始重写了大部分引擎,将经验融入现代技术平台。Vespa的范围和代码要比发布的任何开源项目更大。现在,这已经在雅虎最大和最关键的系统上经过验证,雅虎很高兴将其发布到世界各地。

Vespa使应用程序开发人员能够将任何大小的数据和模型提供给服务系统,并在请求时进行最终计算。这通常以较低的成本(用于购买和运行硬件)和与预先计算的请求答案相比具有更好的用户体验。此外,它允许开发人员以更具交互性的方式工作,可以实时导航并与复杂计算进行交互,而不必开始离线作业并等待检查结果。

Vespa可以在本地或云端运行,Vespa提供Docker映像和rpm包,以及在笔记本电脑或AWS集群上运行得指南。

管理分布式系统不容易,雅虎已经努力使Vespa开发和运行应用程序变得容易,因此你可以专注于创建利用能够实时计算大型数据集的功能,而不是管理集群和数据细节。通过使用Vespa,程序员应该能够在不到十分钟的时间内获得一个应用程序,并按照文档运行。

你觉得这个东西如何呢?