论文解读|TuGraph Analytics 流式图计算论文入选国际顶会 SIGMOD

简介: 蚂蚁流式图计算团队本次的论文 《GeaFlow: A Graph Extended and Accelerated Dataflow System》 被 SIGMOD 2023 收录,代表蚂蚁流式图计算团队的成果不仅在工业界有界广泛的应用,同时也在学术界得到进一步认可。

GeaFlow(品牌名TuGraph-Analytics) 已正式开源,欢迎大家关注!!! 欢迎给我们 Star 哦! GitHub👉https://github.com/TuGraph-family/tugraph-analytics
更多精彩内容,关注我们的博客 https://tugraph-analytics.github.io/


6月18日-23日,数据库国际顶会 2023 ACM SIGMOD 在美国西雅图举行,蚂蚁流式图计算团队一篇论文入选。

ACM SIGMOD 数据管理国际会议是由美国计算机协会(ACM) 数据管理专业委员会(SIGMOD) 发起,与 VLDB、ICDE 并称为数据库业界的三大顶级学术会议。
其收录论文代表了数据库领域的最高水平,也是未来数据库技术发展的重要风向标。

蚂蚁流式图计算团队本次的论文 《GeaFlow: A Graph Extended and Accelerated Dataflow System》 被 SIGMOD 2023 收录,代表蚂蚁流式图计算团队的成果不仅在工业界有界广泛的应用,同时也在学术界得到进一步认可。

tu1.png

图片注:GeaFlow 为蚂蚁流式图计算引擎 TuGraph Analytics 内部代号,本文将沿用论文中所用 “GeaFlow”,便于读者对应。
图片项目代码地址:https://github.com/TuGraph-family/tugraph-analytics

背景介绍

伴随着流处理技术的不断发展,它被各大应用领域广泛的使用,例如监控、推荐、广告等。虽然现有的流处理系统已经被证明对处理窗口类型的集合查询非常有效,但当面临更复杂的数据结构,例如图结构数据时,却面临非常多的挑战。

首先在流计算中 join 是一个开销非常大的操作,特别是对于动态变化的数据,因为每来一条数据都需要从另外一条流中找到其所对应的数据,另外还涉及到数据物化和 shuffle。而流式图计算中通常需要成百上千次图迭代才能得到结果,对应流计算就是成百上千次 join 操作。

其次流计算中数据聚集的中间状态,通常在固定窗口或者滑动窗口中,需要维护的数据量是远小于窗口的原始数据大小,且窗口通常不会特别大。而流式图计算中通常需要维持一个较长窗口且动态变化的图,比如在风险识别中需要回溯到几个月甚至几年的数据。

为了解决上述的这些问题,蚂蚁流式图计算团队开发和设计了一款
流图计算引擎 Geaflow,它能很好的解决流式动态图分析、遍历和计算的诉求,同时支持长窗口数据图数据状态管理、DSL 化流图任务研发等特性。

Geaflow 在蚂蚁的风控、营销等场景也得到了非常广泛的应用,同时也在双十一大促中大放异彩。下面我们来剖析下 Geaflow 的运行场景和内部技术。

运行场景

不同于图数据库,Geaflow 解决的问题是高吞吐场景下复杂的图分析和计算问题,例如深度图遍历、子图匹配、全图分析等。Geaflow 使用流式事件驱动的方式进行计算和查询,同时利用查询优化技术进行查询合并和加速。下面我们来描述下 Geaflow 的运行场景。

tu2.png

(图1)

图1 所描述的就是一个典型的 Geaflow 数据流向图。从整体的流水线来看,它在进行流式的构图,构图的数据可以包括多种不同类型的数据,可以是消息队队列,也可以是日志系统。数据可以经过ETL处理,最后转换为点和边写入图存储,图存储会定期的进行 checkpoint 来保障 ExactlyOnce。

同时,它还基于增量和变化的数据进行驱动图计算,例如反套现场景中不断进行付款的用户id。和其他通用的流计算系统不同的是,由于图计算是迭代计算,GeaFlow 支持流式链路上的迭代图处理。最后可以将图计算的输出数据加工处理,例如上图中进行 Window TopN 计算后输出。

架构设计

为了支持以上的场景,Geaflow 做了如下的架构设计:

tu3.png

(图2)

如图2所示,相对于典型的流系统,我们做了如下的扩展和补充。整体架构从上往下包含以下几层:

Hybird DSL

GeaFlow创新型的融合了表和图语义,利用表 DSL SQL以及图 DSL Gremlin 来描述,用户可以轻松通过类似SQL编程的方式编写实时图计算任务。同时,在 Query Planning 中,我们针对对逻辑执行计划和物理执行计划进行图语义优化;并且对多查询语句还 进行合并查询等优化。

Core API

GeaFlow 设计了一套带状态语义的算子,支持多种流、图语义,包括标准的流算子、vertex/edge-centric 的图算子。在图算子中,我们建立了很好的编程模型,支持用户各种不同的图结构,同时引入 session 来处理并发的图查询。

Streaming Engine

GeaFlow 运行时的分布式DAG执行层,可以灵活的在流图语义间切换,同时可以高效的支持多查询优化。在执行过程中,我们利用 off-heap 内存管理、sharing graph state 和批量执行等技术进行优化,极大的提升了整体的吞吐。

GeaFlow State

GeaFlow 的状态存储,用于存取流、图数据。可以使用 KV 语义的状态,也可以使用图语义的状态。在图状态中,我们设计了一套高效的 key layout,加速 vertex 和 edge 存取,兼容多种不同多模 backend。同时我们还开发了一套 graph-native 的 backend,利用类 CSR 的索引结构以及计算和存储分离架构支持更高效的图存取,与灵活的扩缩容。

