美团图数据库平台建设及业务实践

图数据结构,能够很自然地表征现实世界。比如用户、门店、骑手这些实体可以用图中的点来表示,用户到门店的消费行为、骑手给用户的送餐行为可以用图中的边来表示。使用图的方式对场景建模,便于描述复杂关系。在美团,也有比较多的图数据存储及多跳查询需求,概括起来主要包括以下4个方面:

总体来说,美团需要一种组件来管理千亿级别的图数据,解决图数据存储以及多跳查询问题。海量图数据的高效存储和查询是图数据库研究的核心课题,如何在大规模分布式场景中进行工程落地是我们面临的痛点问题。传统的关系型数据库、NoSQL数据库可以用来存储图数据,但是不能很好处理图上多跳查询这一高频的操作。

Neo4j公司在社交场景(见图1)里做了传统关系型数据库MySQL跟图数据库Neo4j的查询性能对比[1],在一个包含100万人、每人约有50个朋友的社交网络里找最大深度为5的朋友的朋友,实验结果表明多跳查询中图数据库优势明显(见图2)。然而选取或者自主研发一款高吞吐、低查询延时、能存储海量数据且易用的图数据库非常困难。下面将介绍美团在图数据库选型及平台建设方面的一些工作。

在图数据库的选型上我们主要考虑了以下5点:(A)项目开源,暂不考虑需付费的图数据库;(B)分布式架构设计,具备良好的可扩展性;?毫秒级的多跳查询延迟;(D)支持千亿量级点边存储;(E)具备批量从数仓导入数据的能力。

分析DB-Engines[2]上排名前30的图数据库,剔除不开源的项目,我们将剩余的图数据库分为三类:

DGraph是由前Google员工ManishRaiJain离职创业后,在2016年推出的图数据库产品,底层数据模型是RDF[12],基于Go语言编写,存储引擎基于BadgerDB[13]改造,使用RAFT保证数据读写的强一致性。

NebulaGraph是由前Facebook员工叶小萌离职创业后,在2019年推出的图数据库产品,底层数据模型是属性图,基于C++语言编写,存储引擎基于RocksDB[14]改造,使用RAFT保证数据读写的强一致性。

一个完整的NebulaGraph集群包含三类服务,即QueryService、StorageService和MetaService。每类服务都有其各自的可执行二进制文件,既可以部署在同一节点上,也可以部署在不同的节点上。下面是NebulaGraph架构设计(见图3)的几个核心点[16][17]。

NebulaGraph基于C++实现,架构设计支持存储千亿顶点、万亿边,并提供毫秒级别的查询延时。我们在3台48U192G物理机搭建的集群上灌入10亿美食图谱数据对NebulaGraph的功能进行了验证。

为了统一管理图数据,减少工程同学在图数据库集群上的运维压力,我们基于开源分布式图数据库NebulaGraph,搭建了一套一站式图数据库自助管理平台(见图4),该平台包含以下4层:

与业界方案相比,团队主导设计的图数据库平台除了支持存储千亿顶点、万亿边,具备毫秒级别查询能力外,还提供了如下四项能力:应用可用性SLA达99.99%;支持每小时百亿量级数据导入;实时写入数据时保证多集群数据最终一致性;易用的图谱可视化能力。下面将介绍具体的设计思路。

另外,公司要求中间件要有跨区域容灾能力,即要具备在多个地域部署多集群的能力。我们分析了平台接入方的业务需求,大约80%的场景是T+1全量导入数据、线上只读。在这种场景下,对图数据的读写强一致性要求并不高,因此我们设计了单应用多集群这种部署方案。

AP方案部署方式可以参考图5,一个业务方在图数据库平台上创建了1个应用并部署了4个集群,其中北京2个、上海2个,平时这4个集群同时对外提供服务。假如现在北京集群1挂了,那么北京集群2可以提供服务。如果说真那么不巧,北京集群都挂了,或者北京侧对外的网络不可用,那么上海的集群也可以提供服务。在这种部署方式下,平台会尽可能地通过一些方式来保证整个应用的可用性。然后每个集群内部尽量部署同机房的机器,因为图数据库集群内部RPC非常多,如果有跨机房或者跨区域的频繁调用,整个集群对外的性能会比较低。

高可用模块主要包含下面4个部分,如上图6所示:

