修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
  • 地区:
  • 语言:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

有效可扩展的图系统架构

作者:孙宇熙 & 陈俊文

(本篇摘译自 Designing Highly Scalable Graph Database Systems without Exponential Performance Degradation - Understanding Distributed Native Graph Processing 一文,该文被 ACM Digital Library 美国计算机学会数字图书馆收录。)

当今图数据库系统面临的一个主要挑战,就是怎样才能兼顾存储与计算两方面性能。很多图系统厂商选择了牺牲查询速度来获得存储的可扩展性,得到的系统虽然能使用众多实例存储大量数据,但无法提供足够的图计算能力来实时深入地对动态图数据进行穿透。像K邻搜索、全图最短路径这类计算,表面上直观易懂,实则牵涉大量针对图数据的深度遍历,放在一个典型的 BSP(Bulky Synchronous Processing)系统上运行会引发多个分布实例之间的大规模数据交换,从而导致严重的的延迟。

真实世界中的图数据往往要么非常密集、含有超级节点(例如金融交易数据),要么数据量巨大,需要分区、分片进行水平扩展,同时不能以性能的指数级下降为代价。上面举例的分布式图系统显然不是为了真实世界的需求而设计的,它们“只能存不能算”,我们称其所达到的可扩展性是无效的。

如何才能获得有效可扩展的图系统呢?这需要先了解图数据库可扩展性的发展历程。图1展示了图数据库从单机实例到水平可扩展的分布式集群的进化路径。

图1:分布式(图)系统的发展

我们将真正称得上有效可扩展的图系统架构分为三类,分别介绍它们的特性。

第一类:分布式共识 & HTAP

第一类分布式图系统可以从分布式共识集群谈起。分布式共识集群支持RAFT协议,并且为了便于选出集群leader,通常含有3个或更多奇数个实例。例如,Neo4j的Enterprise Edition v4.x支持原始的RAFT协议,只用一个主实例处理工作负载,而其他两个实例仅同步来自主实例的数据。

一种较实用的处理工作负载的方法是使用增强的RAFT协议,让所有实例以负载均衡的方式工作。例如,让主导实例处理读写操作,其他实例除了同步数据之外还可以处理读操作,仍然保证了整个集群的数据一致性。

一种更复杂的方法是HTAP(混合事务和分析处理),集群leader处理TP操作和AP操作,而follower处理各种AP操作(图算法、路径查询等)。图2所示的就是嬴图的HTAP图系统架构。

图2:嬴图的HTAP架构

分布式共识系统的利弊总结如下:

  • 硬件使用量低
  • 数据一致性好
  • 复杂、深层查询高性能
  • 仅限于垂直可扩展性

第二类:Grid

第二类分布式图系统包含多个集群,由name server担任客户端和服务器端之间的代理角色,在实例间对查询进行分配、对数据进行转发与聚合,实现针对多实例的联邦查询(Query-Federation)。这类分布式图系统的图分割工作通常是基于时间序列(水平分割)或业务逻辑(垂直分割)人为地进行的。

例如,将一年之内发生的信用卡交易数据(边)按月划分为12个图集,再将这些图集存储到不同的集群(3个实例)中。这种按时间划分边数据的逻辑是由数据库管理员事先定义好的,通过切点(node-cut)的方式进行图分割,是一种基于时间序列、同时又支持绝大多数业务逻辑(按月计算)的分割方式。在不涉及跨集群计算时(即不会发生数据迁移),该类图系统与HTAP系统具有同样良好的查询性能。

图3展示了一种Grid体系架构,相比于图2所示HTAP架构,该架构额外增加了name server和meta server两个组成部分。从设计上,所有查询都由name server进行代理,同时name server与meta server协同工作以确保整个系统的弹性。各集群则在很大程度上与HTAP架构相同。

图3:Grid体系架构(Cluster、Name Server、Meta Server)

值得注意的是,由于会受到数据迁移的影响(类似于map reduce的工作原理),Grid系统在进行图算法等跨集群操作时的性能并不尽如人意。

我们将Grid架构设计的利弊概括为:

  • 保留了HTAP体系结构的所有优缺点
  • 同时兼顾了可扩展性与性能
  • 需要管理员(DBA)干预图分割
  • 绝大多数业务逻辑需首先在各集群上执行得到临时结果,发送给name server进行聚合后再返回到客户端
  • 业务逻辑必须与图分割、图查询的逻辑相适配

第三类:Shard

第三类分布式图系统延用了第二类系统中的name server和meta server,但其数据分割的方式并非人为制定,而是由name server根据自动收集的统计信息(Automatic Statistics Collection)进行判断,并根据系统的使用情况做出实时调整。

此类架构的终极目标是放弃对name server算力的依赖,让每个分片(shard server)将充分担负起计算任务。该架构在数据迁移方面以最小I/O成本为原则进行优化,在跨分片计算时让少量数据向大量数据迁移,只在name server上进行最少的数据整合。

图4展示了一种分片体系结构。在这种对等(peer-to-peer)的体系结构中,shard server和name server都具有计算能力,同时shard server还负担了分区存储。

图4:Shard体系架构(Shard Server、Name Server、Meta Server)

针对图数据展开应用的Shard系统具有以下特征:

  • 无限可扩展
  • I/O性能高
  • 跨分片的查询性能低(指数级)
  • 图查询的调度(计划和优化)复杂

应用场景

为真实的商业场景设计分布式图系统时,需进行有针对性的优化以获得令人满意的性能。下面表格给出了以上3种分布式图系统的特征及其具体要求。

表:三种分布式图系统及其业务场景

类型

特征

业务场景

高密度并行计算(HDPC)

·  实时/在线读写

·  深度查询

·  实时交易拦截

·  反欺诈

·  异常检测

·  实时推荐

·  AI/ML

·  其他实时场景

HDPC & Shard

·  读写分离

·  分片/离线数据的弹性处理

·  知识图谱

·  大语言模型(LLM)

·  指标计算

·  审计

·  云数据中心

Shard

·  元数据处理

·  浅层(1~2步)邻居查询

·  归档

·  数据仓库

 

一个真正能胜任的分布式图系统还需要考虑很多因素,如成本、主观偏好、设计理念、商业逻辑、复杂性容忍度、服务能力等。我们很难笼统的说一种架构绝对优于另一种架构。但长远来看,图体系架构的发展方向显然是从上面所介绍的第一类到第二类、最终到第三类;只是就目前来看,前两类体系已经能满足绝大多数客户场景的需求,并且人类的智力水平(DBA干预)暂时足以帮助实现性能和可扩展性之间的平衡(第二、三类)。

(更多信息请点击阅读原论文。)

请完成以下信息后可下载此书
*
公司名称不能为空
*
公司邮箱必须填写
*
你的名字必须填写
*
你的电话必须填写
*
你的电话必须填写