实验结果

我们在这里列举了 Geaflow 和其他流计算引擎的对比。

在 K-Hop Neighborhood 场景中,我们选在 LiveJournal 以及 Twitter-2010两个公开数据集,对比 Geaflow、 Flink 以及 Differential Dataflow。实验是在8个 container 的集群上做测试,其中每个 container 规格为8c16G。

通过实现,我们可以看到:

在多个 hop 的遍历场景下,GeaFlow 整个的内存保持平稳,并不会随着迭代深度增加而显著增加,而其他通用流式计算引擎,则会有显著的存储空间放大,从而在 hop 数过多是内存溢出。

GeaFlow 针对典型流式图场景,对于基于通用路计算引擎基于 Join 来实现的方式,吞吐显著提升。

tu4.png

(图3)

在图查询仿真场景中,我们验证查询时间和并发执行 query 数的关系。

在图4中我们看到随着批次中并发的查询数据量增大,执行时间增加的并不会特别明显。可以发现融合40个query的时间只增加了22.7%,达到32.6倍的提速效果。

tu5.png

(图4)

总结及规划

Geaflow 源于6年前我们在蚂蚁业务场景的尝试,当时我们发现现有的流处理架构并不适合流式图处理,经过两年的孵化,Geaflow 成功的支持蚂蚁反欺诈业务,同时在2018年双十一期间达到每秒处理超过千万级事件的高吞吐量。在这些业务中的流式图查询和分析效果带来的业务效果也非常显著,证明了流式图处理在金融场景中可以提供非常多的帮助。之后我们引入 DSL 的支持,进一步减少用户开发成本,我们选择了 SQL + Gremlin 的组合,并不断改进器查询优化器,于是便有有大量的用户开始使用我们的DSL来查询和分析他们的图计算场景。如今 Geaflow 已成为蚂蚁最受欢迎的计算引擎之一。

接下来,我们计划在以下几个方面进一步发展 GeaFlow:

  • 融合更多的图语义,例如具有增量语义的图计算算子。

  • 探索更多声明式的图查询语言,例如 OpenCypher、GQL 和 SQL/PGQ 等。同时融入 CBO 优化,自动调参等能力。

  • 探索使用 Rust/C++ 等语言改写我们执行引擎,进一步提高性能。


GeaFlow(品牌名TuGraph-Analytics) 已正式开源,欢迎大家关注!!!

欢迎给我们 Star 哦!

Welcome to give us a Star!

GitHub👉https://github.com/TuGraph-family/tugraph-analytics

更多精彩内容,关注我们的博客 https://tugraph-analytics.github.io/

相关文章
|
消息中间件 存储 网络协议
企业实战(11)消息队列之Docker安装部署RabbitMQ实战
企业实战(11)消息队列之Docker安装部署RabbitMQ实战
461 0
|
Java API iOS开发
Elasticsearch 字段别名 field-alias
Elasticsearch 字段别名 field-alias
421 0
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
新突破!阿里云EvoQwen2.5-VL嵌入模型登顶ViDoRe榜单
近期,阿里云专有云团队基于Qwen2.5-VL-3B/7B-Instruct双基座模型,创新研发的EvoQwen2.5-VL嵌入模型,在全球顶尖开源机器学习平台Hugging Face的权威多模态检索基准ViDoRe榜单中斩获佳绩,以硬核实力刷新业界纪录。 该模型以绝对优势登顶ViDoRe V2榜单全球第一,并斩获ViDoRe V1榜单全球第二。这一成果标志着在多模态语义理解与复杂检索领域,阿里云的技术实力已达到全球领先水平,为企业在高异构、非结构化数据场景下的知识管理提供了全新范式。
399 0
|
8月前
|
JavaScript Java 关系型数据库
基于springboot的美食城服务管理系统
本系统基于Spring Boot、Java、Vue和MySQL技术,构建集消费者服务、商家管理与后台监管于一体的美食城综合管理平台,提升运营效率与用户体验。
|
JSON 安全 API
⚡什么是 OpenAPI,优势、劣势及示例
OpenAPI 是一个用于描述RESTful API的标准,它提供了一个接口,使得人和机器无需源代码或文档就能理解服务。它定义了API的结构,与语言无关,适用于REST API。OpenAPI始于Swagger项目,后来成为OpenAPI倡议的一部分,由Linux基金会管理,得到了众多公司的支持。OpenAPI流行的原因包括其语言无关性、可读性、社区支持和工具生态系统。它使用JSON格式,支持各种数据类型,并具有严格定义的结构。虽然有其他如RAML和API Blueprint的竞争格式,但OpenAPI的广泛采用使其成为行业标准。
|
存储 人工智能 搜索推荐
Memobase:开源AI长期记忆系统,让AI真正记住每个用户的秘密武器
Memobase 是一个开源的长期记忆系统,专为生成式 AI 应用设计,通过用户画像和时间感知记忆功能,帮助 AI 记住、理解并适应用户需求。
2956 0
|
设计模式 数据可视化 Java
如何在 IDEA 中设置类路径
在 IntelliJ IDEA 中设置类路径,可以通过项目结构配置或模块设置来添加所需的库和依赖。具体步骤包括打开项目结构对话框、选择模块、添加类路径等。
2923 18
|
SQL 数据挖掘 API
ibis:极具潜力的Python数据分析新框架
ibis:极具潜力的Python数据分析新框架
595 6
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
人工智能 文字识别 并行计算
面壁推出超强端侧多模态模型,推理仅需8G显存!
面壁小钢炮 MiniCPM 系列,再次推出超强端侧多模态模型 MiniCPM-Llama3-V 2.5,且支持 30+ 多种语言