第一部分是右侧的图数据库Agent,它是部署在图数据库集群的一个进程,用来收集机器和图数据库三个核心模块的信息,并上报到图数据库平台。Agent能够接收图数据库平台的命令并对图数据库进行操作。

第二部分是图数据库平台,它主要是对集群进行管理,并同步图数据库集群的状态到配置中心。

第三部分是图数据库SDK,主要负责管理连接到图数据库集群的连接。如果业务方发送了某个查询请求,SDK会进行集群的路由和负载均衡,选择出一条高质量的连接来发送请求。此外,SDK还会处理图数据库集群中问题机器的自动降级以及恢复,并且支持平滑切换集群的数据版本。

第四部分是配置中心,类似ZooKeeper,存储集群的当前状态。

第二个模块是每小时百亿量级数据导入模块,平台在2019年底-2020年初全量导入数据的方式是调用NebulaGraph对外提供的批量数据导入接口,这种方式的数据写入速率大概是每小时10亿级别,导入百亿数据大概要耗费10个小时,耗时较长。此外,在以几十万每秒的速度导数据的过程中,会长期占用机器的CPU、IO资源,一方面会对机器造成损耗,另一方面数据导入过程中集群对外提供的读性能会变弱。

为了解决上面两个问题,平台进行了如下优化:在Spark集群中直接生成图数据库底层文件SSTFile,再借助RocksDB的Bulkload功能直接ingest文件到图数据库。

为兼顾各个业务方的不同需求,平台统一了应用导入、集群导入、离线导入、在线导入,以及全量导入、增量导入这些场景,然后细分成下面九个阶段,从流程上保证在导数据过程中应用整体的可用性:SSTFile生成、SSTFile下载、ingest、compact、数据校验、增量回溯、数据版本切换、集群重启、数据预热。

第三个模块是实时写入多集群数据同步模块,平台约有15%的需求场景是在实时读取数据时,还要把新产生的业务数据实时写入集群,并且对数据的读写强一致性要求不高。就是说,业务方写到图数据库里的数据,不需要立马能读到。针对上述场景,业务方在使用单应用多集群这种部署方案时,多集群里的数据需要保证最终一致性。针对这一需求,我们做了以下设计。

第一部分是引入Kafka组件,业务方在服务中通过SDK对图数据库进行写操作时,SDK并不直接写图数据库,而是把写操作写到Kafka队列里,之后由该应用下的多个集群异步消费这个Kafka队列。

第二部分是集群在应用级别可配置消费并发度,来控制数据写入集群的速度。具体流程如下:

第三部分是在实时写入数据过程中,平台可以同步生成一个全量数据版本,并做平滑切换(见图9),确保数据的不重、不漏、不延迟。

第四个模块是图可视化模块(见图10),主要是用于解决子图探索问题。当用户在图数据库平台通过可视化组件查看图数据时,能尽量通过恰当的交互设计来避免因为节点过多而引发爆屏。主要包括以下几个功能:

典型的应用场景包括商场找店,比如,某个用户想知道望京新荟城这个商场有没有海底捞,系统可以快速查出结果告诉用户;另一个场景是标签找店,用户想知道望京SOHO附近有没有适合情侣约会的餐厅,或者可以多加几个场景标签,系统都可以帮忙查找出来。

该项目数据来自用户的画像信息、商户的特征信息、用户半年内收藏/购买行为,数据量级是10亿级别,T+1全量更新。现在美团App和点评App上默认的商户推荐列表是由深度学习模型生成的,但模型并不会给出生成这个列表的理由,缺少可解释性。

而在图谱里用户跟商户之间天然存在多条连通路径,项目考虑选出一条合适路径来生成推荐理由,在App界面上展示给用户推荐某家店的原因。该项目基于用户的协同过滤算法来生成推荐理由,在家乡、消费水平、偏好类目、偏好菜系等多个组合维度中找出多条路径,然后给这些路径打分,选出一条分值较高的路径,之后按照特定Pattern产出推荐理由。通过上述方式,就可以获得“在北京喜欢北京菜的山东老乡都说这家店很赞”,或者“广州老乡都中意他家的正宗北京炸酱面”这类理由。

该项目把代码库中代码依赖关系写入到图数据库。代码库中存在很多服务代码,这些服务会包括对外提供的接口,这些接口的实现依赖于该服务中某些类的成员函数,这些类的成员函数又依赖了本类的成员变量、成员函数或者其它类的成员函数,那么它们之间的依赖关系就形成了一张图,可以把这个图写到图数据库里做代码依赖分析。

典型应用场景是精准测试:当开发同学完成需求并向公司的代码仓库提交了PR后,可以把更改实时地写到图数据库中。这样的话,开发同学就能查到他所写的代码影响了哪些外部接口,并且借助图可视化组件查看调用路径。如果开发同学本来是要改接口A的行为,改了很多代码,但是他可能并不知道他改的代码也会影响到对外接口B、C、D,这时候就可以用代码依赖分析来做个Check,增加测试的完备性。

目前,图数据库平台基本具备了对图数据的一站式自助管理功能。如果某个业务方要使用这种图数据库能力,那么业务方可以在平台上自助地创建图数据库集群、创建图的Schema、导入图数据、配置导入数据的执行计划、引入平台提供的SDK对数据进行操作等等。平台侧主要负责各业务方图数据库集群的稳定性。目前,美团有三四十个业务已经在平台上落地,基本满足了各个业务方的需求。

未来规划主要有两个方向,第一,根据业务场景优化图数据库内核,提升平台稳定性,开发的通用Feature持续反哺NebulaGraph社区。第二,挖掘更多的图数据价值。现在平台仅支持图数据存储及多跳查询这种基本能力,后续将基于NebulaGraph去探索图学习、图计算的能力,为平台用户提供更多挖掘图数据价值的功能。

登昌、梁帅、高辰、杨鑫、尊远、王超等,均为美团搜索与NLP部工程师。

THE END
1.架构图宝藏网站画模型框架图的网站文章浏览阅读916次,点赞4次,收藏10次。一个 PlantUML 画图的宝藏网站 UMLCN。时序图,类图,组件图,应有尽有。_画模型框架图的网站https://blog.csdn.net/shengtianbanzi_/article/details/144021245
2.网站设计方案(通用17篇)5、学校安排一名校领导(胡良校长)担任我校网站信息审核员,审核员要经常进行管理,发现不适合发布的信息“取消审核”,并通知网管进行删除。 四、站务管理规定 1、信息教师全面提供学校网站的建设与管理,系统构思、设计网站的架构,配合各部门及时、准确地将学校重大工作(活动)入网,为师生提供校园信息。 https://www.ruiwen.com/shejifangan/7234563.html
3.网站架构规划:使用可视化工具创建直观且高效的网站(网站架构规划促进协作:通过共享strong>draw.io:一款免费且开源的在线流程图和图表编辑器,提供各种形状和模板。 创建网站架构图的步骤 使用可视化工具创建网站架构图涉及以下步骤: 确定网站目标:在开始设计之前,确定网站的目标和目标受众至关重要。 收集内容:汇编所有要包含在网站上的内容,包括文本、图像、视频和下载文件。 https://www.ulidc.com/2024/12/17/%E7%BD%91%E7%AB%99%E6%9E%B6%E6%9E%84%E8%A7%84%E5%88%92%EF%BC%9A%E4%BD%BF%E7%94%A8%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7%E5%88%9B%E5%BB%BA%E7%9B%B4%E8%A7%82%E4%B8%94%E9%AB%98%E6%95%88%E7%9A%84/
4.ProcessOn思维导图流程图在线画思维导图流程图ProcessOn是一款专业在线作图工具和知识分享社区,提供AI生成思维导图流程图。支持思维导图、流程图、组织结构图、网络拓扑图、鱼骨图、UML图等多种图形,同时可实现人与人之间的实时协作和共享,提升团队工作效率。https://www.processon.com/
5.推荐自己做的在线流程图UML架构图绘制网站创新互联另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比http://chengdu.cdxwcx.cn/article/deicpe.html
6.在线制图.xml裕奥在线绘图工具Freedgo提供战略分析-竞争对手分析相关的制图工具,可以创建思维导图,云架构图,软件架构图,UML,BPMN,ER模型,流程图,UX设计图,软件流程图。立即开始免费试用!https://www.freedgo.com/diagramdetail/100/1006/d_0_100_1006_177611919337717762_1_0_0.html
7.组织架构图组织架构图在线制作AI生成组织架构图Canva可画组织架构图制作工具简单易用,在线操作,同时有丰富的组织架构图模板可供选择,更有智能AI工具助你轻松完成组织架构图制作。https://www.canva.cn/graphs/organization-charts/
8.网络营销策划方案15篇网站设计及体验:个性化设计网站,视觉冲击力强,贴合用户浏览习惯,环保,大气的设计,让浏览者感觉清新、舒适,用户体验极佳。 网络推广状况:1、搜索引擎推广:网站技术架构贴合搜索引擎抓取,资料丰富且追求原创,活跃度高,利于优化,上线仅一个月时间,20多个关键词排在百度等5大搜索引擎前3页,客户透过不同关键词很容易找到https://www.yjbys.com/cehuashu/3413128.html
9.GitMind·思乎GitMind(思乎)是一款全平台 在线思维导图脑图架构图制作软件工具,支持手机手机思维导图,Windows/Mac/L多平台操作及内容同步。它提供有海量的架构图,流程图、思维导图模板可供用户直接使用,支持在线制作流程图、思维导图、组织结构图、类图、用例图、ER图、网络拓扑图https://gitmind.cn/
10.前端工程师必备的绘图工具(原型图,思维导图,UML,流程图,架构图产品经理,设计师,前端工程师必备的绘图工具(原型图,思维导图,UML,流程图,架构图) 文章目录 1 传达意图的图 2 原型图工具(Axure,墨刀,摹客) 3 思维导图与UML工具 3.1 专业工具(Visio, Edraw,OmniGraffle,XMind,MindMaster) 3.2 在线工具(drawio,ProcessOn,百度脑图,语雀) 3.3https://www.huoban.com/news/post/8837.html
11.odoo17官方版本发布白皮书,全部功能及重要更新ReleaseNote更全面的网站服务预约 条码操作增加声音提醒,更方便的序列号处理 文档管理增强,如批量上传,拖放操作等 电商增强,如可使用图像作为属性规格,直接显示优惠券 人力资源增强,增加多层级组强架构图 会展管理/门票管理,可实现二维码签到等 前台访客管理,出勤管理 https://www.odooapp.cn/blog/odoo-install-deploy-6/odoo17-official-release-all-functions-and-important-updates-315
12.网站设计架构 风格 信息排布 视觉顺序 8如何突破 1基础定义编辑 简单来说,网站设计的目的就是产生网站。简单的信息如文字,图片(GIFs, JPEGs,PNGs)和表格,都可以通过使超言、可扩展超文本标记语言等标示语言放置到网站页面上。而更复杂的信息如矢量图形、动画、视频、声频等多媒体档案则需要插件程序来运行,同样地它们亦需要https://baike.sogou.com/v297911.htm
13.网站设计前端模板图片免费下载网站设计前端模板素材千图网为您找到2018张网站设计前端模板相关素材,千图网还提供网站设计前端模板图片,网站设计前端模板素材, 网站设计前端模板模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://www.58pic.com/tupian/wangzhanshejiqianduanmoban.html
14.公司网络营销策划方案一、组织架构图 公司总经理 部门经理 程序员 设计师 硬件维护 资深推广 信息发布 信息收集 资深业务 普通业务 二、各部门职责 网络营销部门内设三个分部,即技术部、推广部、业务部。网络营销部门设部门经理一职,下属三个分部,设主管一职。 (1)技术部主要职能 https://www.oh100.com/zhichang/6612953.html
15.超实用!帮你在线创建图表/流程图的Gliffy优设网编者按:今天@不到布给同学们安利一个超实用的在线神器,可以创建流程图、UML图、线框图、BPNM、组织架构图、网站地图等各式图表,还有很多贴心功能,来一一感受下。 之前写醍醐灌奶酪的时候,做了一张很大的图。可以说,当时写文查资料只占那篇文全部精力的一半,剩下一半则是作图 ><。 https://www.uisdc.com/online-diagram-and-flow-chart/
16.组织架构图设计组织架构图设计在线feiry的技术博客组织架构图设计 组织架构图设计在线 公司架构组织结构图 组织结构图是一款跨平台的组织结构图绘制软件,能让企业管理者快速绘制高质量的组织结构图,实现企业的流程运转、部门设置及职能规划。界面与微软Office界面相仿,使用方便;丰富的模板和例子,使得新手无需特意学习便可上手;点击浮动按钮自动绘图、智能的排版布局、一键https://blog.51cto.com/u_14152/7664435
17.高职院校C2C电子商务网站的设计AET摘要:从网站需求入手,提出了C2C电子商务网站设计方案。采用自顶而下的设计方法给出网站的三层架构。以架构为基础,分别对网站界面、网站安全、信息发布、在线交易和系统管理模块进行分析和设计,同时重点对网站的缓存策略和异常处理进行了说明。 关键词:C2C电子商务网站;软件架构; 缓存; 异常处理 http://www.chinaaet.com/article/201705
18.在线组织架构图图怪兽在线组织架构图专题为您精选在线组织架构图模板,包含在线组织架构图的图片素材等可根据您的需求选择,不同图片尺寸进行在线替换文字制作,即可一键生成一张正版可商用模板图片免费下载。https://818ps.com/shejiimg/100331.html
19.设计公司组织架构图设计公司组织架构图 免费 推荐分类 流程图组织架构图模型图思维导图图表图形分析画布示意图UML图路线图时间轴E-R图鱼骨图关系图概念图韦恩图甘特图基础教育高校与高等教育毕业/考证知识科普项目管理IT/软件教育工作互联网公司经营物流人事/行政生活攻略工作计划财务市场分析政府电子商务数据分析新能源金融医疗PPThttps://imiaoban.com/pic/56235.html
20.架构LOGO设计免费生成器架构LOGO免费设计在线生成标智客架构LOGO在线设计软件为企业在线生成架构LOGO图片,提供架构品牌标志生成模板、架构标志图片素材下载,是LOGO免费在线生成平台!https://www.logomaker.com.cn/logo/tag/9033/
21.项目介绍·JeecgBoot开发文档·看云捐赠 如果觉得还不错,请作者喝杯咖啡吧 ? 系统架构图 系统截图 PC端 在线接口文档 报表 流程 手机端 PAD端 欢迎吐槽,欢迎star~下一篇:新手入门教程https://doc.jeecg.com/2043868
22.draw.io在线绘图工具怎么用?draw.io超详细的小白入门教程draw.io是一个强大简洁的在线的绘图网站,支持流程图,UML图,架构图,原型图等图标,下面我们就来看看draw.io超详细的小白入门教程 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用! 【如果你想靠AI翻身,你先需要一个靠谱的工具!】 这篇文章重点介绍在线绘图工具draw.io的使用方法。 https://www.jb51.net/softjc/906693_all.html
23.领君科技系统可实现省、市、县级一张图数据资源与日常管理应用相结合的管理模式,提供可供推广的数据编码标准、软件规范和实现技术,全程服务于土地批、供、用、补、查的各个环节,最终实现便捷、规范的土地综合电子监管,和科学的、准确的数据分析决策支持。 技术架构设计http://www.linjon.cn/Gtyzt.html
24.10款火爆的在线画图工具分享,无需下载免费用这里搜集了 10 款火爆的在线画图工具,无需下载就可以使用,分别是即时设计、Sketchpad、Draw.io、Xara Designer Pro+、Aggie、Pixilart、Lucidchart、Pixlr Editor、Infogram、Inkspace。希望这些工具对你有所帮助,快来看一下吧~https://js.design/special/article/online-drawing-tool-free.html
25.应用架构深度从一个故事说起,谈谈企业应用架构的演变史三、企业通用应用架构设计 1、通用企业应用架构图 对上文的应用架构图做一些简化和调整,以便更加准确的体现应用架构的共性以及与业务的对应关系,得到一张更加清晰简洁的企业级应用架构图。 第一层是对外系统。所有给企业外部客户使用的系统都在这一层,包括官网,普通用户或客户使用的C端。如果是类似于美团,天猫这种平https://info.ustb.edu.cn/ITxy/zjlt/667ca3e1fa364f1d802210cf31d95cff.htm
26.ioDraw免费在线制作流程图,思维导图,甘特图,海报免费AI在线画图软件,用于制作流程图,思维导图,甘特图,海报,拓扑图,组织结构图,UML,ER和时序图,电子电路图等,无需注册即可使用https://www.iodraw.com/